首页 vb程序设计

vb程序设计

举报
开通vip

vb程序设计四、编程题(46道小题,共266分) 1、求100以内的素数。 Private Sub Form_Click() Dim i%, j% For i = 2 To 100 For j = 2 To i - 1 If i Mod j = 0 Then Exit For Next j If j = i Then Print i Next i End Sub 2、从键盘输入任意长度的字符串,要求将字符顺序倒置,例如,将输入的“ABCDEFG”变换成“GFEDCBA”。 Private Sub Command1_Click(...

vb程序设计
四、编程题(46道小题,共266分) 1、求100以内的素数。 Private Sub Form_Click() Dim i%, j% For i = 2 To 100 For j = 2 To i - 1 If i Mod j = 0 Then Exit For Next j If j = i Then Print i Next i End Sub 2、从键盘输入任意长度的字符串,要求将字符顺序倒置,例如,将输入的“ABCDEFG”变换成“GFEDCBA”。 Private Sub Command1_Click() Dim a$, I%, c$, d$, n% a = InputBox$("输入字符串") 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 Print a End Sub 3、计算0~200之间所有能被11或5整除的数之和 Private Sub Form_Click() Dim n%, i% n = 0 For i = 1 To 200 If i Mod 11 = 0 Or i Mod 5 = 0 Then n = n + i End If Next i Print n End Sub 4、输入一年份,判断它是否为闰年,并显示有关信息。(判断闰年的条件是:年份能被4整除但不能被100整除,或者能被400整除) Private Sub Command1_Click() Dim y% y = InputBox("请输入年数") 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 5、已知x,y,z 3个变量中存放了3个不同的数,比较它们的大小并进行调整,使得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 6、求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 7、计算100~300之间所有能被3和7整除的数之和。 Private Sub Form_Click() For i = 100 To 300 If i Mod 21 = 0 Then s = s + i Print i; End If Next i Print Print "s="; s End Sub 9、找出被3、5、7除,余数为1的最小的5个正整数。 Private Sub Command1_Click() Dim CountN%, n% CountN = 0 n = 1 Do n = n + 1 If n Mod 3 = 1 And n Mod 5 = 1 And n Mod 7 = 1 Then Print n CountN = CountN + 1 End If Loop Until CountN = 5 End Sub 10、某次歌曲大奖赛,有7个评委。如果分别输入7个评委对某个参赛者的打分数,按照去掉一个最高分和一个最低分的计算办法,求出该参赛者的平均得分。 Private Sub Command1_Click() Dim mark!, max!, min!, aver!, i% aver = 0 For i = 1 To 7 mark = InputBox("输入第" & i & "位评委的打分") If i = 1 Then max = mark: min = mark Else If mark < min Then min = mark If mark > max Then max = mark End If aver = aver + mark Next i aver = (aver - min - max) / 5 Print aver End Sub 11、编程显示100~500之间所有的水仙花数之和。(水仙花数是3位数,其各位数之和等于该数本身) Private Sub Form_Click() Dim i%, s%, s1%, s2%, s3%, a! a = 0 For i = 0 To 400 s = 99 + i s1 = (s Mod 100) \ 10 s2 = s Mod 10 s3 = s \ 100 If s1 ^ 3 + s2 ^ 3 + s3 ^ 3 = s Then a = s + a End If Next i Print a End Sub 12、随机产生一个三位正整数,然后逆序输出,产生的数与逆序数同时显示。例如,产生246,输出是642。 Dim a%, m%, b%, c%, d% Private Sub Form_Click() a = Int(Rnd * 900 + 100) Print a d = (a Mod 10) * 100 b = (a Mod 100) - (a Mod 10) c = a \ 100 m = c + b + d Print m End Sub 13、从键盘输入三角形的三条边a,b,c的值,根据其数值,判断能否构成三角形。 Private Sub Form_Click() Dim a%, b%, c% a = Val(InputBox("input a")) b = Val(InputBox("input b")) c = Val(InputBox("input c")) If a + b > c And a + c > b And b + c > a Then MsgBox ("能构成三角形") Else MsgBox ("不能构成三角形") End If End Sub 14、已知数组a(),编程删除a中第5个元素。数组a中的元素分别为{12,6,4,89,75,63,100,20,31}。 Private Sub Form_Click() Dim a(), i%, n% a = Array(12, 6, 4, 89, 75, 63, 100, 20, 31) n = UBound(a) For i = 0 To n Print a(i); Next i Print For i = 5 To n a(i - 1) = a(i) Next i n = n - 1 ReDim Preserve a(n) For i = 0 To n Print a(i); Next i Print End Sub 15、随机生成一个整型的二维数组,范围在[10,20]之间,以上三角形式输出该数组。(下三角、全部元素)Dim a%(4, 4) Dim a%(4, 4) Private Sub Command1_Click() Picture1.Cls For i = 0 To 4 For j = i To 4 Picture1.Print Tab(j * 6); a(i, j); Next j Picture1.Print Next i End Sub Private Sub Form_Load() For i = 0 To 4 For j = 0 To 4 a(i, j) = Int(Rnd * 11 + 10) Next j Next i End Sub 16、利用随机函数生成一个4×4的矩阵(即二维矩阵),范围是[20,50]内的整数,输出每行中的最大值和下标。 Private Sub Form_Click() Dim a%(3, 3), s0%, s1%, s2%, s3%, b0%, b1%, b2%, b3% Max = 40 For i = 0 To 3 For j = 0 To 3 a(i, j) = Int(Rnd * 31 + 20) Print Tab(j * 5); a(i, j); If a(0, j) >= Max Then s0 = a(0, j): b0 = j If a(1, j) >= Max Then s1 = a(1, j): b1 = j If a(2, j) >= Max Then s2 = a(2, j): b2 = j If a(3, j) >= Max Then s3 = a(3, j): b3 = j Next j Next i Print Print " 第一行"; s0; "("; 0; b0; ")" Print " 第二行"; s1; "("; 1; b1; ")" Print " 第三行"; s2; "("; 2; b2; ")" Print " 第四行"; s3; "("; 3; b3; ")" End Sub 18、输入一系列字符串,编程求出长度最大的字符串并输出其所对应的次序。 20、输入一系列字符串,将字符串按递减次序排列。请编程实现。 21、随机产生10个[30,100]内的整数,求最大值、最小值和平均值。 Dim a(1 To 10) As Integer, amin, amax, i%, avera! Private Sub Form_Click() For i = 1 To 10 a(i) = Int(Rnd * 71 + 30) Next i amin = a(1) amax = a(1) avera = a(1) For i = 2 To 10 If a(i) > amax Then amax = a(i) If a(i) < amin Then amin = a(i) avera = avera + a(i) Next i For i = 1 To 10 Print a(i); Next i Print Print "max="; amax, "min="; amin, "avera="; avera / 10 End Sub 22、定义三个4×4的二维数组A,B,C,A和B中的元素均随机生成,数组A的范围是1~20,数组B的范围是100~200,数组C是A和B相乘得到的。请编程生成并输出A,B,C。(相加)Dim a%(3, 3), b%(3, 3), c%(3, 3) Private Sub Command1_Click() Picture1.Cls For i = 0 To 3 For j = 0 To 3 Picture1.Print Tab(j * 6); a(i, j); Next j Picture1.Print Next i End Sub Private Sub Command2_Click() Picture2.Cls For i = 0 To 3 For j = 0 To 3 Picture2.Print b(i, j); ""; Next j Picture2.Print Next i End Sub Private Sub Command3_Click() Picture3.Cls For i = 0 To 3 For j = 0 To 3 Picture3.Print Tab(j * 7); c(i, j); Next j Picture3.Print Next i End Sub Private Sub Form_Load() 23、随机产生15个小写字母,放在字符数组中。提示:c=chr(int(rnd*26+97)) Private Sub Command1_Click() Dim c$(14), i% Picture1.Cls For i = 0 To 14 c(i) = Chr(Int(Rnd * 26 + 97)) Next i For i = 0 To 14 Picture1.Print c(i); Next i End Sub 26、利用随机函数生成一个4×4的矩阵(即二维矩阵),范围是[20,50]内的整数,求它的两条对角线上元素之和。 Private Sub Form_Click() Dim a%(3, 3) For i = 0 To 3 For j = 0 To 3 a(i, j) = Int(Rnd * 31 + 20) Print Tab(j * 5); a(i, j); Next j Next i s = a(1, 1) + a(2, 2) + a(3, 3) + a(0, 0) + a(0, 3) + a(1, 2) + a(2, 1) + a(3, 0) Print Print "两对角线上元素之和为:"; s End Sub 27、利用随机函数生成一个4×4的矩阵(即二维矩阵),范围是[40,80]内的整数,求它的最小值及所对应的下标。 Private Sub Form_Click() Dim a%(3, 3) Min = 80 For i = 0 To 3 For j = 0 To 3 a(i, j) = Int(Rnd * 41 + 40) Print Tab(j * 5); a(i, j); If a(i, j) <= Min Then Min = a(i, j): b = i: c = j End If Next j Next i Print Print "最小值为"; Min Print "其下标为"; "("; b, c; ")" End Sub 30、编程输出n行杨辉三角图形,n由键盘输入。 Private Sub Command1_Click() n = Text1.Text ReDim a(1 To n, 1 To n) For i = 1 To n For j = 1 To n a(i, 1) = 1 If i = j Then a(i, j) = 1 Next j Next i For i = 2 To n For j = 2 To n a(i, j) = a(i - 1, j - 1) + a(i - 1, j) Next j Next i For i = 1 To n For j = 1 To i Picture1.Print a(i, j); " "; Next j Picture1.Print Next i End Sub 31、声明一个整型的二维数组a(1 to 4,1 to 4),用随机函数产生各元素,范围介于[1,20]之间,编程将第1行和第3行对应元素交换。 Dim a%(1 To 4, 1 To 4), t% Private Sub Command1_Click() Picture1.Cls For i = 1 To 4 For j = 1 To 4 Picture1.Print Tab(j * 4); a(i, j); Next j Picture1.Print Next i End Sub Private Sub Command2_Click() For i = 1 To 4 For j = 1 To 4 t = a(1, j): a(1, j) = a(3, j): a(3, j) = t Picture2.Print Tab(j * 4); a(i, j); Next j Picture2.Print Next i End Sub Private Sub Form_Load() For i = 1 To 4 For j = 1 To 4 a(i, j) = Int(Rnd * 20 + 1) Next j Next i End Sub 33、编写一个过程计算并输出区间[100,1000]内所有素数的和(要求判断素数使用过程(函数或子过程)来实现。调用该过程。(提示:只能被1和自身整除的自然数称为素数。) Function sushu%(ByVal x%)  Dim m%, Tag As Boolean, i%   m = Val(x)   Tag = True   For i = 2 To m - 1   If (m 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 35、已知一维数组a()中的元素已排序,分别为{12,15,21,25,27,35,36,39,48,52},编程将30插入数组a,并使a依然有序。 Private Sub Command1_Click() Dim a(), i%, k%, x%, n% a = Array(12, 15, 21, 25, 27, 35, 36, 39, 48, 52) n = UBound(a) x = Val(Text1) For k = 0 To n 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 i End Sub 40、编一子过程ProcMin,求一维数组a中的最小值,子过程的形参自己确定。 Private Sub Form_Click() Dim a(1 To 10), amin, i% For i = 1 To 10 a(i) = Int(Rnd * 101) Print a(i); Next i Call ProcMin(a(), amin) Print Print "amin ="; amin End Sub Sub ProcMin(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 41、编一个冒泡排序法子过程,对已知的若干整数按递减次序排列。提示:子过程的形式为sub sort1(a%())。 提示:子过程的形式为sub sort1(a%())。 Private Sub Command1_Click() Dim b%(10), i% Print "排序前" For i = 0 To 9 b(i) = Int(Rnd * 100) Print b(i); Next i Print Print "排序后" Call sort(b()) End Sub Sub sort(a%()) Dim i%, m%, n%, min%, j% n = UBound(a) For i = 0 To n - 1 For j = 0 To n - 1 - i If a(j) < a(j + 1) Then m = a(j): a(j) = a(j + 1): a(j + 1) = m Next j Next i For i = LBound(a) To UBound(a) - 1 Print a(i); Next i End Sub 43、编一个选择排序法子过程,对已知的若干整数按递增次序排列。提示:子过程的形式为sub sort1(a%())。 Private Sub Command1_Click() Dim b%(10), i% Print "排序前" For i = 1 To 10 b(i) = Int(Rnd * 100) Print b(i); Next i Print Print "排序后" Call sort(b()) End Sub Sub sort(a%()) Dim i%, m%, n%, min%, t% n = UBound(a) For i = 0 To n - 1 min = i For j = i + 1 To n If a(j) < a(min) Then min = j Next j m = a(i): a(i) = a(min): a(min) = m Next i For i = LBound(a) To UBound(a) Print a(i); Next i End Sub 45、编一个冒泡排序法子过程,对已知的若干整数按递增次序排列。提示:子过程的形式为sub sort1(a%())。 Private Sub Command1_Click() Dim b%(10), i% Print "排序前" For i = 0 To 9 b(i) = Int(Rnd * 100) Print b(i); Next i Print Print "排序后" Call sort(b()) End Sub Sub sort(a%()) Dim i%, m%, n%, min%, j% n = UBound(a) For i = 0 To n - 1 For j = 0 To n - 1 - i If a(j) > a(j + 1) Then m = a(j): a(j) = a(j + 1): a(j + 1) = m Next j Next i For i = LBound(a) + 1 To UBound(a) Print a(i); Next i End Sub
本文档为【vb程序设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_298604
暂无简介~
格式:doc
大小:83KB
软件:Word
页数:12
分类:工学
上传时间:2011-05-25
浏览量:212