文档库 最新最全的文档下载
当前位置:文档库 › VB编程题目及答案

VB编程题目及答案

VB编程题目及答案
VB编程题目及答案

1.输入3个数,输出最大的数

2.有一元二次方程:aX2+bX+c=0,依次输入a,b,c,判断此方程是否有实根

3.输入一个百分制的成绩,若大于等于60,则用消息框弹出,显示“恭喜!成绩通过!”,

若小于60,则弹出消息框,显示“抱歉!成绩没有通过!”

4.输入一年份,判断它是否为闰年,并显示有关信息。(判断闰年的条件是:年份能被4

整除但不能被100整除,或者能被400整除)

5.输入学生的百分制成绩,转换输出为五级制成绩,90~100分转换为优秀,80~89转换

为良好,70~79转换为中等,60~69转换为及格,0~60转换为不及格。

6.随机产生一个三位正整数,然后逆序输出,产生的数与逆序数同时显示。例如,产生

246,输出是642。

7.输入两个整数,求它们的最大公约数。

8.编程求200--400范围内5的倍数或7的倍数之和。(一个数如果同时是7和5的倍数,

则只能加一次。。

9.计算100~300之间所有能被3和7整除的数之和

10.分别统计1-100中,满足3的倍数、7的倍数的数各有多少。

11.某次歌曲大奖赛,有7个评委。如果分别输入7个评委对某个参赛者的打分数,按照去

掉一个最高分和一个最低分的计算办法,求出该参赛者的平均得分。

12.输入一串字符,统计其中字母A(不区分大小写)出现的次数。

13.我国目前有13亿人口,按人口年增长率0.8%计算,多少年后我国人口将超过26亿。

14.小猴有桃若干,第一天吃掉一半多一个;第二天吃剩下桃子的一半多一个;以后每天都

吃尚存桃子的一半多一个,到第7天只剩一个,问小猴原有桃多少?

15.求100以内的素数

16.百元买百鸡问题。假定小鸡每只5角,公鸡每只2元,母鸡每只3元,编程求解购鸡方

案。

17.编程求斐波那契数列前11项。(斐波那契数列:F(0)=f(1)=1, F(n)=F(n-1)+F(n-2) n>=2 )

18.将输入的字符串以反序显示。例如:输入“ASDFGT”,显示“TGFDSA”

19.随机产生10个[30,100]内的整数,求最大值及所对应的下标

20.随机产生10个[30,100]内的整数,求最大值、最小值和平均值。

21.随机产生10个[30,100]内的整数,求最小值及所对应的下标。

22.随机生成一个整型的二维数组,范围在[10,20]之间,以下三角形式输出该数组。

23.随机产生10个1~100的正整数放入数组,显示产生的数,求最大值、最小值、平均值。

24.利用随机函数生成一个4×4的矩阵(即二维矩阵),范围是[20,50]内的整数,输出该矩阵所

有数据之和

25.已知有序数组a(),编程插入x(x的值为14)。数组a中的元素分别为{12,6,4,89,

75,63,100,20,31}。

26.编写一函数,计算Double类型一维数组所有元素的平均值。

27.用函数过程求表达式1+1/2+1/3+1/4+…+1/n的和.

28.编一子过程ProcMin,求一维数组a中的最小值,子过程的形参自己确定。

29.编一个函数,求一维数组a中的最大值,函数的形参自己确定。

30.编写一个过程计算并输出区间[100,1000]内所有素数的和(要求判断素数使用过程(函

数或子过程)来实现。调用该过程。(提示:只能被1和自身整除的自然数称为素数。) (注:本答案第一行代码应在题目之后,自行调整)

Private Sub Command11_Click()

'1. 输入3个数,输出最大的数

Dim max%

X1 = Val(InputBox("input"))

X2 = Val(InputBox("input"))

x3 = Val(InputBox("input"))

max = X1

If max <= X2 Then

max = X2

End If

If max <= x3 Then

max = x3

End If

MsgBox ("3个数之中的最大数max=" & max)

End Sub

Private Sub Command12_Click()

'2. '有一元二次方程:aX2+bX+c=0,依次输入a,b,c,判断此方程是否有实根

a = Val(InputBox("input"))

B = Val(InputBox("input"))

c = Val(InputBox("input"))

s = B ^ 2 - 4 * a * c

If a <> 0 Then

If s = 0 Then

MsgBox ("两个相等实根")

ElseIf s > 0 Then

MsgBox ("两个不相等实根")

ElseIf s < 0 Then

MsgBox ("两个不相等虚根")

End If

Else

MsgBox (" 无解")

End If

End Sub

Private Sub Command13_Click()

'3. 输入一个百分制的成绩,若大于等于60,则用消息框弹出,显示"恭喜!成绩通过!",若小于60,则弹出消息框,显示"抱歉!成绩没有通过!"

X = Val(InputBox("input"))

If X >= 60 Then

MsgBox ("恭喜!成绩通过!")

Else

MsgBox ("抱歉!成绩没有通过!")

End If

End Sub

Private Sub Command14_Click()

'4. 输入一年份,判断它是否为闰年,并显示有关信息。(判断闰年的条件是:年份能被4整除但不能被100整除,或者能被400整除)

yes = Val(InputBox("year"))

If yes Mod 4 = 0 And yes Mod 100 <> 0 Or yes Mod 400 = 0 Then

MsgBox (yes & "是闰年")

Else

MsgBox (yes & "不是闰年")

End If

End Sub

Private Sub Command15_Click()

'5. 输入学生的百分制成绩,转换输出为五级制成绩,90~100分转换为优秀,80~89转换为良好,70~79转换为中等,60~69转换为及格,0~60转换为不及格。

score = Val(InputBox("input"))

Select Case score

Case Is >= 90

MsgBox ("优秀")

Case Is >= 80

MsgBox ("良好")

Case Is >= 70

MsgBox ("中")

Case Is >= 60

MsgBox ("及格")

Case Else

MsgBox ("不及格")

End Select

End Sub

Private Sub Command16_Click()

'6. 随机产生一个三位正整数,然后逆序输出,产生的数与逆序数同时显示。例如,产生246,输出是642。

a = "645"

n = Len(a)

For i = 1 To Int(n / 2)

c = Mid(a, i, 1)

Mid(a, i, 1) = Mid(a, n - i + 1, 1)

Mid(a, n - i + 1, 1) = c

Next i

MsgBox (a)

End Sub

Private Sub Command1_Click()

'7. 输入两个整数,求它们的最大公约数

m = Val(InputBox("input m值"))

n = Val(InputBox("input n值"))

If n > m Then

t = n

n = m

m = t

End If

r = m Mod n

Do While r <> 0

m = n

n = r

r = m Mod n

Loop

MsgBox ("最大公约数=" & n)

End Sub

Private Sub Command2_Click()

'8. 编程求200--400范围内5的倍数或7的倍数之和。(一个数如果同时是7和5的倍数,则只能加一次。Dim sum1%, sum2%

sum1 = 0: sum2 = 0

For i = 200 To 400

If i Mod 5 = 0 Then

sum1 = sum1 + i

ElseIf i Mod 7 = 0 Then

sum2 = sun2 + i

End If

Debug.Print i, sum1, sum2

Next i

MsgBox ("5 的倍数之和sum=" & sum1)

MsgBox ("7 的倍数之和sum=" & sum2)

End Sub

Private Sub Command3_Click()

'9. 计算100~300之间所有能被3和7整除的数之和

Dim sum%

sum = 0

For i = 100 To 300

If i Mod 3 = 0 And i Mod 7 = 0 Then

sum = sum + i

End If

Next i

MsgBox ("sum=" & sum)

End Sub

Private Sub Command4_Click()

'10. 分别统计1-100中,满足3的倍数、7的倍数的数各有多少

m = 0: n = 0

For i = 1 To 100

If i Mod 3 = 0 Then

n = n + 1

ElseIf i Mod 7 = 0 Then

m = m + 1

End If

Next i

MsgBox ("3的倍数个数=" & n)

MsgBox ("7的倍数个数=" & m)

End Sub

Private Sub Command5_Click()

'11. 某次歌曲大奖赛,有7个评委。如果分别输入7个评委对某个参赛者的打分数,按照去掉一个最高分和一个最低分的计算办法,求出该参赛者的平均得分

Dim sum%, max%, min%

sum = 0: max = 0: min = 999

For i = 1 To 7

X = Val(InputBox("input"))

If max <= X Then

max = X

End If

If min >= X Then

min = X

End If

sum = sum + X

Next i

Avg = (sum - max - min) / 5

MsgBox ("最高分=" & max)

MsgBox ("最低分= " & min)

MsgBox ("总和=" & sum)

MsgBox ("平均分=" & Avg)

End Sub

Private Sub Command10_Click()

'12. 输入一串字符,统计其中字母A(不区分大小写)出现的次数。

Dim ch As String

ch = "ASDEAS"

n = 0

For i = 1 To Len(ch)

st = Mid(ch, i, 1)

If UCase(st) = "A" Then

n = n + 1

End If

Next i

MsgBox ("字符串中出现A字符的系数" & n)

End Sub

Private Sub Command6_Click()

'13. 我国目前有13亿人口,按人口年增长率0.8%计算,多少年后我国人口将超过26亿。

n = 0

X = 13

Do While X <= 26

X = X * 1.008

n = n + 1

Loop

MsgBox (n)

End Sub

Private Sub Command7_Click()

'14. 小猴有桃若干,第一天吃掉一半多一个;第二天吃剩下桃子的一半多一个;以后每天都吃尚存桃子的一半多一个,到第7天只剩一个,问小猴原有桃多少?

X = 1

For i = 6 To 1 Step -1

X = (X + 1) * 2

Next i

MsgBox (X)

End Sub

Private Sub Command8_Click()

'15. 求100以内的素数

For i = 1 To 100

flag = 1

For j = 2 To i - 1

If i Mod j = 0 Then

flag = 0

End If

Next j

If flag = 1 Then

MsgBox (i & "是素数")

End If

Next i

End Sub

Private Sub Command9_Click()

'16. 百元买百鸡问题。假定小鸡每只5角,公鸡每只2元,母鸡每只3元,编程求解购鸡方案。n = 0

For X = 0 To 33

For y = 0 To 50

z = 100 - X - y

If 3 * X + 2 * y + 0.5 * z = 100 Then

Print X, y, z

End If

Next y

Next X

End Sub

Private Sub Command20_Click()

'17. 编程求斐波那契数列前11项。(斐波那契数列:F(0)=f(1)=1, F(n)=F(n-1)+F(n-2) n>=2 )Dim f(11) As Integer

f(0) = 1

f(1) = 1

For i = 2 To 10

f(i) = f(i - 1) + f(i - 2)

Next i

For i = 0 To 10

Print f(i);

Next i

End Sub

Private Sub Command21_Click()

'18. 将输入的字符串以反序显示。例如:输入"ASDFGT",显示"TGFDSA" Dim s(10) As String

For i = 0 To 9

s(i) = InputBox("input")

Next i

For i = 9 To 0 Step -1

Print s(i)

Next i

End Sub

Private Sub Command22_Click()

'19. 随机产生10个[30,100]内的整数,求最大值及所对应的下标

Dim a(10) As Integer, max%

For i = 0 To 9

a(i) = Int(Rnd * 71 + 30)

Next i

max = a(0)

maxi = 0

For i = 1 To 9

If a(i) >= max Then

max = a(i)

maxi = i

End If

Next i

MsgBox ("max=" & max)

MsgBox ("maxi=" & maxi)

End Sub

Private Sub Command23_Click()

'20. 随机产生10个[30,100]内的整数,求最大值、最小值和平均值。

Dim a(10) As Integer, max%, min%

For i = 0 To 9

a(i) = Int(Rnd * 71 + 30)

Next i

max = a(0)

min = a(0)

For i = 1 To 9

If a(i) >= max Then

max = a(i)

Else

min = a(i)

End If

sum = sum + a(i)

Next i

MsgBox ("max=" & max)

MsgBox ("min=" & min)

MsgBox ("avg=" & sum / 10)

End Sub

Private Sub Command17_Click()

'21. 随机产生10个[30,100]内的整数,求最小值及所对应的下标。

Dim a(10) As Integer

For i = 0 To 9

a(i) = Int(Rnd * 71 + 30)

Next i

min = a(0)

Mini = 0

For i = 1 To 9

If a(i) <= min Then

min = a(i)

Mini = i

End If

Next i

MsgBox ("min=" & min)

MsgBox ("mini=" & Mini)

End Sub

Private Sub Command18_Click()

'22. 随机生成一个整型的二维数组,范围在[10,20]之间,以下三角形式输出该数组。

Dim a(10, 10) As Integer

For i = 0 To 9

For j = 0 To 9

a(i, j) = Int(Rnd * 11 + 10)

Next j

Next i

For i = 0 To 9

For j = 0 To i

Print a(i, j),

Next j

Print

Next i

End Sub

Private Sub Command19_Click()

'23. 随机产生10个1~100的正整数放入数组,显示产生的数,求最大值、最小值、平均值。

Dim a(10) As Integer, max%, min%

For i = 0 To 9

a(i) = Int(Rnd * 100 + 1)

Print a(i)

Next i

max = a(0)

min = a(0)

For i = 1 To 9

If a(i) >= max Then

max = a(i)

Else

min = a(i)

End If

sum = sum + a(i)

Next i

MsgBox ("max=" & max)

MsgBox ("min=" & min)

MsgBox ("avg=" & sum / 10)

End Sub

Private Sub Command24_Click()

'24. 利用随机函数生成一个4×4的矩阵(即二维矩阵),范围是[20,50]内的整数,输出该矩阵所有数据之和Dim a(4, 4) As Integer

Dim sum%, i%, j%

For i = 0 To 3

For j = 0 To 3

a(i, j) = Int(Rnd * 31 + 20)

sum = sum + a(i, j)

Next j

Next i

For i = 0 To 3

For j = 0 To 3

Print a(i, j),

Next j

Print

Next i

MsgBox ("sum=" & sum)

End Sub

Private Sub Command25_Click()

'25. 已知有序数组a(),编程插入x(x的值为14)。数组a中的元素分别为{12,6,4,89,75,63,100,20,31}。

Dim a(), iMin%, n%, i%, j%, t%

a = Array(2, 6, 4, 89, 75, 63, 100, 20, 31)

X = 14

n = UBound(a) ' 获得数组的下标上界

For i = 0 To n - 1 ' 进行n-1轮比较

iMin = i ' 对第i轮比较时,初始假定第i个元素最小For j = i + 1 To n ' 在数组i+1~n个元素中选最小元素的下标

If a(j) < a(iMin) Then iMin = j

Next j

t = a(i) ' i+1~n个元素中选出的最小元素与第i个元素交换a(i) = a(iMin)

a(iMin) = t

Next i

For k = 0 To n ' 查找欲插入数x在数组中的位置

If X < a(k) Then Exit For

Next k

ReDim Preserve a(n + 1) ' 数组增加一个元素

For i = n To k Step -1 ' 数组元素后移一位,腾出位置a(i + 1) = a(i)

Next i

a(k) = X

For i = 0 To n + 1

Print a(i);

Next

End Sub

Private Sub Command26_Click()

'26. 编写一函数,计算Double类型一维数组所有元素的平均值。

Dim a(), n%, s!

a = Array(1, 4, 7, 9, 12, 23, 56)

n = UBound(a)

s = sum1(a())

MsgBox ("sum=" & s)

MsgBox ("avg=" & s / n)

End Sub

Private Sub Command27_Click()

'27. 用函数过程求表达式1+1/2+1/3+1/4+…+1/n的和.

n = InputBox("INPUT")

s = sum2(n)

MsgBox ("SUM2=" & s)

End Sub

Private Sub Command28_Click()

'28. 编一子过程ProcMin,求一维数组a中的最小值,子过程的形参自己确定

Dim a(), n%, min%

a = Array(1, 4, 7, 9, 12, -23, 56)

n = UBound(a)

Call procmin(a(), min)

MsgBox ("min=" & min)

End Sub

'28. 编一子过程ProcMin,求一维数组a中的最小值,子过程的形参自己确定

Private Sub Command1_Click()

Dim a(), n%, min%

a = Array(1, 4, 7, 9, 12, -23, 56)

n = UBound(a)

Call procmin(a(), min)

MsgBox ("min=" & min)

End Sub

Private Sub Command29_Click()

'29. 编一个函数,求一维数组a中的最大值,函数的形参自己确定。

Dim a(), n%, s!

a = Array(1, 4, 7, 9, 12, 23, 56)

n = UBound(a)

s = max(a())

MsgBox ("max=" & s)

End Sub

Private Sub Command30_Click()

'30. 编写一个过程计算并输出区间[100,1000]内所有素数的和(要求判断素数使用过程(函数或子过程)来实现。调用该过程。(提示:只能被1和自身整除的自然数称为素数。)

Dim i%, sum!, f%

sum = 0

For i = 100 To 1000

Call procs(i, f)

If f = 1 Then

sum = sum + i

End If

Next i

MsgBox ("sum=" & sum)

End Sub

相关文档