常见VB考试题型资料讲解
常见V B考试题型
1输入半径,求圆面积和球体积。
Private Sub Form_Load()
Dim r As Single, s As Single, v As Single
r = InputBox("请输入半径r:", "输入数据")
s = 3.14 * r ^ 2
v = 4 / 3 * r ^ 3 * 3.14
'Print "圆面积为:"; s
'Print "球体积为:"; v
MsgBox ("圆面积为:" & s & Space(2) & "球体积为:" & v)
End Sub
2输入两个数存放在x和y中,比较大小,保证大数放在x中,小的数放在Y 中。
Private Sub Command1_Click()
Print "比较前:"
X = InputBox("请输入X")
Y = InputBox("请输入Y")
Print "X="; X, "Y="; Y
If X < Y Then
Z = Y
Y = X
X = Z
End If
Print "比较后:"
Print "X="; X, "Y="; Y
End Sub
3 判断一个整数的奇偶性
Private Sub Form_Click()
x = Val(InputBox("请输入一个数;"))
If x Mod 2 = 0 Then
MsgBox (x & " 是偶数")
Else
MsgBox (x & " 是奇数")
End If
End Sub
4 帐号和密码
Private Sub Command1_Click()
If Text1.Text = "12345" Then
If Text2.Text = "12345" Then
MsgBox "登录成功", 64 + 1, "登录"
Else
MsgBox "密码错误,请重新输入", 16
End If
Else
MsgBox "用户不存在", 16 + 1, "登录"
End If
End Sub
5 判断一个数是整数还是小数,如果是整数再判断其奇偶性。
Private Sub Form_Click()
x = InputBox("请输入一个数;")
If InStr(1, x, ".") = 0 Then
If x Mod 2 = 0 Then
MsgBox (x & " 是整数,是偶数!")
Else
MsgBox (x & " 是整数,是奇数!")
End If
Else
MsgBox (x & " 是小数")
End If
End Sub
6 书店优惠售书
Private Sub Command1_Click()
Dim x As Single, y As Single
x = Val(Text1.Text)
Select Case x
Case Is <= 100
y = x * 0.8
Case Is <= 200
y = x * 0.7
Case Is <= 300
y = x * 0.5
Case Else
y = x * 0.3
End Select
Label3.Caption = y & "元"
End Sub
7 设计一个计程车收费程序
Private Sub Command1_Click()
X = Val(Text1.Text)
Select Case X
Case Is <= 3
Label3.Caption = 6
Case Is <= 30
Label3.Caption = 6 + (X - 3) * 1.5
Case Else
Label3.Caption = 6 + 27 * 1.5 + (X - 30) * 2 End Select
End Sub
8 输入10个数,输出累加之和。
Private Sub Command1_Click()
Dim S As Single, i As Integer, x As Single
S = 0
For i = 1 To 10
x = Val(InputBox("请输入第" & i & "个数")) Print "第" & i & "个数" & x
S = S + x
Next i
Print "十个数累加之和为" & S
End Sub
9 输入10个数,输出偶数之和。
Private Sub Command1_Click()
Dim S As Single, x As Single
Dim n As Integer, i As Integer
S = 0
For i = 1 To 10
x = Val(InputBox("请输入第" & i & "个数")) Print "第" & i & "个数" & x
If x Mod 2 = 0 Then
S = S + Val(x)
End If
Next i
Print "十个数中偶数累加之和为" & S
End Sub
10 求S=1+2+3+……+100
Private Sub Command1_Click()
Dim I As Integer, S As Long
S = 0
For I = 1 To 100
S = S + I
Next I
Print Tab(10); "S="; S
End Sub
11 9
s = 0
For i = 1 To 100 Step 2
s = s + i
Next i
Print "s="; s
End Sub
12S=1+22+32+……+102,计算并输出s
Private Sub Command1_Click()
s = 0
For i = 1 To 10
s = s + i ^ 2
Next i
Picture1.Print "s="; s
End Sub
13 S=1+22+32+……+n2,问n为多少时,s的值大于100000?Private Sub Command1_Click()
s = 0
n = 0
Do While s <= 100000
n = n + 1
s = s + n ^ 2
Loop
Print Tab(15); "n="; n
End Sub
141)S=1/2+1/4+1/6+1/8+1/10+…+1/20,求s并输出s的值。
Dim s As Single, i As Integer
s = 0
For i = 2 To 20 Step 2
s = s + 1 / i
Next i
Print "s="; s
End Sub
15 s=1×2×3×……×10
求n !,n 为[1~10]之间的随机整数。
Private Sub Command1_Click()
Dim s As Long, i As Integer
s = 1
For i = 1 To 10
s = s * i
Next i
Print "10!="; s
End Sub
16 已知一数列的前两项均为1,从第3项开始,每一项的值为其前面两项之和,求数列的前20项的和。
Private Sub Command1_Click()
Dim s As Integer, f1 As Integer
Dim f2 As Integer, f3 As Integer
s = 0
f1 = 1
f2 = 1
s = f1 + f2
For i = 3 To 20
f3 = f1 + f2
s = s + f3
f1 = f2
f2 = f3
Next i
Print "s="; s
End Sub
17 项和。求其前208532??++++=S
Dim s As Single, f1 As Integer, f2 As Integer
Dim f3 As Integer, i As Integer
s = 0
f1 = 1
f2 = 2
For i = 1 To 20
s = s + f2 / f1
f3 = f2
f2 = f1 + f2
f1 = f3
Next i
Print "s="; s
End Sub
18 S=1!+2!+3!+ (10)
Private Sub Command1_Click()
Dim s As Long, s1 As Long, i As Integer, j As Integer s = 0
For i = 1 To 10
s1 = 1
For j = 1 To i
s1 = s1 * j
Next
s = s + s1
Next i
Print "s="; s
End Sub
考虑另一种算法
见其他打印部分
19 s=1+(1+2)+(1+2+3)+...+(1+2+ (10)
Private Sub Command1_Click()
Dim s As Integer, s1 As Integer
Dim i As Integer, j As Integer
s = 0
For i = 1 To 10
s1 = 0
For j = 1 To i
s1 = s1 + j
Next j
s = s + s1
Next i
Print "s="; s
End Sub
20 s=1-1/3!+1/5!-1/7!+…直到某一项的绝对值小于10^(-5) Private Sub Command1_Click()
Dim S As Single, S1 As Single
Dim i As Integer, F As Integer, J As Integer
S = 0
S1 = 1
i = 1
F = 1 '正负符号标志
Do While 1 / S1 > 10 ^ (-5)
S1 = 1
J = 1
Do While J <= i
S1 = S1 * J
J = J + 1
Loop
S = S + 1 / S1 * F
i = i + 2
F = -F '换符号
Loop
Print "S="; S - 1 / S1, "I="; i
'S = 0
'x = 1
'n = 1
'Do While 1 / x >= 10 ^ (-5)
'S = S + (1 / x) * (-1) ^ (n + 1)
'x = x * (n * 2) * (2 * n + 1)
'n = n + 1
'Loop
'Print "S="; S
End Sub
21 s=2+22+222+2222+22222+222222
Private Sub Command1_Click()
Dim s As Long, s1 As Long, i As Integer, j As Integer
s = 0
For i = 1 To 6
s1 = 0
For j = 1 To i
s1 = s1 + 2 * 10 ^ (j - 1)
Next
s = s + s1
Next
Print "s="; s
End Sub
22 S=a+aa+aaa+……+aaaa(N个a)其中a是一个[1,9]的随机整数,N是一个[5,10]的随机整数。
Private Sub Command1_Click()
Dim a As Integer, n As Integer
Dim s As Long, s1 As Long, i As Integer, j As Integer
Cls
Randomize
a = Int(9 * Rnd) + 1
n = Int(6 * Rnd) + 5
s = 0
For i = 1 To n
s1 = 0
For j = 1 To i
s1 = s1 + a * 10 ^ (j - 1)
Next j
s = s + s1
Next i
Print "当a="; a, "n="; n; "时"
Print "s="; s
End Sub
23 S=1+12+123+1234+12345+123456
Private Sub Command1_Click()
Dim s As Long, s1 As Long, i As Integer, j As Integer s = 0
s1 = 0
For i = 1 To 6
s1 = s1 * 10 + i
Print s1
s = s + s1
Next i
Print "s="; s
's = 0
'For i = 1 To 6
' s1 = 0
' For j = 1 To i
' s1 = s1 + j * 10 ^ (i - j)
' Next j
' s = s + s1
'Next i
'Print "s=";s
End Sub
24 将一字符串逆序输出
Private Sub Command1_Click()
Dim n As Integer, s1 As String, s2 As String
s1 = Text1.Text
s2 = ""
n = Len(Trim(Text1.Text))
For i = n To 1 Step -1
s2 = s2 & Mid(s1, i, 1)
Next i
Text2.Text = s2
End Sub
25 判断任给一大于3的整数是否是素数。
Private Sub Command1_Click()
Dim N As Integer, I As Integer
N = InputBox("请输入一个大于3的整数")
For I = 2 To N - 1
If N Mod I = 0 Then
Exit For
End If
Next I
If N = I Then
MsgBox (N & " 是素数") Else
MsgBox (N & " 不是素数") End If
End Sub
26 输出3~100之间的素数
输出
Private Sub Command1_Click() Dim n As Integer, i As Integer For n = 3 To 100
For i = 2 To n - 1
If n Mod i = 0 Then
Exit For
End If
Next i
If i = n Then
Print n
End If
Next n
End Sub
换行输出
Private Sub Command2_Click() Dim n As Integer, i As Integer Dim m As Integer
m = 0
For n = 3 To 100
For i = 2 To n - 1
If n Mod i = 0 Then
Exit For
End If
Next i
If i = n Then
m = m + 1
If m Mod 5 = 0 Then
Print n
Else
Print n;
End If
End If
Next n
End Sub
'Private Sub Command2_Click() 'Dim n As Integer, i As Integer
'dim m as in
'm = 0
'For n = 3 To 100
' For i = 2 To n - 1
' If n Mod i = 0 Then
' Exit For
' End If
' Next i
' If i = n Then
' m = m + 1
' If m Mod 5 = 0 Then
' Print Tab(6 * m); n
' m = 0
' Else
' Print Tab(6 * m); n;
' End If
' End If
'Next n
'End Sub
27 输出100~999之间的水仙花数Private Sub Command1_Click() Dim I As Integer, A As Integer Dim B As Integer, C As Integer For I = 100 To 999
A = Int(I / 100)
B = Int(I / 10) - A * 10
C = I - A * 100 - B * 10
If A ^ 3 + B ^ 3 + C ^ 3 = I Then Picture1.Print I;
End If
Next I
End Sub
28陈婷的QQ密码是一个5位数。但因为有一段比较长的日子没上了,陈婷把这个密码给忘了。不过陈婷的生日是8月1日,她妈妈的生日是9月1日,她特别喜欢把同时是8l和9l的倍数用作密码。陈婷还记得这个密码的中间一位(百位数)是l。你能设计一个程序帮她找回这个密码吗?
Private Sub Command1_Click()
'陈婷密码:5位数,能被81,91整除,百位是1
Dim i As Long, x As Integer
For i = 10100 To 99199
x = i \ 100 Mod 10
If x = 1 Then
If i Mod 91 = 0 And i Mod 81 = 0 Then
MsgBox "密码是" & i
End If
End If
Next i
End Sub
29百元买百鸡问题。假定小鸡每只5角,公鸡每只2元,母鸡每只3元。现在有100元钱要求买100只鸡(每种鸡至少一只),编程列出所有可能的购鸡方案
Option Explicit
Private Sub Command1_Click()
Dim X As Integer, Y As Integer
Dim z As Integer, I As Integer
I = 0
For X = 1 To 100
For Y = 1 To 50
For z = 1 To 33
If X + Y + z = 100 And 0.5 * X + 2 * Y + 3 * z = 100 Then
I = I + 1
Picture1.Print "方案" & I & " :小鸡" & X & "只," _
& " 公鸡 " & Y & "只," & " 母鸡" & z & "只。"
End If
Next z, Y, X
End Sub
30 鸡兔合笼共20只,脚46只问鸡几只?兔几只?
Private Sub Command1_Click()
Dim x As Integer, y As Integer
For x = 1 To 20
For y = 1 To 20 - x
If x + y = 20 And 2 * x + 4 * y = 46 Then
Print " 鸡" & x & "只 ", "兔" & y & "只"
End If
Next y
Next x
End Sub
31 找出100之内的自然数对。 (两数的和是某个自然数的平方,两数的差也是某数的平方)
Private Sub Command1_Click()
For i = 1 To 99
For j = i + 1 To 100
If Int(Sqr(j - i)) = Sqr(j - i) And Int(Sqr(j + i)) = Sqr(j + i) Then
Print i, j
End If
Next j
Next i
End Sub
32 找出1000-9999之间的玫瑰花数。
Private Sub Command1_Click()
Dim i As Integer
Dim a1 As Integer, a2 As Integer
Dim a3 As Integer, a4 As Integer
For i = 1000 To 9999
a1 = i \ 1000
a2 = i \ 100 Mod 10
a3 = i \ 10 Mod 10
a4 = i Mod 10
If a1 ^ 4 + a2 ^ 4 + a3 ^ 4 + a4 ^ 4 = i Then
Print i
End If
Next i
End Sub
33 猴子吃桃子。小猴在某天摘桃若干个,当天吃掉一半多一个;第二天吃了剩下的桃子的一半多一个;以后每天都吃尚存桃子的一半多一个,到第7天要吃时只剩下一个,问小猴共摘下了多少个桃子?
Option Explicit
Private Sub Command1_Click()
Dim X As Integer, I As Integer
X = 1
For I = 6 To 1 Step -1
X = (X + 1) * 2
Picture1.Print "第" & I; "天桃子数是:" & X & "个。"
Next I
End Sub
34瓜农有西瓜1020个,每天能卖掉前一天剩下的总数的一半还多两个,问多少天能卖完。
Option Explicit
Private Sub Command1_Click()
Dim X As Integer, I As Integer
X = 1020
I = 0
Do While X > 0
X = X / 2 - 2
I = I + 1
Loop
Label4.Caption = "第" & I & "天能卖完."
End Sub
35一球从10米高空落下,每次弹起高度为落下高度的40%,求第8次落下,小球经历的路程。
Private Sub Command1_Click()
Dim s As Single, h As Single, i As Integer
s = 10
h = 10
For i = 2 To 8
h = h * 0.4
s = s + h * 2
Next i
Picture1.Print "球第八次落下经历的路程是:"; s; "米"
End Sub
36 输入十个数,输出其中的最大数和最小数
Private Sub Command1_Click()
Dim x As Single, i As Integer
Dim max As Single, min As Single
x = Val(InputBox("请输入第1个数"))
Print x
max = x: min = x
For i = 2 To 10
x = Val(InputBox("请输入第" & i & "个数"))
Print x
If x > max Then
max = x
Else
If x < min Then
min = x
End If
End If
Next i
Print "max="; max, "min="; min
End Sub
37 7个裁判给选手打分,要求去掉最高分和最低分,求平均分。
Option Explicit
Private Sub Command1_Click()
Dim C(7), MAX, MIN, S, I
MAX = 0
MIN = 100
For I = 1 To 7
C(I) = Val(InputBox("请输入第" & I & "裁判的打分", "输入", , 7000, 1000)) Picture1.Print "第 " & I & "个裁判的打分:" & C(I)
S = S + C(I)
If C(I) > MAX Then
MAX = C(I)
Else
If C(I) < MIN Then
MIN = C(I)
End If
End If
Next I
S = (S - MAX - MIN) / 5
Picture1.Print "最后得分是:" & S
End Sub
38 求M,N的最大公约数和最小公倍数
Private Sub Command1_Click()
Dim m As Integer, n As Integer
Dim i As Integer, mas As Integer
Max = 1
m = Val(Text1.Text)
n = Val(Text2.Text)
If m >= n Then
x = n
Else
x = m
End If
For i = 1 To x
If m Mod i = 0 And n Mod i = 0 Then
Max = i
End If
Next i
Label3.Caption = "最大公约数是" & Max
End Sub
Private Sub Command2_Click()
Dim m As Integer, n As Integer
Dim i As Integer, mas As Integer
m = Val(Text1.Text)
n = Val(Text2.Text)
If m >= n Then
x = m
Else
x = n
End If
Max = x
For i = x To m * n
If x Mod i = 0 And x Mod i = 0 Then
Min = i
Exit For
End If
Next i
Label3.Caption = "最小公倍数是" & Min
End Sub
39 统计1~100之间能被3整除和能被7整除的数各有多少个?
Private Sub Command1_Click()
Dim i As Integer, m As Integer, n As Integer
m = 0: n = 0
For i = 1 To 100
If i Mod 3 = 0 Then
m = m + 1
End If
If i Mod 7 = 0 Then
n = n + 1
End If
Next i
Print "能被3整除的数有" & m & "个" & vbCrLf & "能被7整除的数有" & n & "个"
End Sub
40 统计字符串中字母“A”出现的次数(不区分大小写)
Option Explicit
Private Sub Command1_Click()
Dim N As Integer, I As Integer, x As String
N = 0
x = Text1.Text
For I = 1 To Len(x)
If Mid(x, I, 1) = "A" Or Mid(x, I, 1) = "a" Then
'If UCase(Mid(x, I, 1)) = "A" Then
N = N + 1
End If
Next I
Text2.Text = N
End Sub
41统计字符串中大写字母、小写字母、数字字符的个数分别是多少?Private Sub Command1_Click()
Dim N1, N2, N3, I
N1 = 0: N2 = 0: N3 = 0
For I = 1 To Len(Text1.Text)
X = Mid(Text1.Text, I, 1)
Select Case X
Case "A" To "Z"
N1 = N1 + 1
Case "a" To "z"
N2 = N2 + 1
Case 0 To 9
N3 = N3 + 1
End Select
Next
Picture1.Print "大写字母个数:"; N1
Picture1.Print "小写字母个数:"; N2
Picture1.Print "数字字符个数:"; N3
End Sub
42 简单图形输出