yThent=x:x=y:y=t:Ifx>" />

VB题库(编程题)及参考答案

VB题库(编程题)及参考答案
VB题库(编程题)及参考答案

VB题库(编程题)及参考答案题库(编程题)参考答案

1、已知x,y,z 3个变量中存放了3个不同的数,比较它们的大小并进行调整,使得x

Dim x!, y!, z!

x = InputBox("input x")

y = InputBox("input y")

z = InputBox("input z")

Print "排序前"; x; " "; y; " "; z

If x > y Then t = x: x = y: y = t:

If x > z Then t = x: x = z: z = t:

If y >z Then t = y: y = z: z = t:

Print "排序后" ; x; " "; y; " "; z End Sub

2、计算0~200之间所有能被11或5整除的数之和

Private Sub Form_Click()

Dim n%, s%

s = 0

For n = 0 To 200

If n Mod 5 = 0 Or n Mod 11 = 0 Then s = s + n

Next n

Print s

End Sub

3、输入三角形三条边a,b,c的值,根据其数值,判断能否构成三角形。Private Sub Command1_Click() a = Val(InputBox("输入a的长"))

b = Val(InputBox("输入b的长"))

c = Val(InputBox("输入c的长"))

If (a + b > c) And (a + c > b) And (b + c > a) Then

Msgbox “能构成三角形~”

Else

Msgb ox “不能构成三角形~”

End If

End Sub

4、随机产生10个[30,100]内的整数,求最小值及所对应的下标。 Private Sub Form_Click()

Dim a(9), min%, imin%

For i = 0 To 9

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

Print a(i);

Next i

Print

Min = a(0) :imin=0

For i = 1 To 9

If a(i)< min Then min = a(i): imin = i

Next i

Print "min="; min

Print "imin="; imin

End Sub

5、随机产生10个[30,100]内的整数,求最大值、最小值和平均值。 Private Sub Form_Load()

Dim a(9) As Integer,i%,sum%,min%,max% sum = 0

Randomize

For i=0 to 9

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

Print a(i);

next i

min = a(0):max = a(0)

For i = 0 To 9

If min > a(i) Then min = a(i)

If max < a(i) Then max = a(i)

sum = sum + a(i)

Next i

Print "最大数是" ; max

Print "最小数是" ; min

Print "平均数是" ; avg/10

End Sub

6、略

7、某次歌曲大奖赛,有7个评委。如果分别输入7个评委对某个参赛者的打分

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

方法1:思路:将7个数从大到小排序,去掉首尾两数后,将剩余的数求平均Option Base 1

Dim a%(7), i%, j%, t%, s% Private Sub Command1_Click() a(1) =

Val(Text1.Text)

a(2) = Val(Text2.Text)

a(3) = Val(Text3.Text)

a(4) = Val(Text4.Text)

a(5) = Val(Text5.Text)

a(6) = Val(Text6.Text)

a(7) = Val(Text7.Text)

For i= 1 To 6 '排序

For j =1 To 7 - i

If a(j) <= a(j + 1) Then

t = a(j)

a(j) = a(j + 1)

a(j+ 1) = t

End If

Next j

Next i

For i= 2 To 6 …去掉最大值,最小值,然后求和

s = s + a(i)

Next i

Print "平均分=; "; s /5 '打印平均分

End Sub

方法2:

Dim a(6) As Integer,i%,Min%,Max%,Sum%

a(0) = Val(Text1.Text)

a(1) = Val(Text2.Text)

a(2) = Val(Text3.Text)

a(3) = Val(Text4.Text)

a(4) = Val(Text5.Text)

a(5) = Val(Text6.Text)

a(6) = Val(Text7.Text)

Sum = a(0)

Max = a(0)

Min = a(0)

For i = 1 To 6 ‘边找最大、最小值,边求和

If Min > a(i) Then Min = a(i)

If Max < a(i) Then Max = a(i)

Sum = Sum + a(i)

Next i

Print “平均分”; (Sum - Min - Max) / 5 ‘去掉最大值,最小值,然后求平均值

End Sub

8、求s=a+aa+aaa+...aaaaa(n个a),其中a和n的值随机产生,a的范围是[1,9]

的整数,n的范围是[5,10]。如a=3,n=6,则s=3+33+333+3333+33333+333333。编程确定n

和a的值,并计算s。

Private Sub Form_click()

Dim s!, t!, i!, a%, n%

a = Int(Rnd * 9 + 1)

n = Int(Rnd * 6 + 5)

t = 0: s = 0

Print "a="; a, "n="; n

For i = 1 To n

t = t * 10 + a

s = s + t

Print t

Next i

Print

Print "s="; s

End Sub

9、求100以内的素数。

Private Sub Command1_Click()

Dim i As Integer, m As Integer, tag As Boolean j = 0

For m = 2 To 100

tag = True

For i = 2 To m - 1

If (m Mod i) = 0 Then tag = False

Next i

If tag Then

Print m;

j = j + 1

If j = 10 Then j = 0: Print

End If

Next m

End Sub

10、计算100~300之间所有能被3和7整除的数之和。 Private Sub Command1_Click()

Dim s%, i%

s = 0

For i = 100 To 300

If i Mod 3 = 0 Or i Mod 7 = 0 Then s = s + i

Next i

Print "s=" & s

End Sub

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

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

Private Sub Command1_Click()

Dim y%

y = Val(Text1)

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

MsgBox (y & "年是闰年")

Else

MsgBox (y & "年是平年")

End If

End Sub

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

数,则只能加一次。)

Private Sub Command1_Click()

Dim s1%, s2%, s3%, i%

s1 = 0

s2 = 0

For i = 200 To 400

If i Mod 5 = 0 Or i Mod 7 = 0 Then

s1 = s1 + i

End If

Next i

For i = 200 To 400

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

s2 = s2 + i

End If

Next i

s3 = s1 - s2

Print s3

End Sub

13、利用InputBox函数输入两个整数,求它们的最大公约数。

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

产生246,输出是642。

Private Sub Command1_Click()

Dim x%, x1%, x2%, x3%

Text1 = Int(Rnd * 900 + 100)

x = Val(Text1)

x1 = x Mod 10

x2 = (x Mod 100) \ 10

x3 = x \ 100

Text2 = x1 * 100 + x2 * 10 + x3

End Sub

15、从键盘输入任意长度的字符串,要求将字符顺序倒置,例如,将输入的"ABCDEFG"

变换成"GFEDCBA"。

Private Sub Form_Click()

Dim i, a, b, n As String

n = InputBox("输入字符")

i = Len(n)

For a = 1 To i / 2

b = Mid(n, a, 1)

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

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

Next a

Print n

End Sub

16、利用随机函数生成一个4×4的矩阵(即二维矩阵),范围是[20,50]内的整数,输出该矩阵所有数据之和。

Private Sub Form_Click()

Dim a(3, 3), sum%

For i = 0 To 3

For j = 0 To 3

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

Print a(i, j);

sum = sum + a(i, j)

Next j

Print

Next i

Print "sum="; sum

End Sub

17、利用随机函数生成一个4×4的矩阵(即二维矩阵),范围是[20,50]内的整数,求它的两条对角线上元素之和。

Private Sub Command1_Click()

Dim a%(3, 3), i%, j%, sum%

For i = 0 To 3

For j = 0 To 3

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

Print a(i, j); "";

Next j

Print

Next i

sum = 0

For i = 0 To 3

sum = sum + a(i, i) + a(i, 3 - i)

Next i

Print “sum=”;sum

End Sub

18、编一子过程ProcMin,求一维数组a中的最小值,子过程的形参自己确定。Sub s(b(), min)

Dim i%

min = b(LBound(b))

For i = LBound(b) + 1 To UBound(b)

If b(i) < min Then min = b(i)

Next i

End Sub

19、编一个冒泡排序法子过程,对已知的若干整数按递减次序排列。提示:子过程的形式为sub sort1(a%())。

Sub sort(a%())

Dim n%, imin%, i%, j%

N=UBound(a)

For i = 0 To n - 1

For j = 0 To n- 1 - i

If a(j,1) > a(j ) Then

t = a(j): a(j) = a(j + 1): a(j + 1) = t

End If

Next j

Next i

End Sub

20、一个4×4的二维数组A和一个一维数组D,数组A中元素随机生成,范围是1,20。请将A中元素按列的顺序放入D中,并分别输出两个数组。

21、编一个选择排序法子过程,对已知的若干整数按递增次序排列。提示:子过程的形式为sub sort1(a%())。

Sub sort(a%())

Dim imin%, i%, j%

For i = 0 To UBound(a) – 1

imin = i

For j = i + 1 To UBound(a)

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

Next j

t = a(i): a(i) = a(imin): a(imin) = t

Next i

End Sub

22、编写一函数,利用牛顿切线法求根。f(x)=3*x^3-5*x+13 迭代公式如图所示:

23、求0到200 被5 或11 整除的数的和

Private Sub Command1_Click()

Dim i%

For i = 0 To 200

If (i Mod 11 = 0) Or (i Mod 5 = 0) Then Sum = Sum + i

Next i

Print "总和是"; Sum

End Sub

24、已知有序数组a(),编程插入x(x的值为34)使之仍然有序。数组a中的元素分别为{12,16,24,29,43,63,70,88,97}。

参见题35

25、计算100~300之间所有能被3和7整除的数之和。

Private Sub Command1_Click()

Dim s%, i%

s = 0

For i = 100 To 300

If (i Mod 3 = 0) AND (i Mod 7 = 0) Then s = s + i

Next i

Print "s=" & s

End Sub

26、声明一个整型的二维数组a(1 to 4,1 to 4),用随机函数产生各元素,范围介于[1,20]之间,编程将第2行和第4行对应元素交换。

Private Sub Form_Click()

Dim a(1 To 4, 1 To 4), i%, j%, t

For i = 1 To 4

For j = 1 To 4

a(i, j) = Int(Rnd * 19 + 1)

Print Tab(j * 5); a(i, j);

Next j

Next i

Print:Print

For j = 1 To 4

t = a(2, j): a(2, j) = a(4, j): a(4, j) = t

Next j

For i = 1 To 4

For j = 1 To 4

Print Tab(j * 5); a(i, j);

Next j

Next i

End Sub

27、定义三个4×4的二维数组A,B,C,其中A和B中的元素均随机生成,数组A的范围是1,20,数组B的范围是100,200,数组C是A和B相加得到的。请编程生成并输出A,B,C。 Private Sub Command1_Click()

Dim a(3, 3), b(3, 3), c(3, 3), t%, m%

For i = 0 To 3

For j = 0 To 3

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

Print a(i, j);

Next j

Print

Next i

Print

For i = 0 To 3

For j = 0 To 3

b(i, j) = Int(Rnd * 101 + 100)

Print b(i, j);

Next j

Print

Next i

Print

For i = 0 To 3

For j = 0 To 3

c(i, j) = a(i, j) + b(i, j)

Print c(i, j);

Next j

print

Next i

End Sub

28、随机产生10个1~100的正整数放入数组,显示产生的数,求最大值、最小值、平均值。 Private Sub Form_Click()

Dim a(1 To 10) As Integer, i%, maxa%, mina%, suma%

For i = 1 To 10

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

Print a(i);

Next i

mina = a(1)

maxa = a(1)

suma = a(1)

For i = 2 To 10

If a(i) > maxa Then maxa = a(i)

If a(i) < mina Then mina = a(i)

suma = suma + a(i)

Next i

Print

Print "max="; maxa, "min="; mina, "aver="; suma / 10

End Sub

29、利用随机函数生成一个4×4的矩阵(即二维矩阵),范围是[20,50]内的整数,输出每行中的最大值和下标。

方法1:

Private Sub Command1_Click()

Dim a%(3, 3), i%, j%, m%, n%, max% For i = 0 To 3

For j = 0 To 3

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

Print a(i, j); "";

Next j

Print

Next i

For i = 0 To 3

max = a(i, 0): m = i: n = 0

For j = 0 To 3

If a(i, j) > a(m, n) Then m = i: n = j

Next j

Print "第"; i + 1; "行"; "最大值为"; a(m, n); "下标为"; "("; m; n; ")"

Next i

End Sub

*方法2:

Private Sub Command1_Click()

Dim a%(3, 3), i%, j%, imax%

For i = 0 To 3

For j = 0 To 3

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

Print a(i, j); "";

Next j

Print

Next i

imax = 0

For i = 0 To 3

For j = 0 To 3

If a(i, imax) < a(i, j) Then imax = j

Next j

Print "第"; i + 1; "行"; "最大值为"; a(i, imax); "下标为"; "("; i; imax; ")"

Next i

End Sub

30、声明一个整型的二维数组a(1 to 4,1 to 4),用随机函数产生各元素,范围介于[1,20]之间,编程将第1行和第3行对应元素交换。

Private Sub Form_Click()

Dim a%(1 To 4, 1 To 4), i%, j%

Print "排序前:"

For i = 1 To 4

For j = 1 To 4

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

Print Tab(j * 4); a(i, j);

Next j

Print

Next i

Print "排序后:"

For j = 1 To 4

t = a(1, j): a(1, j) = a(3, j): a(3, j) = t

Next j

For i = 1 To 4

For j = 1 To 4

Print Tab(j * 4); a(i, j);

Next j

Print

Next i

End Sub

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

Dim Tag As Boolean, i%

Tag = True

For i = 2 To x - 1

If (x Mod i) = 0 Then Tag = False

Next i

If Tag Then sushu = x

End Function

Private Sub Command1_Click()

Dim i%, k%

For i = 100 To 1000

If sushu(i) Then List1.AddItem i

Next i

Sum = 0

For k = 0 To List1.ListCount - 1

Sum = Sum + Val(List1.List(k))

Next k

Label1 = ",100,1000,内所有素数和为:" & Sum End Sub

32、随机生成一个整型的二维数组,范围在[10,20]之间,以上三角形式输出该数组。 Dim a%(4, 4), i%, j%

Private Sub Form_ Activate ()

For i = 0 To 4

For j = 0 To 4

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

Print a(i, j); "";

Next j

Print

Next i

End Sub

Private Sub Command2_Click() …上三角形式输出 For i = 0 To 4

Print Tab((i + 1) * 4);

For j = i To 4

Print a(i, j); "";

Next j

Print

End Sub

Private Sub Command3_Click() ……下三角形式输出 For i = 0 To 4

For j = 0 To i

Print a(i, j); "";

Next j

Print

Next i

相关主题
相关文档
最新文档