版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、VB 程 序 填 空 复 习 题二级VB程序设计练习程序填空1.下面程序按每行10个数打印出30个介于-300到300间 无重复的随机整数,并显示其中的最小值。数组b(30)存放所产生的无重复的随机整数,运行结果如图所示。瓯 Fermi160 87 -233 -226 213 -124 E3T -B9 1& 10?230 -ITS -B9 194 -84 248 296 段 294 160-300-30030 -Z40 -13 -114 -235120 -46ComiftandlPrivate Sub Command1_Click()Dim b(30), j As Integer, k As
2、IntegerDim y As Integer, x As Single, min As IntegerFor j = 1 To 30lb:x = RndIf x 0.5 Then y = 1 Else y = -1b(j) = y * Int(Rnd*301)k = 1Do While kjIf b(j) = b(k) Then Goto lbk = k + 1LoopPrint b(j);If j Mod 10=0 Then PrintNext jmin = b(1)For j = 1 To 30If b(j) min Then min=b(j)Next jPrint minEnd Sub
3、2,下面程序用于对9位的准考证号进行校验。参数mno存放准考证号,mjy存放产生的校验位,tag判断校验正确 否,若校验正确tag置1,否则为0o产生校验位的算法 为:取准考证号右边的8位之和关于9的模作为校验值, 准考证号最左边的一位为校验位。Public Sub foe(ByVal mno As String, mjy As Integer, Tag As Integer)Dim msum As Integer, m As Stringmsum = 0for j=2 to 9m = Mid(mno, j, 1) msum = msum + Val(m) Next jmjy = msum m
4、od 9If mjy = val(left(mno,1)ThenTag = 1ElseTag = 0End IfEnd SubCommand1_Click事件用于调用foe子过程,对输入到文 本框Text1的准考证号进行校验,如果校验正确,显示“正 确”,否则显示“错误”,同时显示正确的校验码。Private Sub Command1_Click()Dim nn As Integer, mtag As IntegerIf Len(Text1) 9 Or Not IsNumeric(Text1) Then MsgBox 非法数据,请重新输入!Text1 =Text1.SetFocusExit S
5、ubEnd IfCall foe(Text1, nn, mtag)If mtag ThenPrint 正确 ElsePrint 错误” ;nnEnd IfEnd Sub3 .下面的程序按从小到大的顺序随机产生不超过20个介于100到400 (包括100、400)的数,每次产生的一个数总大 于它前面已产生的数,然后求产生的数的平均值。数组 b(20)用于存放所产生的随机数,运行结果如图所示。312 335 345 359 369 3S& 400 vrtr- 3昵Conm4ndl la IMI 1*K liiBIII 1 IIB JPrivate Sub Command1_Click()Dim b
6、(20), i As Integer, j As Integer, sum As Single j = 1Dore:b(j) = Int (Rnd*301+100)If b(j) = 400 Or j = 20 Then Exit DoElseIf b(j) = b(j - 1) ThenGoTo reEnd Ifj=j+1Loopsum = 0For i = 1 To jPrint b(i);Sum=sum+b(i) Next iPrint aver=; sum/j End Sub4 .新的身份证号由18位组成,最低位(右边)为校验位, 其算法是:10-(前17位之和关于10的模)。函数fo
7、e用 于对18位的身份证进行校验。参数 mstr存放身份证号, md为产生的校验位,若校验正确,函数返回“True,否则返回“False”。Public Function foe(ByVal mstr$, md%) As Boolean Dim mp As String, msum As Integer msum = 0For i=1 To 17mp = Mid(mstr, i, 1)msum = msum + Val(mp) Next imd = 10 - msum mod 10If md = val(right(mstr,1) Thenfoe = TrueElsefoe = FalseEn
8、d IfEnd FunctionCommand1_Click事件用于调用foe子过程,对输入到文 本框Text1的身份证号进行校验,如果校验正确,显示“True”,否则显示“False”和的校验码值。Private Sub Command1_Click()Dim mm As IntegerIf Len(Text1) 18 Or Not IsNumeric(Text1) ThenMsgBox 非法数据,请重新输入!Text1 =Text1.SetFocusExit SubEnd IfIf foe(Text1, mm) = True ThenPrint TrueElsePrint “False ”
9、 ;mmEnd IfEnd Sub5.End Sub本程序随机产生N (15)个A到J的大写字母,按字 母降序排序后,将连续出现的字用压缩形式显示。例如, 连续5个H字母显示为5*H ,参见图例。数组a()用于存放 随机产生的字母。Private Sub Command1_Click()Const N = 15Dim a(1 To N) As String * 1, cDim count%, i%, j%, k%For i = 1 To Na(i) = Chr(Int( Rnd*10+65 )Print a(i);Next iPrintFor i = 1 To N - 1k = iFor j
10、= i+1 To NIf a(j) a(k) Then k=jNext jc = a(i): a(i) = a(k): a(k) = cNext iFor i = 1 To NPrint a(i);Next iPrinti = 1Do While i = Ncount = 1If i N Then j = i + 1Do While a(i) = a(j)count = count+1If j N Then j = j + 1 Else Exit DoLoopIf count = 1 Then Print a(i); ; Else Print count; *; a(i);i = i+coun
11、tLoopEnd Sub6.本程序的功能是在窗体随机产生10个长度为120之间的大写字母字符串,并同时显示最长字符串的字符数及内容,如图所示。Private Sub Command1_Click()ClsDim st(1 To 10) As String, c As String * 1Dim i%, n%Fori = 1 To 10、Form)Jr xForj = 1 To n c = Chr(Int(Rnd * 26 + 65) st=Next jPrint st(i)Next imaxlen = 0 maxstr =Fori = 1 To 10If Thenmaxlen = Len(st
12、(i) maxstr =End If Next iMG2ZGTMXAANMVCWQDLBT KNIWKMYOGDLWBQP WK TQYF 1IPU TXVCPMUXWGQNU JSNOMJSPSZ WXNPPIT QEPXOKYDFPMQX15TXVCPXKWUXWGQNUEnd Sub7.两素数的差为2,称此对素数为素数对,下列程序是成对显示100以内的素数对。其中,的功能是判断参数 m是否为素数,若是返回 True,否则返回False。isPPublic Function isP(m) As BooleanDim i%For i = 2 To Int(Sqr(m)If Then IsP
13、= FalseNext iEnd FunctionPrivate Sub Command1_Click()Dim i%p1 = IsP(3)第一个可能的素数For i =p2 = IsP(i)If Then Print i 2, i相邻的两个是素数,则打印pl =Next iEnd Sub处理下一个素数8 .本程序的功能是求100以内的素数,结果分三列输出,如样例所示。算法思想:从7 9- I 3 T 9 T27124567 9JJ 9 13 9 13 3 11 3 4 5 T 8-5口233717S17399Commandl i2开始,对每一个数判断是否是素数,若是就输出,否则就继续,直至到
14、100。Private Sub Command1_Click()Dim n As Integer, m As Integer, i As IntegerMe.ClsFor n = 2 To 100 For m = 2 To n - 1If= 0 ThenEnd IfNext mIfThenPrint n, i = i + 1If i Mod 3 = 0 ThenEnd IfNext n End Sub9 .子过程isH的功能是判断正整数n是否是回文数,若为回文数,则参数 Tag返回True。单击命令按钮,输出随机产生的10个10, 100之间的回文数(数字左右对称的正整数称为回文数)%, Fo
15、rmlJnj2lTTT是回文数474是回文数55号回文数303是回文数1T1是回文飘Coinmaiidl !Private Sub Command1_Click() Dim nn%, t As Boolean, i% For i = 1 To 10nn = Int(Rnd * 991 + 10)CallIf t Then Print nn;是回文数Next iEnd SubSub isH(ByVal n As Integer,)Dim length%, i%, s1$s1 = Trim(Str(n) tag = length =For i = 1 To length 2If Mid(s1, i
16、, 1) Then tag = FalseNext iEnd Sub10 .本程序的功能是判断一个5位数的最后二位构成的数是否为素数。在窗体的文本框Text1中输入一个5位数,判断该数的第4、5二位构成的数是否为素数,若是显示“是素数”否则为“非素数”。例如32517最后二17构成的数是素数。Private Sub Command1_Click() Dim tag As Boolean m = m = Val(m)For i = 2 ToIf= 0 Then tag = FalseNext iIfThenPrint m;是素数ElsePrint m;非素数End If End Sub11 .随
17、机产生100个在闭区间30, 80之间的整数,存放于数组a中;并将其中大于 50的偶数再存于数组b中;然后,对数组b用冒泡法从大到小排序后输出。子过程 Output的功能是按每行十个元素输出数组内容。Private Sub Form_Click()Dim a(1 To 100) As Integer, b(100) As Integer, m As Integer, n As Integer Randomize n = 0 For i = 1 To 100 a(i) = Int(Rnd * 51 + 30) If a(i) Mod 2 = 0Thenn = n + 1 b(n)= End If
18、Next iCall Output(a(), 100) For i = 1 To For j = 1 To n - i IfThent = b(j): b(j) = b(j + 1): b(j + 1) = t End If Next jNext i Call End Sub Private Sub Output(x() As Integer, t As Integer)Print 数组输出:For i = 1 To tPrint x(i);If i Mod 10 = 0 Then Print Next i Print End Sub12.本程序的功能是用于判断输入的正整数是否为升序数。使用输
19、入对话框输入数据,判断 结果显示在标签框Lable1中。设正整数n-dd-pm,如果dv=d+1(i=1,2,m-1),则n是个升序数(即右边的数字大于等于左边的数字),如:1269, 448是升序数,而2485不是升序数。密判断升序数Private Sub Form_Click()Dim n As String, flag As Boolean n = (请输入正整数”)flag =For I = 1 To Len(n) - 1If Mid(n, I, 1) Thenflag = FalseEnd IfThenNext iIfLabel1.Caption = n &ElseLabel1.Ca
20、ption = n &End IfEnd Sub13.下列程序将给定范围内的偶数(大于等于“是升序数”“不是升序数”4),表示为两个素数之和。图例所示为输入10和30后运行结果。函数子过程fun()的功能是判断数值n是否是为素数,若是返回1,否则返回0Private Sub Command1_Click()Dim a%, b%, i%, c%, d%a = Val(Textl.Text): b = Val(Text2.Text)IfThent = a: a = b: b = tEnd IfFor i = a To b Step 2Doc = c + 2d = i - cLoop Until=
21、1Picture1.Print i; =; c; +; dNext iEnd SubFunction fun(n As Integer)Dim x!, k%For k = 2 To n - 1If n Mod k = 0 Thenfun = 0End IfNext kEnd Function14.下面程序的功能是统计文本框中每个数字字符 (“0” - “9”)出现的次数。用num(0)来存放字符“0”的个数,用num(1)来存放字符“1”的个数,用num(9)来存放字符“9” 的个数。字符串由用户在文本框中输入,结果在图形框中输出 Forml字字字字字字字出琉次数为 出现淡数为 出现我豕为 出
22、现次数为出现次数为出现汰数为1221lel8233056687887B匚dto工ndlPrivate Sub Command1_Click()Dim num(9) As IntegerDim i%, m%, j%, c As String * 1, s$ m =For i = 1 To mc = Mid(Text1.Text, i, 1)IfThenj = Val(c)End IfNext iFori = 0 To 9IfThenPicturel.Print 数字; 出现次数为;num(i)End If Next i End Sub15 .下列程序将求出10000之内的同构数。并且在窗体标题栏
23、上显示找到同构数的个数,如图所示。所谓同构数是指,该整数会出现在其平方数的最右端。例如: 6出现在36的最右端,76出现在5776的最右端。子函数judge()的功能是判定同构数,若是judge返回True,否则返回False。判定同构数算法思想:将数 n逐位与n的平方数相同位置上的值相 比较。的1口。口口以内的同构蠹- x|同构数同枸数的平方25360255776M137&Private Sub Command1_Click()Dim i As Long m = 0For i = 1 To 10000IfThenm = m + 1 Listl.AddItem Str(i) List2.Add
24、Item Str(i * i)End If Next i= 10000以内的同构数:& m & 个End SubPrivate Function judge(ByVal n As Long) As BooleanDim n2 As Long n2 = n * n judge = True Do WhileIf (n Mod 10) =Thenn = n 10n2 = n2 10 ElseExit DoEnd IfLoopEnd Function16 .下列程序中的子过程fenge用于实现函数split()的功能(字符分离到数组)。通过在文本框中输入一个以逗号分隔的数字序列,按回车后调用过程fe
25、nge,将数字序列分离后,转换为数值型数据存放于数组shuzhi()中,并在Picturebox中输出该数组的所有值(假设不存在输入错误,输入的数字元素个数在100个以内)Private Sub Text1_KeyPress(KeyAscii As Integer)If KeyAscii = 13 ThenCall fenge( )End IfEnd SubPrivate Sub fenge(stU)Dim i As Integer, j As Integer, shuzhi(100) As Single i = 0j = InStr(str1, ,)检测第一个逗号的位置Do While j
26、0shuzhi(i) = Val()分离数字序列str1 = Mid()i = i + 1j = InStr(str1, ,)Loop最后一个数字Forj = 0 To iNext jEnd Sub17.下列程序完成如下功能:在文本框中输入一个20以内的正整数N,单击“开始”按钮后,判断输入的有效性,如果文本框中输入数越界,给出如图所示的相关提示,并要求重新 输入,否则随机产生一个大写英文字母,然后以此英文字母为首字母,连续循环变化,输出 一个N*N的字符矩阵,并显示“首字母 X的N阶字符矩阵”的说明,图示为首字母 K的8 阶字符矩阵。L Forml首字母R的&阶字符矩阵fxFHVDLTMyD
27、LTBTRw u c K s AI Qltb-trzkf工程L输入一个20以内的正整数输入一TRi以内的正整数Private Sub Command1_Click()Dim i%, k%, n%n = Val(Text1)If n 20 ThenText1 =Text1.SetFocusExit SubEnd Ifs = Int(Rnd * 26) + 65随机产生一个大写字母的 Ascii码Labell =首字母& 的& n & 阶字符矩阵ClsPrint: Printk =以下输出N*N的字符矩阵,K为字符控制变量For i = 1 To nPrint Tab(5);For j =Prin
28、t Chr(65 + k); Space(1);k = k + 1If对字符控制变量进行处理Next jPrintNext iEnd Sub21.,最后输出格将100至150之间的偶数,拆分成两个素数之和(只要一对就可以了)prime用于判断一个数是否为素数式如图所示。函数子过程计算偶数由两素数组成日叵又3 133 7 9931 77000000 1-1 Orf 9 1 1 1- 1 JI 1 15 3533S3353 -=8 0246002461 o o o o o 1 1 I 1 1 -a-I I u-I -a-I I -a-I -a-I t-I IPrivate Function pri
29、me(ByVal x As Integer) As BooleanDim i As Integerprime =For i = 2 To Sqr(x)If Thenprime = FalseExit FunctionEnd IfNext iEnd FunctionPrivate Sub Form_Click()Dim i As Integer, k As Integer, n As IntegerClsi = 1For n =For k = 3 To n / 2If prime(k) AndThenPrint i; :; n; =; k; +; n - kExit ForEnd IfNext
30、kNext nEnd Sub下列程序完成如下功能:在文本框中输入英语句子,每个单词后加一个空格,当按下回 车键(回车的Ascii码为13)后结束输入,并将文本框中的内容分离成单词按字典排列方式 显示在列表框Listl中。要求列表框中存放的单词不重复出现。算法思想:用一个变量存放输入的英语句子,通过查找空格位置分离出左边的一个单词,再 在列表框中检查该单词是否存在,若不存在,按字典排列方式插入到列表框中;然后截去英 语句子中第一个单词后,重复上上述过程。例如,变量st的值为“ It is a book”,分离出第一个单词“it”存放在变量word内,根据 要求加入到列表框中;再使 st的值为“i
31、s a book,重复相同处理过程。单闻可天前力文本Lt 1 s am theinthe 7frLd0114时力irl rlPrivate Sub Text1_KeyPress(KeyAscii As Integer) Dim st$, word$, i%, inspc%IfThenst = Trim(Text1) & inspc = InStr(st,)Do While inspc 0word =For i = 0 To List1.ListCount - 1If word = List1.List(i) ThenExit ForElseIf word ,将整数转化为逆向排列的字符串Dim
32、i%, a%, count%,PsircJsm:存放转换结果,初值为救值正负号strc =+Ifn Da= 2 count = count + 1 tempt count) = a n = n 10LoopFor i = count + 1 To 4 strc = strc & 0Nest iF or i = 1 To count strc = 宜Next iEnd SubPrivate Sub Cbimnandl _Click()Dim i. n As Integer,市匚 As String List 1. Clear : List2 ClearFori = 1 To 10n - Int(
33、Rnd * 10000)If Rud 0m =3+ n Mod 10n = 口 10LoopIf 4 And m i 1 Then Listl Addttem iList2.AddItemm4 = ll&i411 5End If KextiClose #1(按输出方式打开文件,设置m的初值(对n逆向排列,得到的另一个4位散色1 Mod取模运算& in /1写入到文件End Sub某学校进行学生射击比赛,按照用人射击I。次统计其成绩(环数).下列程序为通过键 盘输入报名人数及每个参赛运动员的号码与成绩为其排列名次并输出Q当输入的运动员号码 为J时,可结束输入。Option Base 1Dim y
34、() As Integer, s() As Integer1数组用干存放参赛运动员的号码与成绩Private Sub Conunandl Click QDim n%, m%, yno%, ysc%, i %, j%, t%n = InputBoxf请输入报名人数:,运动员成绩统计)ReDimy(n), s(n)m = 0 m数组元素序号,初始值For i= 1 To nyno = 1卬岫网”请输入运动员号码;运动员成绩统计i)If yao = -1 Then Exit Forysc =他KInputBoxC请输入该运动员的成绩:,运动员成绩统计)式 m) = ynos(m) =2Next iF
35、or i = 1 To 3For = i+ 1 To mIf 4 Thent = S(l): S(l) = S(J): S(j) = tt = yffl: yffl = %):如)=tEnd IfNext jNext iPrint唱次运动员号码,喊绩For i= 1 To m5Next i1吝衩排序 Forol3211 U J2J:Lon no di : 、a a /End Sub24.下面gs子过程为随机产生卬乂m个10100之间的整数构成一个m义m的方阵.并对 其主对角线上的元素利用冒泡法按降序排序.Cm*dl_C反应建件过程调用因子过程, 产生7X7的矩阵,并显示结果。Option Ba
36、se 1Prints Sub 国RandonizcF or i = 1 Tn mForj = 1 To m 也D=Netj 购=01ChNext iPrrntFori = I To tn -1FM -i41 To由f /Nest j llesrtiEnd Sub1请严格区分值传屋还是地址传届开始排序Thent-y(j): y(j)-y(i): y(i) = tP rivate Sub C cttimand. 1 Cli ckQConstN = 7玲im已汽:N,N),b加N)Call 因N 町 b()Fori三 I ToNForj = 1 To NForml .Print J, j);Ncxtj-gNest iPiitT排序后的主对角线元素”Fofi=_l T01JForml .Print bQ);Nrt jEM Suh1按矩阵形式输出矩阵文本文件解密程序。解密函数过程Decode将字符串Code中的小写字母减序数k(K在19范围刃),其它 字符不变,结果存放在函数过程名中.CoEndl_Clic的事件过程利用通用对话框打开欲解密的文本文件,逐字符读入、并转换 成小写字百均1 T次t2文本框显示;调用解密函数过程De
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 业主和房东简单合同范本
- 基于物联网的二零二四年度智能农业解决方案购销合同
- 2024版房地产经纪咨询费合同
- 2024年度福州市二手房买卖合同全文3篇
- 2024年度工程市场调研居间合同3篇
- 麻醉相关课件
- 工程总承包中的联合体协议
- 个人投资简单的协议书范本
- 2024年度云计算服务合同:企业客户与云服务提供商的长期合作协议
- 2024年度租赁合同:办公场所租赁服务3篇
- GB/T 43570-2023民用无人驾驶航空器系统身份识别总体要求
- 人工智能在航空领域的应用
- 小学数学“大单元”教学的现状及改善对策
- 不同结构游戏材料与幼儿游戏行为的关系研究
- 北京市海淀区第二实验小学2022-2023学年度五年级上学期期末诊断数学试题
- 教科版五年级科学上册第三单元测试卷附答案
- 电梯高处施工方案
- 心理团体辅导的保密协议
- 高血压病教学查房教案
- 东方绿洲军训日记500字(八篇)
- 医院护理培训课件:《根本原因分析-RCA-从错误中学习》
评论
0/150
提交评论