Private Sub Command1_Click()
Dim a As Integer, b As Integer
Dim i As Integer, n As Integer
Dim c1 As String, s1 As String
Dim c2 As String, s2 As String
Dim c3 As String, s3 As String
List1.Clear
s1 = "甲乙丙丁戊己庚辛壬癸"
s2 = "子丑寅卯辰巳午未申酉戌亥"
s3 = "鼠牛虎兔龙蛇马羊猴鸡狗猪"
n = Val(Text1.Text)
For i = n To
a = (i + 6) Mod 10
b = (i + 8) Mod 12
c1 = Mid(s1, a + 1, 1)
c2 = Mid(s2, b + 1, 1)
c3 = Mid(s3, b + 1, 1)
List1.AddItem + "年" + c1 + c2 + " " + c3
Next i
End Sub
校园卡信息存储在一个综合的数据库“school.mdb”,其中的“Yue”数据表用来存储学生的校园卡基本信息,包括学号(num)、姓名(name)、余额(money),括号内的为对应字段名。下列VB程序用来实现根据学号查询并显示学生姓名及余额,运行界面如图所示:
数据库文件与应用程序在同一文件夹中,在文本框Text1中输入学生的学号,单击“查询”按钮,在标签Label4、Label5中分别显示学生姓名和余额。
Private Sub Command1_Click()
Dim adocn As new connection
Dim adors As new recordeset
Dim str1 As string,str2 as string
Str1=”driver=microsoft access driver(*.mdb);dbq=”&app.path&”\ ① .mdb”
Adon.open str1
Str2=”select * from Yue where ② =’”+text1.text+”’”
Adors.open str2,adocn,adOpenDynamic,adLockOptimistic
If adors.eof then
Msgbox”你输入的学号不存在!”
Else
Label4. caption =adors.Fields(“name”).value
③ =adors.Fields(“money”).value
Endif
Adors.close
Adocn.close
End Sub
为了实现上述目标,在画线处填入合适的语句或表达式:
①
②
③
实现上述功能的 VB 程序如下,但加框处代码有错,请改正。
Const n = 10
Dim a(1 To n) As Integer
Private Sub Command1_Click()
Dim i As Integer, j As Integer
Dim temp As Integer, flag As Boolean
'读取一组正整数,存储在数组a中,代码略
i = 1: j = n
temp = a(j): flag = True
Do While i < j
If flag Then
If a(i) Mod 2 = 0 Then
a(j) = a(i)
j=j-1
flag=Not flag
Else
'⑴
End If
Else
If a(j) Mod 2 = 1 Then
a(i)=a(j)
flag=Not flag
Else
j=j-1
End If
End If
Loop
'⑵
'依次输出排序后的数据,代码略。
End Sub
⑴ ⑵
i = 1: j = 6: n = 0: f = False
Key = Val(Text1.Text)
Do While i <= j And Not f
n = n + 1
m = (i+j + 1) \ 2
If Key = a(m) Then f = True
If Key < a(m) Then j = m - 1 Else i = m + 1
Loop
数组元素a(1)到a(6)的值依次为“12,19,27,37,49,55”。若在文本框Text1中输入27,则以上程序段执行后,下列说法不正确的是( )
num = 0
For i = 1 To 3
For j = 8 To i + 1 Step -1
If a(j) < = a(i) Then
temp = a(j): a(j) = a(i): a(i) = temp
num = num +1
End If
Next j
Next i
数组元素a(1)到a(8)的值依次为“25,44,16,34,57,25,34,60”,执行该程序段,变量num的值是( )
n = 0 : i = 1 : j = 8
Key = Val(Text1.Text)
Do While i <= j
m = (i + j) \ 2
If Key = d(m) Then Exit Do 'Exit Do表示退出循环
If Key > d(m) Then
j = m - 1 : n = n - 1
Else
i = m + 1 : n = n + 1
End If
Loop
Label1.Caption = Str(n)
当输入不同的Key值,运行该程序段后,在标签Label1中显示的不同结果共有( )
实现上述功能的VB程序如下,代码加框处有错,请改正。
Dim a(1 to 10) As Integer ‘存储原始数据
Dim b(1 to 10)As Integer ‘存放名次
Private Sub Command1_Click()
Dim i As Integer, j As Integer, n As Integer
For i=1 To 10
n=0
For j=1 To 10
If
Then n=n+1 ‘①
‘②
Next j
Next i
For i= 1 to 10
List2.Additem a(i)&” ”&b(i)
Next i
End Sub
Private Sub Form_Load()
‘随机产生10个[60,100]之间的随机数,并显示在List1中,代码略。
End Sub
①处代码应改为:
②处代码应改为:
Function f(i As Integer)
If i=1 Then
f=2
Else
f=2 * 10 ^ (i-1)+f(i-1)
End If
End Function
Private Sub Command1_Click()
Dim n As Integer, s As Integer, i As Integer
n=Val(Text1.Text)
s=0
For i=1 To n
s=s+f(i)
Next i
Label1.Caption=Str(s)
End Sub
若在Text1中输入5,则Label1显示的内容为( )
Private Sub Command1_Click()
Dim a(1 To 20) As String
Dim ys As String, xs As String ‘s记录最大的新数
Dim k As Integer, h As Integer, n As Integer
Dim i As Integer, j As Integer
Dim F As Boolean
xs =“”
ys = Text1.Text
n = Len(ys)
k = Val( Text2.Text)
F = True
If ys =“”Or n > 20 Or k = 0 Or k > n Then
Label4.Caption = “输入的原数或保留位数不符,请重输!”
F = False
End If
For i = 1 To n
If a(i) < “0” Or a(i) > “9” Then
Label4.Caption =“输入的原数不是数字,请重输!”
Text1.Text = “”
F = False
End If
Next i
If F = True Then
h = 1
For i = 1 To n-k
For j = h To
If a(j) > a(h) Then h = j
Next j
h = h + 1
Next i
Text3.Text = xs
End If
End Sub
i = 1: j = 8: s = ""
key =Text1.Text
Do While i <= j
m =(i + j) \ 2
If key = a(m) Then
s = s + "M"
Exit Do
ElseIf key > a(m) Then
j = m - 1: s = s + "L"
Else
i = m + 1: s = s + "R"
End If
Loop
Text1.Text = s
数组元素a(1)到a(8)的值依次为“4,22,27,32,35,44,56,59”,该程序段执行后,文本框Text1中显示的内容不可能是( )
图a排序前数组a存储结构
小迪同学使用选择排序思想对上述n个同学按成绩进行降序排序(成绩相同的按学号升序排列),并依据成绩插入各位同学的名次信息,处理结束的数组a结构如图b所示:
图b排序后数组a存储结构
小迪同学使用VB编写了成绩处理程序,程序运行界面如图c所示:
图 c
实现上述功能的VB程序如下,请回答下列问题。
Const n = 20
Dim a(1 To 3 * n)As Integer
Private Sub Command1_Click()
'读取数据,存储在数组a中,并显示在列表框List1中
'代码略
End Sub
Private Sub Command 2_Click()
‘①改错
k = i
For j= 1 Toi-1
If a(2 * j)<a(2 * k)Or ② Then
k = j
End If
Next j
a(3 * i)= a(2 * k)
a(3 * i-1)= a(2 * k-1)
③
a(2 * k- 1)= a(2 * i- 1)
Next i
Lisi2.Addltem"第1名:学号"+ CStr(a(2))+",分数"+Str(a(3))
a(1)=1
mc=1
For i=2 To n
If ④ Then mc = i
List2.Addltem"第"+Str(me)+"名:学号"+CStr(a(3 * i-1))+",分数"+Str(a(3 *
i))
a(3 * i-2)= mc
Next i
End Sub
②③④
如10名运动员1号到10号的成绩分别是“13,6,9,8,10,11,10,14,16,13”,从高到低排序后,第一组的成绩依次是“16,13,10,10,9”,第二组的成绩依次是“14,13,11,8,6”。第1位的成绩分别是16和14,则第一组获胜得1分,第二组扣1分,再比较两个分组第2位的成绩13和13,则两组均不得分。依次处理,比较完剩余队员的成绩,可得第一组得分为2,第二组得分为-2。
编写一个VB程序,实现如下功能:在文本框Text1中依次输入成绩(偶数个整数,用逗号分隔并以逗号结尾),单击“确定”按钮Command1后,在列表框List1中显示对阵编号、对阵成绩及两个分组的最后得分。程序运行界面如图所示。
Private Sub Command1_Click()
Dim i As Integer, j As Integer, k As Integer
Dim s As String, ch As String, sum1 As Integer, sum2 As Integer
Dim bh (1 To 50) As Integer, cj(1 To 50) As Integer
s= Text1.Text
j= 1: k=0
For i= 1 To ①
ch = Mid(s, i, 1)
If Not (ch>= "0" And ch <= "9") Then
k=k+1
bh(k)=k
cj(k) = Val(Mid(s, j, i-j))
②
End If
Next i
For i= 1 To k-2 Step 2
For j= k To ③ Step -1
If cj(j)> cj(j-2) Then
t= cj(j): cj(j)=cj(j-2): cj(j-2)=t
t= bh(j): bh(j)= bh(j-2): bh(j-2)=t
End If
Next j
Next i
sum1 = 0: sum2= 0
List1 .AddItem "对阵编号 对阵成绩"
For i=1 To k- 1 Step 2
If cj(i)> cj(i+1) Then
sum1 = sum1 + 1: sum2 = sum2- 1
sum1=sum1-1: sum2=sum2+1
End If
List1.AddItem adj(bh(i)) + "<-->" + adj(bh(i+1)) + adj(cj(i)) + "<-->" + adj(cj(i+1)
Next i
List1.AddItem"第一组得分: "+ adj(sum1)
List1.AddItem"第二组得分: " + adj(sum2)
End Sub
Function adj(x As Integer) As String
‘函数功能:将数值x转换成字符串,并在字符串的左侧添加若干空格。代码略
End Function
① ② ③
i=1:j=6:c=1
key=int(rnd*100+1)
do while i<=j
m=(i+j)\2
c=c+1
if key<d(m) then j=m-1 else i=m+1
loop
数组 d(1)~d(6)的值分别为“17,21,29,32,39,75”,则程序运行结束后,下列说法错误的是( )
Dim a(1 To 10) As Integer
Dim s As String, n, i As Integer
s = "54851845236": n = Len(s)
For i = 1 To n - 1
a(i) = Val(Mid(s, i, 2))
Next i
For i = 1 To n - 2
k = i
For j = i + 1 To n - 1
If a(k) < a(j) Then k = j
Next j
If k <> i Then
t = a(k): a(k) = a(i): a(i) = t
End If
Next i
Text1.Text = Str(a(1))
该程序段运行后,文本框 Text1 中显示的内容是:( )
i=1:j=8 :key=20
Do While i<=j
m=(i+j)\2
t=b (m)
If a(t)=key Then p=t:Exit Do
If key>a(t)Then j=m-1 Else i=m+1
Loop
数组元素a(1)~a(8)的值分别为“30,9,8,15,20,6,29,11”,程序运行结束后变量m的值为( )