VB程序填空复习题.doc_第1页
VB程序填空复习题.doc_第2页
VB程序填空复习题.doc_第3页
VB程序填空复习题.doc_第4页
VB程序填空复习题.doc_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

二级VB程序设计练习程序填空1 下面程序按每行10个数打印出30个介于-300到300间无重复的随机整数,并显示其中的最小值。数组b(30)存放所产生的无重复的随机整数,运行结果如图所示。Private Sub Command1_Click() Dim b(30), j As Integer, k As Integer Dim y As Integer, x As Single, min As Integer For j = 1 To 30lb: x = Rnd If x 0.5 Then y = 1 Else y = -1 b(j) = y * Int(Rnd*301) k = 1 Do While kj If b(j) = b(k) Then Goto lb k = k + 1 Loop Print b(j); If j Mod 10=0 Then Print Next j min = b(1) For j = 1 To 30 If b(j) min Then min=b(j) Next j Print minEnd Sub2 下面程序用于对9位的准考证号进行校验。参数mno存放准考证号,mjy存放产生的校验位,tag判断校验正确否,若校验正确tag置1,否则为0。产生校验位的算法为:取准考证号右边的8位之和关于9的模作为校验值,准考证号最左边的一位为校验位。Public Sub foe(ByVal mno As String, mjy As Integer, Tag As Integer) Dim msum As Integer, m As String msum = 0 for j=2 to 9 m = Mid(mno, j, 1) msum = msum + Val(m) Next j mjy = msum mod 9 If mjy = val(left(mno,1) Then Tag = 1 Else Tag = 0 End IfEnd SubCommand1_Click事件用于调用foe子过程,对输入到文本框Text1的准考证号进行校验,如果校验正确,显示“正确”,否则显示“错误”,同时显示正确的校验码。Private Sub Command1_Click() Dim nn As Integer, mtag As Integer If Len(Text1) 9 Or Not IsNumeric(Text1) Then MsgBox 非法数据,请重新输入! Text1 = Text1.SetFocus Exit Sub End If Call foe(Text1, nn, mtag) If mtag Then Print 正确 Else Print “错误” ;nn End IfEnd Sub3 下面的程序按从小到大的顺序随机产生不超过20个介于100到400(包括100、400)的数,每次产生的一个数总大于它前面已产生的数,然后求产生的数的平均值。数组b(20)用于存放所产生的随机数,运行结果如图所示。Private Sub Command1_Click() Dim b(20), i As Integer, j As Integer, sum As Single j = 1 Dore: b(j) = Int (Rnd*301+100) If b(j) = 400 Or j = 20 Then Exit Do ElseIf b(j) = b(j - 1) Then GoTo re End If j=j+1 Loop sum = 0 For i = 1 To j Print b(i); Sum=sum+b(i) Next i Print aver=; sum/j End Sub4 新的身份证号由18位组成,最低位(右边)为校验位,其算法是:10-(前17位之和关于10的模)。函数foe用于对18位的身份证进行校验。参数mstr存放身份证号,md为产生的校验位,若校验正确,函数返回“True”,否则返回“False”。Public Function foe(ByVal mstr$, md%) As Boolean Dim mp As String, msum As Integer msum = 0 For i=1 To 17 mp = Mid(mstr, i, 1) msum = msum + Val(mp) Next i md = 10 msum mod 10 If md = val(right(mstr,1) Then foe = True Else foe = False End IfEnd FunctionCommand1_Click事件用于调用foe子过程,对输入到文本框Text1的身份证号进行校验,如果校验正确,显示“True”,否则显示“False”和的校验码值。Private Sub Command1_Click() Dim mm As Integer If Len(Text1) 18 Or Not IsNumeric(Text1) Then MsgBox 非法数据,请重新输入! Text1 = Text1.SetFocus Exit Sub End If If foe(Text1, mm) = True Then Print True Else Print “False”;mm End IfEnd Sub5 End Sub本程序随机产生N(15)个A到J的大写字母,按字母降序排序后,将连续出现的字用压缩形式显示。例如,连续5个H字母显示为5*H,参见图例。数组a()用于存放随机产生的字母。Private Sub Command1_Click() Const N = 15 Dim a(1 To N) As String * 1, c Dim count%, i%, j%, k% For i = 1 To N a(i) = Chr(Int( Rnd*10+65 ) Print a(i); Next i Print For i = 1 To N - 1 k = i For j = i+1 To N If a(j) a(k) Then k=j Next j c = a(i): a(i) = a(k): a(k) = c Next i For i = 1 To N Print a(i); ; Next i Print i = 1 Do While i = N count = 1 If i N Then j = i + 1 Do While a(i) = a(j) count = count+1 If j N Then j = j + 1 Else Exit Do Loop If count = 1 Then Print a(i); ; Else Print count; *; a(i); ; i = i+count LoopEnd Sub6. 本程序的功能是在窗体随机产生10个长度为120之间的大写字母字符串,并同时显示最长字符串的字符数及内容,如图所示。Private Sub Command1_Click() Cls Dim st(1 To 10) As String, c As String * 1 Dim i%, n% For i = 1 To 10 _ _ For j = 1 To n c = Chr(Int(Rnd * 26 + 65) st(i) = _ _ Next j Print st(i) Next i maxlen = 0 maxstr = For i = 1 To 10 If _ _ Then maxlen = Len(st(i) maxstr = _ _ End If Next i _ _End Sub7. 两素数的差为2,称此对素数为素数对,下列程序是成对显示100以内的素数对。其中,函数isP的功能是判断参数m是否为素数,若是返回True ,否则返回False 。Public Function isP(m) As Boolean Dim i% For i = 2 To Int(Sqr(m) If Then IsP = False Next iEnd FunctionPrivate Sub Command1_Click() Dim i% p1 = IsP(3) 第一个可能的素数 For i = p2 = IsP(i) If Then Print i -2, i 相邻的两个是素数,则打印 p1 = 处理下一个素数 Next iEnd Sub8. 本程序的功能是求100以内的素数,结果分三列输出,如样例所示。算法思想:从2开始,对每一个数判断是否是素数,若是就输出,否则就继续,直至到100。Private Sub Command1_Click()Dim n As Integer, m As Integer, i As IntegerMe.Cls For n = 2 To 100 For m = 2 To n 1 If = 0 Then End If Next m If Then Print n, i = i + 1 If i Mod 3 = 0 Then End IfNext nEnd Sub9. 子过程isH的功能是判断正整数n是否是回文数,若为回文数,则参数Tag返回True。单击命令按钮,输出随机产生的10个10,100之间的回文数(数字左右对称的正整数称为回文数)。Private Sub Command1_Click() Dim nn%, t As Boolean, i% For i = 1 To 10 nn = Int(Rnd * 991 + 10) Call If 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 2 If Mid(s1, i, 1) Then tag = False Next iEnd Sub10. 本程序的功能是判断一个5位数的最后二位构成的数是否为素数。在窗体的文本框Text1中输入一个5位数,判断该数的第4、5二位构成的数是否为素数,若是显示“是素数”否则为“非素数”。例如,32517最后二17构成的数是素数。Private Sub Command1_Click() Dim tag As Boolean m = m = Val(m) For i = 2 To If = 0 Then tag = False Next i If Then Print m; 是素数 Else Print m; 非素数 End IfEnd Sub11. 随机产生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 = 0 Then n = n + 1 b(n) = End If Next i Call Output(a(), 100) For i = 1 To For j = 1 To n - i If Then t = b(j): b(j) = b(j + 1): b(j + 1) = t End If Next j Next i Call End SubPrivate Sub Output(x() As Integer, t As Integer) Print 数组输出: For i = 1 To t Print x(i); If i Mod 10 = 0 Then Print Next i PrintEnd Sub12.本程序的功能是用于判断输入的正整数是否为升序数。使用输入对话框输入数据,判断结果显示在标签框Lable1中。设正整数n=d1d2dm,如果di Then flag = False End If Next i If ThenLabel1.Caption = n & “是升序数” ElseLabel1.Caption = n & “不是升序数” End IfEnd Sub13.下列程序将给定范围内的偶数(大于等于4),表示为两个素数之和。图例所示为输入10和30后运行结果。函数子过程fun()的功能是判断数值n是否是为素数,若是返回1,否则返回0。Private Sub Command1_Click() Dim a%, b%, i%, c%, d% a = Val(Text1.Text): b = Val(Text2.Text) If Then t = a: a = b: b = t End If For i = a To b Step 2 Do c = c + 2 d = i - c Loop Until = 1 Picture1.Print i; =; c; +; d Next iEnd SubFunction fun(n As Integer) Dim x!, k% For k = 2 To n - 1 If n Mod k = 0 Then fun = 0 End If Next k End Function14.下面程序的功能是统计文本框中每个数字字符(“0”-“9”)出现的次数。用num(0)来存放字符“0”的个数,用num(1)来存放字符“1”的个数,用num(9)来存放字符“9”的个数。字符串由用户在文本框中输入,结果在图形框中输出。Private Sub Command1_Click() Dim num(9) As Integer Dim i%, m%, j%, c As String * 1, s$ m = For i = 1 To m c = Mid(Text1.Text, i, 1) If Then j = Val(c) End If Next i For i = 0 To 9 If Then Picture1.Print 数字 ; ; 出现次数为 ; num(i) End If Next iEnd Sub15.下列程序将求出10000之内的同构数。并且在窗体标题栏上显示找到同构数的个数,如图所示。所谓同构数是指,该整数会出现在其平方数的最右端。例如:6出现在36的最右端,76出现在5776的最右端。子函数judge()的功能是判定同构数,若是judge返回True,否则返回False。判定同构数算法思想:将数n逐位与n的平方数相同位置上的值相比较。Private Sub Command1_Click() Dim i As Long m = 0 For i = 1 To 10000 If Then m = m + 1 List1.AddItem Str(i) List2.AddItem Str(i * i) End If Next i = 10000以内的同构数: & m & 个End SubPrivate Function judge(ByVal n As Long) As Boolean Dim n2 As Long n2 = n * n judge = True Do While If (n Mod 10) = Then n = n 10 n2 = n2 10 Else Exit Do End If LoopEnd Function16.下列程序中的子过程fenge用于实现函数split()的功能(字符分离到数组)。 通过在文本框中输入一个以逗号分隔的数字序列,按回车后调用过程fenge,将数字序列分离后,转换为数值型数据存放于数组shuzhi()中,并在Picturebox中输出该数组的所有值(假设不存在输入错误,输入的数字元素个数在100个以内)。Private Sub Text1_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then Call fenge( ) End IfEnd SubPrivate Sub fenge(str1) Dim i As Integer, j As Integer, shuzhi(100) As Single i = 0 j = InStr(str1, ,) 检测第一个逗号的位置 Do While j 0 shuzhi(i) = Val( ) 分离数字序列 str1 = Mid( ) i = i + 1 j = InStr(str1, ,) Loop 最后一个数字 For j = 0 To i Next jEnd Sub17.下列程序完成如下功能:在文本框中输入一个20以内的正整数N,单击“开始”按钮后,判断输入的有效性,如果文本框中输入数越界,给出如图所示的相关提示,并要求重新输入,否则随机产生一个大写英文字母,然后以此英文字母为首字母,连续循环变化,输出一个N*N的字符矩阵,并显示“首字母X的N阶字符矩阵”的说明,图示为首字母K的8阶字符矩阵。Private Sub Command1_Click() Dim i%, k%, n% n = Val(Text1) If n 20 Then Text1 = Text1.SetFocus Exit Sub End If s = Int(Rnd * 26) + 65 随机产生一个大写字母的Ascii码 Label1 = 首字母 & 的 & n & 阶字符矩阵 Cls Print: Print k = 以下输出N*N的字符矩阵,K为字符控制变量 For i = 1 To n Print Tab(5); For j = Print Chr(65 + k); Space(1); k = k + 1 If 对字符控制变量进行处理 Next j Print Next iEnd Sub18.将100至150之间的偶数,拆分成两个素数之和(只要一对就可以了),最后输出格式如图所示。函数子过程prime用于判断一个数是否为素数。Private Function prime(ByVal x As Integer) As Boolean Dim i As Integer prime = For i = 2 To Sqr(x) If Then prime = False Exit Function End If Ne

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论