VB程序填空复习题.docx
- 文档编号:5011333
- 上传时间:2023-05-07
- 格式:DOCX
- 页数:29
- 大小:296.85KB
VB程序填空复习题.docx
《VB程序填空复习题.docx》由会员分享,可在线阅读,更多相关《VB程序填空复习题.docx(29页珍藏版)》请在冰点文库上搜索。
VB程序填空复习题
二级VB程序设计练习
程序填空
1.下面程序按每行10个数打印出30个介于-300到300间无重复的随机整数,并显示其中的最小值。
数组b(30)存放所产生的无重复的随机整数,运行结果如图所示。
PrivateSubCommand1_Click()
Dimb(30),jAsInteger,kAsInteger
DimyAsInteger,xAsSingle,minAsInteger
Forj=1To30
lb:
x=Rnd
Ifx>0.5Theny=1Elsey=-1
b(j)=y*Int(Rnd*301)
k=1
DoWhilek Ifb(j)=b(k)ThenGotolb k=k+1 Loop Printb(j); IfjMod10=0ThenPrint Nextj min=b (1) Forj=1To30 Ifb(j) Nextj Printmin EndSub 2.下面程序用于对9位的准考证号进行校验。 参数mno存放准考证号,mjy存放产生的校验位,tag判断校验正确否,若校验正确tag置1,否则为0。 产生校验位的算法为: 取准考证号右边的8位之和关于9的模作为校验值,准考证号最左边的一位为校验位。 PublicSubfoe(ByValmnoAsString,mjyAsInteger,TagAsInteger) DimmsumAsInteger,mAsString msum=0 forj=2to9 m=Mid(mno,j,1) msum=msum+Val(m) Nextj mjy=msummod9 Ifmjy=val(left(mno,1))Then Tag=1 Else Tag=0 EndIf EndSub Command1_Click事件用于调用foe子过程,对输入到文本框Text1的准考证号进行校验,如果校验正确,显示“正确”,否则显示“错误”,同时显示正确的校验码。 PrivateSubCommand1_Click() DimnnAsInteger,mtagAsInteger IfLen(Text1)<>9OrNotIsNumeric(Text1)Then MsgBox"非法数据,请重新输入! " Text1="" Text1.SetFocus ExitSub EndIf Callfoe(Text1,nn,mtag) IfmtagThen Print"正确" Else Print“错误”;nn EndIf EndSub 3.下面的程序按从小到大的顺序随机产生不超过20个介于100到400(包括100、400)的数,每次产生的一个数总大于它前面已产生的数,然后求产生的数的平均值。 数组b(20)用于存放所产生的随机数,运行结果如图所示。 PrivateSubCommand1_Click() Dimb(20),iAsInteger,jAsInteger,sumAsSingle j=1 Do re: b(j)=Int(Rnd*301+100) Ifb(j)=400Orj=20Then ExitDo ElseIfb(j)<=b(j-1)Then GoTore EndIf j=j+1 Loop sum=0 Fori=1Toj Printb(i); Sum=sum+b(i) Nexti Print"aver=";sum/j EndSub 4.新的身份证号由18位组成,最低位(右边)为校验位,其算法是: 10-(前17位之和关于10的模)。 函数foe用于对18位的身份证进行校验。 参数mstr存放身份证号,md为产生的校验位,若校验正确,函数返回“True”,否则返回“False”。 PublicFunctionfoe(ByValmstr$,md%)AsBoolean DimmpAsString,msumAsInteger msum=0 Fori=1To17 mp=Mid(mstr,i,1) msum=msum+Val(mp) Nexti md=10–msummod10 Ifmd=val(right(mstr,1))Then foe=True Else foe=False EndIf EndFunction Command1_Click事件用于调用foe子过程,对输入到文本框Text1的身份证号进行校验,如果校验正确,显示“True”,否则显示“False”和的校验码值。 PrivateSubCommand1_Click() DimmmAsInteger IfLen(Text1)<>18OrNotIsNumeric(Text1)Then MsgBox"非法数据,请重新输入! " Text1="" Text1.SetFocus ExitSub EndIf Iffoe(Text1,mm)=TrueThen Print"True" Else Print“False”;mm EndIf EndSub 5.EndSub本程序随机产生N(15)个A到J的大写字母,按字母降序排序后,将连续出现的字用压缩形式显示。 例如,连续5个H字母显示为5*H,参见图例。 数组a()用于存放随机产生的字母。 PrivateSubCommand1_Click() ConstN=15 Dima(1ToN)AsString*1,c Dimcount%,i%,j%,k% Fori=1ToN a(i)=Chr(Int(Rnd*10+65)) Printa(i); Nexti Print Fori=1ToN-1 k=i Forj=i+1ToN Ifa(j)>a(k)Thenk=j Nextj c=a(i): a(i)=a(k): a(k)=c Nexti Fori=1ToN Printa(i);""; Nexti Print i=1 DoWhilei<=N count=1 Ifi DoWhilea(i)=a(j) count=count+1 Ifj Loop Ifcount=1ThenPrinta(i);"";ElsePrintcount;"*";a(i);""; i=i+count Loop EndSub 6.本程序的功能是在窗体随机产生10个长度为1~20之间的大写字母字符串,并同时显示最长字符串的字符数及内容,如图所示。 PrivateSubCommand1_Click() Cls Dimst(1To10)AsString,cAsString*1 Dimi%,n% Fori=1To10 ____ Forj=1Ton c=Chr(Int(Rnd*26+65)) st(i)=______ Nextj Printst(i) Nexti maxlen=0 maxstr="" Fori=1To10 If_____Then maxlen=Len(st(i)) maxstr=______ EndIf Nexti ____ EndSub 7.两素数的差为2,称此对素数为素数对,下列程序是成对显示100以内的素数对。 其中,函数isP的功能是判断参数m是否为素数,若是返回True,否则返回False。 PublicFunctionisP(m)AsBoolean Dimi% Fori=2ToInt(Sqr(m)) IfThenIsP=False Nexti EndFunction PrivateSubCommand1_Click() Dimi% p1=IsP(3)'第一个可能的素数 Fori= p2=IsP(i) IfThenPrinti2,i'相邻的两个是素数,则打印 p1='处理下一个素数 Nexti EndSub 8.本程序的功能是求100以内的素数,结果分三列输出,如样例所示。 算法思想: 从2开始,对每一个数判断是否是素数,若是就输出,否则就继续,直至到100。 PrivateSubCommand1_Click() DimnAsInteger,mAsInteger,iAsInteger Me.Cls Forn=2To100 Form=2Ton–1 If=0Then EndIf Nextm IfThen Printn, i=i+1 IfiMod3=0Then EndIf Nextn EndSub 9.子过程isH的功能是判断正整数n是否是回文数,若为回文数,则参数Tag返回True。 单击命令按钮,输出随机产生的10个[10,100]之间的回文数(数字左右对称的正整数称为回文数)。 PrivateSubCommand1_Click() Dimnn%,tAsBoolean,i% Fori=1To10 nn=Int(Rnd*991+10) Call IftThenPrintnn;"是回文数" Nexti EndSub SubisH(ByValnAsInteger,) Dimlength%,i%,s1$ s1=Trim(Str(n)) tag= length= Fori=1Tolength\2 IfMid(s1,i,1)<>Thentag=False Nexti EndSub 10.本程序的功能是判断一个5位数的最后二位构成的数是否为素数。 在窗体的文本框Text1中输入一个5位数,判断该数的第4、5二位构成的数是否为素数,若是显示“是素数”否则为“非素数”。 例如,32517最后二17构成的数是素数。 PrivateSubCommand1_Click() DimtagAsBoolean m= m=Val(m) Fori=2To If=0Thentag=False Nexti IfThen Printm;"是素数" Else Printm;"非素数" EndIf EndSub 11.随机产生100个在闭区间[30,80]之间的整数,存放于数组a中;并将其中大于50的偶数再存于数组b中;然后,对数组b用冒泡法从大到小排序后输出。 子过程Output的功能是按每行十个元素输出数组内容。 PrivateSubForm_Click() Dima(1To100)AsInteger,b(100)AsInteger,mAsInteger,nAsInteger Randomize n=0 Fori=1To100 a(i)=Int(Rnd*51+30) Ifa(i)Mod2=0Then n=n+1 b(n)= EndIf Nexti CallOutput(a(),100) Fori=1To Forj=1Ton-i IfThen t=b(j): b(j)=b(j+1): b(j+1)=t EndIf Nextj Nexti Call EndSub PrivateSubOutput(x()AsInteger,tAsInteger) Print"数组输出: " Fori=1Tot Printx(i); IfiMod10=0ThenPrint Nexti Print EndSub 12.本程序的功能是用于判断输入的正整数是否为升序数。 使用输入对话框输入数据,判断结果显示在标签框Lable1中。 设正整数n=d1d2…dm,如果di<=di+1(i=1,2,…,m-1),则n是一个升序数(即右边的数字大于等于左边的数字),如: 1269,448是升序数,而2485不是升序数。 PrivateSubForm_Click() DimnAsString,flagAsBoolean n=(“请输入正整数”) flag= ForI=1ToLen(n)–1 IfMid(n,I,1)>Then flag=False EndIf Nexti IfThen Label1.Caption=n&“是升序数” Else Label1.Caption=n&“不是升序数” EndIf EndSub 13.下列程序将给定范围内的偶数(大于等于4),表示为两个素数之和。 图例所示为输入10和30后运行结果。 函数子过程fun()的功能是判断数值n是否是为素数,若是返回1,否则返回0。 PrivateSubCommand1_Click() Dima%,b%,i%,c%,d% a=Val(Text1.Text): b=Val(Text2.Text) IfThen t=a: a=b: b=t EndIf Fori=aTobStep2 Do c=c+2 d=i-c LoopUntil=1 Picture1.Printi;"=";c;"+";d Nexti EndSub Functionfun(nAsInteger) Dimx! k% Fork=2Ton-1 IfnModk=0Then fun=0 EndIf Nextk EndFunction 14.下面程序的功能是统计文本框中每个数字字符(“0”-“9”)出现的次数。 用num(0)来存放字符“0”的个数,用num (1)来存放字符“1”的个数,…,用num(9)来存放字符“9”的个数。 字符串由用户在文本框中输入,结果在图形框中输出。 PrivateSubCommand1_Click() Dimnum(9)AsInteger Dimi%,m%,j%,cAsString*1,s$ m= Fori=1Tom c=Mid(Text1.Text,i,1) IfThen j=Val(c) EndIf Nexti Fori=0To9 IfThen Picture1.Print"数字";;"出现次数为";num(i) EndIf Nexti EndSub 15.下列程序将求出10000之内的同构数。 并且在窗体标题栏上显示找到同构数的个数,如图所示。 所谓同构数是指,该整数会出现在其平方数的最右端。 例如: 6出现在36的最右端,76出现在5776的最右端。 子函数judge()的功能是判定同构数,若是judge返回True,否则返回False。 判定同构数算法思想: 将数n逐位与n的平方数相同位置上的值相比较。 PrivateSubCommand1_Click() DimiAsLong m=0 Fori=1To10000 IfThen m=m+1 List1.AddItemStr(i) List2.AddItemStr(i*i) EndIf Nexti ="10000以内的同构数: "&m&"个" EndSub PrivateFunctionjudge(ByValnAsLong)AsBoolean Dimn2AsLong n2=n*n judge=True DoWhile If(nMod10)=Then n=n\10 n2=n2\10 Else ExitDo EndIf Loop EndFunction 16.下列程序中的子过程fenge用于实现函数split()的功能(字符分离到数组)。 通过在文本框中输入一个以逗号分隔的数字序列,按回车后调用过程fenge,将数字序列分离后,——转换为数值型数据存放于数组shuzhi()中,并在Picturebox中输出该数组的所有值(假设不存在输入错误,输入的数字元素个数在100个以内)。 PrivateSubText1_KeyPress(KeyAsciiAsInteger) IfKeyAscii=13Then Callfenge() EndIf EndSub PrivateSubfenge(str1) DimiAsInteger,jAsInteger,shuzhi(100)AsSingle i=0 j=InStr(str1,",")‘检测第一个逗号的位置 DoWhilej>0 shuzhi(i)=Val()‘分离数字序列 str1=Mid() i=i+1 j=InStr(str1,",") Loop ‘最后一个数字 Forj=0Toi Nextj EndSub 17. 下列程序完成如下功能: 在文本框中输入一个20以内的正整数N,单击“开始”按钮后,判断输入的有效性,如果文本框中输入数越界,给出如图所示的相关提示,并要求重新输入,否则随机产生一个大写英文字母,然后以此英文字母为首字母,连续循环变化,输出一个N*N的字符矩阵,并显示“首字母X的N阶字符矩阵”的说明,图示为首字母K的8阶字符矩阵。 PrivateSubCommand1_Click() Dimi%,k%,n% n=Val(Text1) Ifn<1Orn>20Then Text1="" Text1.SetFocus ExitSub EndIf s=Int(Rnd*26)+65‘随机产生一个大写字母的Ascii码 Label1="首字母"&"的"&n&"阶字符矩阵" Cls Print: Print k=‘以下输出N*N的字符矩阵,K为字符控制变量 Fori=1Ton PrintTab(5); Forj= PrintChr(65+k);Space (1); k=k+1 If‘对字符控制变量进行处理 Nextj Print Nexti EndSub 18. 将100至150之间的偶数,拆分成两个素数之和(只要一对就可以了),最后输出格式如图所示。 函数子过程prime用于判断一个数是否为素数。 PrivateFunctionprime(ByValxAsInteger)AsBoolean DimiAsInteger prime= Fori=2ToSqr(x) IfThen prime=False ExitFunction EndIf Nexti EndFunction PrivateSubForm_Click() DimiAsInteger,kAsInteger,nAsInteger Cls i=1 Forn= Fork=3Ton/2 Ifprime(k)AndThen Printi;": ";n;"=";k;"+";n-k ExitFor EndIf Nextk Nextn EndSub 19. 下列程序完成如下功能: 在文本框中输入英语句子,每个单词后加一个空格,当按下回车键(回车的Ascii码为13)后结束输入,并将文本框中的内容分离成单词按字典排列方式显示在列表框List1中。 要求列表框中存放的单词不重复出现。 算法思想: 用一个变量存放输入的英语句子,通过查找空格位置分离出左边的一个单词,再在列表框中检查该单词是否存在,若不存在,按字典排列方式插入到列表框中;然后截去英语句子中第一个单词后,重复上上述过程。 例如,变量st的值为“Itisabook”,分离出第一个单词“it”存放在变量word内,根据要求加入到列表框中;再使st的值为“isabook”,重复相同处理过程。 PrivateSubText1_KeyPress(KeyAsciiAsInteger) Dimst$,word$,i%,inspc% IfThen st=Trim(Text1)&"" inspc=InStr(st,"") DoWhileinspc>0 word= Fori=0ToList1.ListCount-1 Ifword=List1.List(i)Then Exit
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VB 程序 填空 复习题