按指定格式录入数据,例:0373,张乐晓,3.90。编号宽度固定为4位,姓名宽度固定为3个汉字,不足部分以全角空格补齐,第9个字符开始为跳远成绩。
在文本框按回车表示录入一项数据结束,录入的数据经处理后编号、姓名、成绩分别存放在数组编号bh、xm、cj中并将原始数据显示在List1中。
点击命令按钮Command1后进行排序并将排序后的结果显示在List2中。
程序运行界面如图所示。
Dim bh(1 To 8) As String
Dim xm(1 To 8) As String
Dim cj(1 To 8) As Single
Dim num As Integer
Private Sub Command1_Click()
Dim i As Integer, j As Integer, k As Integer, tmp_1 As String, tmp_2 As Single
For i = 1 To 7
k = i
For j = k + 1 To 8
If Then k = j
Next j
If k <> i Then
tmp_1 = bh(k): bh(k) = bh(i): bh(i) = tmp_1
tmp_1 = xm(k): xm(k) = xm(i): xm(i) = tmp_1
tmp_2 = cj(k): cj(k) = cj(i): cj(i) = tmp_2
End If
Next i
For i = 1 To 8
List2.AddItem bh(i) & xm(i) & Str(cj(i))
Next i
End Sub
Private Sub Form_Load()
num = 0
End Sub
Private Sub sr_txt_Keypress(KeyAscii As Integer)
Dim srsj As String '输入数据
If KeyAscii = 13 Then
num = num + 1
srsj = sr_txt.Text
bh(num) = Mid(srsj, 1, 4)
xm(num) = Mid(srsj, 6, 3)
cj(num) =
List1.AddItem srsj
If num = 8 Then num = 0
End If
End Sub
原始数据 | 24 | 27 | 16 | 15 | 24 | 18 |
第一遍 | 27 | 24 | 16 | 15 | 242 | 18 |
第二遍 | ||||||
第三遍 | 27 | 24 | 24 | 15 | 16 | 18 |
第四遍 | 27 | 24 | 24 | 18 | 16 | 15 |
第五遍 | 27 | 24 | 24 | 18 | 16 | 15 |
用VB软件设计的自摘收费程序,功能如下:在文本框Textl中输入自摘的人数n,在文本框Text2中输入摘得桔子重量w。界面右上方是小游戏部分,程序在文本框Text3显示随机产生的桔子层数m,根据图中所示的堆桔子方法(第1层1个;第2层4个;第3层9个……),请顾客计算出m层桔子总数s,输入到文本框Text4中,单击“是否优惠计算”按钮Command1,就会在标签Label4中输出最后的费用f,并在标签Label7中给出提示是否“优惠后的费用”。运行效果如图所示:
Dim m As Integer
Private Sub Command1_Click()
Dim n As Integer, s As Integer
Dim w As Single, f As Single
n = Val(Text1.Text) '输入大人人数n
w = Val(Text2.Text) '输入重量w
f = 20 * n + 10 * w '计算无优惠的费用f
s = 0
For i = 1 To m '计算桔子总数
s = s + i * i
Next i
If s= Then '判断是否拿到优惠计算费用
f = f * 0.5 + s * 0.3'计算优惠后的费用
Label7.Caption = "恭喜你,这是优惠后的费用!"
Else
Label7.Caption = "很遗憾,你没有算对哦!"
End If
Label4.Caption = Str(f) '输出最后的费用f
End Sub
Private Sub Form_Load()
Randomize
m = '随机产生15层及以内的桔子层数不含0
Text3.Text = Str(m)
End Sub
排序前 |
78 |
30 |
64 |
39 |
49 |
4 |
8 |
32 |
18 |
32 |
排序后 |
39 |
49 |
83 |
4 |
8 |
18 |
30 |
32 |
64 |
78 |
实现上述功能的VB程序如下,但加框处代码有误,请改正。
Const n = 10
Dim d(1 To n) As Integer
Private Sub Command1_Click()
Dim i As Integer, j As Integer, t As Integer
'读取一组正整数,存储在数组d中,代码略
i = 1
Do While i <= n - 1
For j = n To i + 1 Step -1
If d(j) Mod 2 = d(j - 1) Mod 2 Then
If Then '(1)
t = d(j): d(j) = d(j - 1): d(j - 1) = t
End If
'(2)
t = d(j): d(j) = d(j - 1): d(j - 1) = t
End If
Next j
i=i+1
Loop
'依次输出排序后的数据,代码略
End Sub
⑴ ⑵
Private Sub Command1_Click()
Dim i As Integer, x As Integer, c As Integer
c = 0
For i = 1000 To 9999
x =
If And x = 7 Then
'将符合条件的四位数显示在列表框中
num = num + 1
End If
Next i
Label2.Caption = "共有:"+ +"个"
End Sub
s=″72186345945″:c=0
For i=1 To 6
a(i)=Mid(s,i,i)
Next i
For i=1 To 4 Step 2
k=i
For j=i+2 To 6 Step 2
If a(j)<a(k) Then k=j
Next j
If k<>i Then
t=a(i):a(i)=a(k):a(k)=t:c=c+1
End If
Next i
Text1.Text=Str(c)
该程序段运行后,Text1中显示的内容是( )
k = Val(Text1.Text)
i = 1: j = 6: Label1.Caption = ″ ″: f = False
Do While i <= j And Not f
m = (i + j) \ 2
If a(m) = k Then f = True
If a(m) > a(i) Then
If a(i) <= k And k < a(m) Then j = m - 1 Else i = i + 1
Else
If a(m) < k And k <= a(j) Then i = i + 1 Else j = j - 1
End If
Label1.Caption = Label1.Caption + Str(a(m))
Loop
数组元素a(1)到a(6)的值依次为“58,66,72,24,35,40”,在文本框Text1中输入的值为35,执行该程序段,标签Label1中显示的值是( )
Dim a(10 to 20) as integer
则此数组中元素的个数为。
实现上述功能的VB代码如下:
Dim a(1 To 100) As Integer Private Sub Command1_Click()
Dim i As Integer, s As Integer, smax As Integer ‘用于随机生成数据,并将阵列按规则在列表框中输出,该部分功能的代码略。
smax = 0
For i = 1 To 100
If a(i) = 0 Then s = search(i) If s > smax Then smax = s
Next i
Label1.Caption = "最大面积的矩形,占" + Str(smax) + "个单位。" End Sub
Function search(i As Integer) As Integer
Dim x As Integer, x1 As Integer, xend As Integer Dim y As Integer, y1 As Integer
Dim s As Integer
x = (i - 1) Mod 10 + 1 '起始列号 y = (i - 1) \ 10 + 1 '起始行号 x1 = x
y1 = y xend = 10
search = 0
Do While y1 <= 10
If a((y1 - 1) * 10 + x) = 1 Then Exit Do '判断 x1 = x
Do While x1 <= xend
If a((y1 - 1) * 10 + x1) = 1 Then
x1 = x1 – 1 '改错
Else
x1 = x1 + 1
End If Loop
y1 = y1 + 1
s = (x1 - x) * ( ) '填空 If s > search Then search = s
Loop
End Function
请回答下列问题:
寻求路径最大值的算法设计如下:
按三角形的行划分,若有n行,则有n-1个步骤
①从底层开始,本身数即为最大值
②倒数第二层的计算取决于底层的数据:
12+6=18,13+14=27,24+15=39,24+8=32;
③倒数第三层的计算取决于底二层的数据:
27+12=39,39+7=46,39+26=65;
④倒数第四层的计算取决于底三层的数据:
46+11=57,65+8=73;
④最后的路径:13—8—26—15—24其和为86。
根据上述算法描述,设计程序界面如下图所示,点击“生成金字塔”按钮,在列表框中生成数字金字塔,点击“寻求路径最大值”按钮,在文本框text1中输出最大值。
依据上述描述设计如下VB程序:
Const n = 5
Dim sx As String
Dim i, j, k, a(1 To 100) As Integer Private Sub Command1_Click() List1.Clear
For i = 1 To n For j = 1 To i
①
sx = sx + Str(a((i - 1) * n + j)) Next j
For k = n To i Step -1 sx = " " + sx
Next k List1.AddItem sx sx = ""
Next i End Sub
Private Sub Command2_Click() For i = n To 1 Step -1
For j = 2 To i
If ② Then
a((i - 2) * n + j - 1) = a((i - 1) * n + j - 1) + a((i - 2) * n + j - 1)
Else
a((i - 2) * n + j - 1) = a((i - 1) * n + j) + a((i - 2) * n + j - 1)
End If Next j
Next i
③
End Sub
请回答下列问题:
① ② ③
李同学设计了一个用来求两座岛屿之间相连所需桥的数量的VB程序,点击“生成矩阵”按钮Command1,随机产生一个关系矩阵,并在列表框List1中显示。在文本框Text1和Text2中输入岛屿的编号(1~9),点击“求解”按钮Command2,在Labell中输出两座岛屿之间相连所需桥的数量。VB程序运行界面如图所示。
对无桥相连的两座岛屿p1,p2之间相连的算法思想如下:
①p1岛屿所在行开始,将与其相连的岛屿依次添加到数组b中。
②若数组b中未出现岛屿p2,则依次查找与其相连岛屿的所在行,将新出现的相连的岛屿添加到数组b中。
③在查找过程中同时记录查找步数。
数组b内全部搜索完毕,若p2还是未出现,则两座岛屿之间无法相连,反之输出桥的数量。请回答以下问题:
Const n = 9 ‘岛屿的数量
Dim a(1 To n * n) As Integer
Private Sub Command1_Click()
Dim s As String List1.Clear
For i = 1 To n
For j = i To n
If j = i Then
a((i - 1) * n + j) = 0 ‘对角线为0
Else
a((i - 1) * n + j) = Int(Rnd * 2)
① ‘矩阵对称
End If
Next j Next i
For i = 1 To n
s = ""
For j = 1 To n
s = s + Str(a((i - 1) * n + j))
Next j
List1.AddItem s Next i
End Sub
Private Sub Command2_Click()
Dim b(1 To n) As Integer
Dim qiao(1 To n) As Integer ‘记录相连岛屿之间桥的数量
Dim find(1 To n) As Boolean ‘记录某岛屿是否被添加到数组b中
Dim p1 As Integer, p2 As Integer, cur As Integer, k As Integer, q As Integer
p1 = Val(Text1.Text)
p2 = Val(Text2.Text)
cur = p1: k = 1: q = 0
find(cur) = True
Do While find(p2) = False
For i = 1 To n
If a((cur - 1) * n + i) = 1 And find(i) = False Then
b(k) = i: k = k + 1
find(i) = True
②
End If
Next i
q = q + 1
If q = k Then Exit Do Else ③
Loop
If find(p2) = True Then
Label1.Caption = "需要经过" + Str(qiao(p2)) + "座桥"
Else
Label1.Caption = "无桥相连"
End If
End Sub
① ② ③
Dim d(1 to 5) As Integer, i As Integer
For i= 1 To 8
a(i) =Int(Rnd*10) + 1
Next i
For i=1 To 5 Step 2
k=i
For j=i+2 To 7 Step 2
If a(j) <a(k) Or a(j) =a(k) And a(j+1) <a(k+1)
Next j
Then k=j
If i<>k Then
t=a(i):a(i)=a(k):a(k)=t
t=a(i+1):a(i+1)=a(k+1):a(k+1)=t
EndIf
Next i
运行该程序段后,数组a各元素的值可能为( )
Dim a(1 To 10)As Integer
Private Sub Form_Load()
a(1)=2: a(2)=3: a(3)=3: a(4)=3: a(5)=3
a(6)=6: a(7)=7: a(8)=7: a(9)=8: a(10)=9
End Sub
Private Sub Command1_Click()
Dim key As Integer, i As Integer, j As Integer
Dim m As Integer, p As Integer
key=Val(Text1.Text)
i=1: j=10
Do While i<=j
m=(i+j)\2
If a(m)= key Then
p=m
j=m-1
ElseIf key<a(m)Then
j=m-1
Else
i=m+1
End If
Loop
Text2.Text=Str(p)
End Sub
程序运行时,在文本框 Text1中输入3,单击按钮,文本框Text2中显示的内容是( )
每位选手的成绩数据记录规则如下:成绩数据以“;”(分号)结尾,中间用“/”(斜杠)分隔,例如:“王一超/4.10/-/3.78;李雨歆/3.87/3.85/4.20;”,表示第一位选手王一超,第一次成绩4.10米,第二次成绩无效(用“-”表示),第三次成绩3.78米,最好成绩为4.10米。第二位选手李雨歆,3次成绩分别是3.87米、3.85和4.20米,最好成绩为4.20米。
小强编写VB程序实现上述功能:程序运行时,读取所有选手数据保存在变量cj中,并显示在列表框List1中。在文本框Text1中输入进入第二轮的名次,单击“第二轮复赛名单”按钮 Command1,对数据进行统计分析,并在列表框 List2 中显示进入复赛的选手名单和最好成绩,程序运行界面如图所示,请回答下列问题。
Private Sub Command1_Click()
Dim cj As String, xm(1 To 20) As String, maxcj(0 To 20) As Single
Dim s As String, c As String, t As Single, z As Integer
Dim i As Integer, j As Integer, n As Integer, k As Integer, m As Integer
'读取所有选手数据保存在变量cj中,并显示在列表框 List1中,代码略
n = Len(cj)
i = 1 : m = 1 : z = 1
Do While i <= n
c = Mid(cj, i, 1)
j = i
Do While ‘⑶
i = i + 1
c = Mid(cj, i, 1)
Loop
If z = 1 Then
Else
t = Val(Mid(cj, j, i - j))
If t > maxcj(m) Then maxcj(m) = t
End If
z = z + 1 : i = i + 1
If c = ";" Then m = m + 1: z = 1
Loop
m = m - 1
k = Val(Text1.Text)
For i = 1 To m - 1
For j =
If maxcj(j) > maxcj(j - 1) Then
c = xm(j): xm(j) = xm(j - 1): xm(j - 1) = c
t = maxcj(j): maxcj(j) = maxcj(j - 1): maxcj(j - 1) = t
End If
Next j
If Then
List2.AddItem xm(i) + Str(maxcj(i))
Else
Exit For
End If
Next i
End Sub
原1-7号男生身高 |
171 172 180 174 176 179 178 |
筛选排序后序列 |
171 172 174 176 178 179 180 |
“造型设计”后序列 |
180 178 174 171 172 176 179 |
图1
身高顺序:男3号〉男6号〉男7号〉男5号〉男4号〉男2号〉男1号
图2
Dim h (1 To n) As Integer
Dim height1(1 To n) As Integer
Dim height2(1 To n) As Integer
Dim n As Integer, i As Integer, j As Integer, num As Integer, tmp As Integer
Dim sex(1 To n) As String
Private Sub Form_Load()
'n名学生的身高和性别由数据库导出,分别存储在数组h和sex中,代码略!
End Sub
Private Sub Command1_Click()
b = 0
For i = 1 To n 'n名学生中的男生
If sex(i) = “男” Then ① : height1(num) = h(i)
Next i
For i = 1 To num – 1
For j = num To i + 1 Step -1
If height1(j) < height1(j - 1) Then
tmp = height1(j): height1(j) = height1(j - 1): height1(j - 1) = tmp
End If
Next j
Next i
For i = 1 To num
Text1.Text = Text1.Text + " " + Str(height1(i))
Next i
End Sub
Private Sub Command2_Click()
Dim left, right As Integer, i As Integer, mid As Integer
mid = Int((1 + num) / 2)
left = 0: right = 0
height2(mid) = height1(1)
For i = 1 To (num - 1) \ 2
right = right + 1
height2(mid + right) = height1(2*i)
left = left + 1
②
Next i
If num Mod 2 = 0 Then ③
For i = 1 To num
Text2.Text = Text2.Text + " " + Str(height2(i))
Next i
End Sub
①②③
问题:输入一个正整数n,判断n是否为素数。要判断n是否为素数,最简单的方法是:统计2到n-1之间能整除n的整数个数s,若s大于0,则n不是素数,否则就是素数。根据以上方法,完善以下程序代码。
Dim n, s As Integer
n = Val(InputBox(“n=”))
s=0
For i=2 to
If n Mod i = 0 then
s= ‘统计因数个数
End If
Next i
IfThen
Print n &“是素数”
Else
Print n &“不是素数”
End If