VB 改错题
- 格式:doc
- 大小:147.50 KB
- 文档页数:28
第2题(1.0分)题号:129'------------------------------------------------'【程序改错】'------------------------------------------------'题目:该程序实现将输入的 0 - 255 之间的正整数转' 换成二进制数'------------------------------------------------Option ExplicitPrivate Sub Form_Click()Const n = 8Dim a(n) As Integer, s As String, m As Integer, x As Integer x = Val(InputBox("请输入一个 0 - 255 之间的正整数:"))Print x'**********FOUND**********For m = 1 To na(m) = x Mod 2'**********FOUND**********x = x / 2Next ms = " "For m = n To 0 Step -1'**********FOUND**********s = Str(a(m))Next mPrint sEnd Sub答案:=======(答案1)=======For m = 0 To n=======(答案2)=======x= x \ 2=========或=========x= int(x/2)=======(答案3)=======s = s + Str(a(m))第3题(1.0分)题号:463'------------------------------------------------'【程序改错】'------------------------------------------------'题目:以下程序功能是输入三个数,由大到小排序。
1.程序的功能是:单击命令按钮“输出”,在图片框Picture1中输出费波那契数列的前20项项值,要求按区输出,每行输出4个项值。
程序中有两处错误,请修改程序并运行,直到得出正确结果。
注意:程序中的修改行就在注释行:'**********found*************' '请不要删除该行'的下面,请不要修改程序中的其他部分。
最后把修改后的文件按原来文件名存盘。
第1个出错位置:For i=3 to 20第2个出错位置:If i Mod 4=0 then Picture1.PrintPrivate Sub Command1_Click()Dim f(40) As LongDim i As IntegerPicture1.Clsf(1) = 0f(2) = 1Picture1.Print f(1), f(2),'**********found*************' '请不要删除该行'For i = 1 To 40For i=3 to 20f(i) = f(i - 1) + f(i - 2)Picture1.Print f(i),'**********found*************' '请不要删除该行'If i Mod 4 = 0 Then Picture.PrintIf i mod 4=0 then picture1.printNext iEnd Sub2. 程序的功能是:程序运行时,单击“输出”按钮,产生10个[0,99]之间的随机整数存入数组A中,并按照相反的顺序输出在窗体上。
程序中有两处错误,请修改程序并运行,直到得出正确结果。
第1个出错位置:A(i)=Int(Rnd*100+0) p50第2个出错位置:Print A(11-i);Private Sub Command1_Click()RandomizeDim A(10), I As IntegerForm1.ClsFor I = 1 To 10'*********found******** '请不要删除该行A(I) = Int(Rnd * 99) A(i)=Int(Rnd*100+0)Print A(I);Next IPrintFor I = 1 To 10'*********found******** '请不要删除该行Print A(I); Print A(11-i) (注意答案中间无;)Next IEnd Sub3. 在考生文件夹下有一个工程文件Modi1.vbp,相应的窗体文件为Modi1.frm,此外还有一个名为Modiin.dat的文本文件,其内容如下:32 43 76 58 28 12 98 57 31 42 53 64 75 86 97 13 24 35 46 57 68 79 80 59 37程序运行后,单击窗体,将把文件Modiin.dat中的数据输入到二维数组Mat中,在窗体上按5行5列的矩阵形式显示出来,然后交换矩阵第一行和第三行的数据,并在窗体上输出交换后的矩阵。
VB程序改错四、程序改错共7题第1题题号:7'【题目】从10个各不相同的正整数中,剔除若干个数。
使得保留下来的数中,' 任意两个数的和都不是平方数'(所谓平方数就是该数等于某一个数的平方,例如4就是一个平方数)。
Option ExplicitOption Base 1Private Sub Command1_Click()Dim a(10) As Integer, i As Integer, j As Integer, p As Integer, k As Integer'**********FOUND**********Do While p <= 10k = Int(20 * Rnd) + 1For j = 1 To p'**********FOUND**********If k = a(j) Then Exit DoNext jIf j > p Thenp = p + 1a(p) = kText1 = Text1 & Str(k)End IfLoopCall delete(a, p)For i = 1 To pText2 = Text2 & Str(a(i))Next iEnd SubPrivate Sub delete(a() As Integer, p As Integer)Dim idx As Integer, j As Integer, sum As Integer idx = 2Do While idx < pFor j = 1 To idx - 1sum = a(idx) + a(j)If Int(Sqr(sum)) = Sqr(sum) Then Exit For Next j'**********FOUND**********If j > idx - 1 Thena(idx) = a(p)p = p - 1Elseidx = idx + 1End IfLoopEnd Sub答案:=======(答案1)=======Do While p < 10=======(答案2)=======If k = a(j) Then Exit For=======(答案3)=======If j <= idx - 1 Then第2题题号:8'【题目】本程序的功能是生成一组(10个)两位的互质数。
(本试卷完成时间 60分钟)[考试须知]1.改错题界面不作要求,主要用来调试程序,题目中有参考界面,则仅作参考;2.考试结束后,文件须存放在指定位置,否则不予评分;3.程序代码书写应成锯齿形。
一、改错题(14分)[题目]随机生成30个三位正整数显示在列表框List1中,并从中找出所有回文数显示在多行文本框Text1中。
Option ExplicitOption Base 1Private Sub Command1_Click()Dim i As IntegerDim A(30) As IntegerFor i = 1 To 30A(i) = Int(Rnd * 900 + 100)List1.AddItem A(i)Next iFor i = 1 To 30If judge(A) ThenText1 = Text1 & CStr(A(i)) & Chr(13) & Chr(10)End IfNext iEnd SubPrivate Function judge(ByVal x As Integer) As BooleanDim S As String, i As IntegerS = Str(x)For i = 1 To Len(S) \ 2If Mid(S, i, 1) = Mid(S, Len(S) - i + 1, 1) Then Exit ForNext iIf i > Len(S) \ 2 Thenjudge = TrueElsejudge = FalseEnd IfEnd Function[要求]1.新建工程,Copy上述代码,改正程序中的错误;2.改错时,不得增加或删除语句,但可适当调整语句位置;3.按要求保存文件,上传窗体文件……G1.frm。
(本试卷完成时间 60分钟)[考试须知]1.改错题界面不作要求,主要用来调试程序,题目中有参考界面,则仅作参考;2.考试结束后,文件须存放在指定位置,否则不予评分;3.程序代码书写应成锯齿形。
第57题(1.0分)题号:465'------------------------------------------------'【程序改错】'------------------------------------------------'题目:用InputBox函数输入一个字符串,编写程序按与' 输入的字符相反的次序用Msgbox函数输出这个字' 符串。
如输入字符串为"abcdefgh",则输出为"h' gfedcba",输出效果如图1。
'------------------------------------------------ Option ExplicitPrivate Sub Command1_Click()Dim pristr As String, outstr As StringDim i As Integerpristr = InputBox("please input a string")'**********FOUND**********For i = 0 To Len(pristr)'**********FOUND**********outstr = outstr + Mid(pristr, Len(pristr) - i) Next i'**********FOUND**********MsgBox outstr, , "The Output Result "End Sub答案:=======(答案1)=======For i = 0 To Len(pristr) - 1=========或=========For i = 0 To -1+Len(pristr)=======(答案2)=======outstr = outstr + Mid(pristr, Len(pristr) - i, 1)=========或=========outstr = Mid(pristr, Len(pristr) - i, 1)+outstr=======(答案3)=======MsgBox outstr, vbQuestion, "The Output Result "第59题(1.0分)题号:147'------------------------------------------------'【程序改错】'------------------------------------------------'题目:下面的程序用来产生并输出图示的杨辉三角。
VB程序改错题程序改错1.题目:已知C的公式表示如下:'n!'C=------------------'(n-m)!某m!'函数过程fac()求k!函数,在Fomr_Click事件中完成运算,'请修正程序中错误。
'------------------------------------------------OptionE某plicitPrivateFunctionfac(kAInteger)ASingleDim某ASingle,jAInteger 某=0Forj=1Tok某=某^jNe某tjfac=某EndFunctionPrivateSubForm_Click()DimCASingleDimmAInteger,nAIntegerm=Val(InputBo某(\请输入一个整数(m):\n=Val(InputBo某(\请输入一个整数(n):\C=fac(n)/fac(n-m)某fac(m)Print\EndSub2.题目:程序功能为打印下列图形:'某'某某'某某某'某某某某'某某某某某'------------------------------------------------OptionE某plicitPrivateSubForm_Click()ClDimiAIntegerDimjAIntegerFori=1To7Forj=1To5Print\LoopPrintNe某tiEndSub3.题目:本程序的功能是随机产生的10个两位正整数,并进行递减排序。
'------------------------------------------------OptionE某plicitPrivateSubCreateRND()DimTempAIntegerDimIAIntegerDimNAIntegerDim某(10)AIntegerDimJAIntegerN=10Print\数据:\ForI=1ToN某(I)=Int(Rnd()某90)Print某(I);Ne某tIPrintPrint\排序:\ForI=0ToN-1ForJ=I+1ToNIf某(I)>某(J)ThenTemp=某(I)某(J)=某(I)某(I)=TempEndIfNe某tJPrint某(I);Ne某tIPrintEndSub4.题目:随机产生并输出100以内大于50的20个整数,输出时每5个数一行。
【程序改错】'题目:该程序的功能是求出100到200之间的全部素数,并且按每行4个、每个数据之间有10个空格的格式输出。
'注意:不可增加或删除程序行,也不可以更改程序结构' Private Sub Form_Click()dim k as integer,i as integer,j as integerk = 0For i = 100 To 200'**********FOUND**********For j = 1 To i - 1If i Mod j = 0 Then Exit ForNext jIf j = i Then'**********FOUND**********Print i; Tab(10);k = k + 1'**********FOUND**********If k Mod 5 = 0 Then Print;End IfNext iEnd Sub答案:1). For j = 2 To i - 1 或For j = 2 To -1 + i2). Print i; Space(10);3). If k Mod 4 = 0 Then Print━━━━━━━━━━━━━━━━'【程序设计】' '题目:(事件)单击窗体。
(响应)求100以内偶数的和,并将结果输出在窗体上。
将结果存入变量SUM中答案:26__________________________________Dim i As IntegerFor i = 1 To 100If i Mod 2 = 0 Thensum = sum + iEnd IfNextPrint sum'【程序改错】'------------------------------------------------'题目:在下面的程序段中过程pd可以判断任意三个数能' 否构成三角形的三边,利用该过程的判定结果,对能构成三角形的计算其面积,构不成的显示"不能构成三角形Option ExplicitPrivate Sub Form_Click()'**********FOUND**********Dim x%, y%, z%, s%, b As Boolean,h as Singlex = InputBox("请输入三角形的边长")y = InputBox("请输入三角形的边长")z = InputBox("请输入三角形的边长")= InputBox("请输入三角形的边长")b = pd(x, y, z)h = (x + y + z) / 2'**********FOUND**********If not b Thens = Sqr(h * (h - x) * (h - y) * (h - z))Print "三角形面积是"; sElsePrint "不能构成三角形"End IfEnd Sub'**********FOUND**********Public Function pd( ) As BooleanIf x > 0 And y > 0 And z > 0 And x + y > 0 And x + z > y And y + z > x Thenpd = TrueElsepd = FalseEnd IfEnd Function答案:1). Dim ★x%★, ★y%★,★z%★, ★s!★, ★b★As Boolean★, ★h As Single2). If b Then3). Public Function pd(x%, y%, z%) As Boolean━━━━━━━━━━━━━━━━三、程序设计共1题(共计15分)'题目:(事件)双击窗体。
VB中常见的错误1、运行下面的Visual Basic程序,单击命令按钮Command1,出现如下图所示的提示信息:Private Sub Command1_Click()Dim a As Single, b As Singlea = Val(Text1.Text)b = 10If a >= bb = a * a + 2 * bEnd IfLabel1.Caption = Str(b)End Sub出现该错误的原因是A.If语句缺少Then B.If语句缺少ElseC.变量a的数据类型说明错误D.变量b的数据类型说明错误2、某VB程序的事件过程如下所示:Private Sub Command1_Click ( )Dim a As Integera = Val(Text1.Text)Text1.Text = Str(Int( a ))End Sub运行程序,单击按钮Command1后弹出如下图所示的错误提示。
导致该错误的原因可能是()A.Int函数计算时出现错误B.Val函数应用不正确C.窗体上缺少Text1文本框对象D.变量a数据类型定义错误3、某Visual Basic程序段如下:Dim a(1 To 10) As IntegerDim i As Integera(1) = 1For i = 2 To 10a(i) = a(i - 1) * iNext i运行该程序段,会出现的错误提示为(A)下标越界(B)子程序或函数未定义(C)要求对象(D)溢出Interger类型范围在-32768~32767,而1到10相乘超出这个范围4、某Visual Basic程序如下:Dim a(1 To 10) As IntegerDim i As IntegerFor i = 1 To 10a(i) = i * iNext iList1.AddItem Str(a(i))End Sub运行程序,单击命令按钮Command1后,出现的错误提示为(A)下标越界(B)子程序或函数未定义(C)溢出(D)类型不匹5、有如下的Visual Basic程序:Private Sub Command1_Click()Const pi = 3.14Dim s As Single, r As Singler = Val(text1.Text)pi = 3.1415s = pi * r ^ 2Label1.Caption = "面积为" + Str(s)End Sub程序运行后,单击命令按钮Command1,出现如图所示的错误提示,下列原因分析正确的是(A)常量不能用小数(B)pi是常量,不允许赋值(C)文本框Text1中输入的数据不是常量(D)表达式结果超过了变量类型的范围6、某Visual Basic程序如下:Private Sub Command1_Click()Dim a(1 To 10) As IntegerDim i As IntegerFor i = 1 To 10a(i) = i * iNext iList1.AddItem Str(a(i))End Sub运行程序,单击命令按钮Command1后弹出如图所示的出错信息提示,此时程序正执行的语句是(A)For i = 1 To 10(B)a(i) = i * i(C)Next i(D)List1.AddItem Str(a(i))7、某Visual Basic程序如下:Dim a As Single, b As SingleDim c As Singlea = 1b = 5c = Sqr(a - b)Text1.Text = Str(c)End Sub运行程序,单击命令按钮Command1后弹出如图所示的出错信息提示,此时程序正执行的语句是(A)a = 1(B)b = 5(C)c = Sqr(a - b)(D)Text1.Text = Str(c)8、某同学正编写一个判断酒驾行为的Visual Basic程序,其窗体和代码窗口如下图所示。
一、判断共19题(共计19分)第1题(1.0分)题号:684在窗体的form_load事件过程里定义的变量是局部变量。
第2题(1.0分)题号:380VB规定窗体文件的扩展名是 .vbp。
3题(1.0分)题号:681对于动态数组,在过程中可多次使用redim语句改变数组的大小。
第4题(1.0分)题号:285所有的控件在程序运行以后都是可见的。
第5题(1.0分)题号:677通常用show方法来显示通用对话框第6题(1.0分)题号:683控件数组中的各个元素由caption属性区分。
第7题(1.0分)题号:680通用对话框控件在运行的时候,是不可见的。
第8题(1.0分)题号:361设A=3,B=4,C=5,D=6,则表达式A>B And C<=D Or 2* A>C的值是 False。
第9题(1.0分)题号:313“菜单编辑器”中至少要填“名称”和“标题”这两个框,才能真确完成菜单栏的设计。
第10题(1.0分)题号:325VB若同一个工程有许多窗体,可以指定任一窗体为启始窗体。
第11题(1.0分)题号:335通过改变属性窗口中的Name属性,可以改变窗体上显示的标题。
第12题(1.0分)题号:324如果一个菜单项的Visible属性为False,则它的子菜单也不会显示。
第13题(1.0分)题号:678鼠标mousedown事件可以返回一个参数button用于判断用户按下的是鼠标的左键、右键、还是滑轮。
第14题(1.0分)题号:254有的对象属性既可在属性窗口中设定又可在程序代码中设定。
第15题(1.0分)题号:686时钟控件的interval属性的单位是毫秒。
第16题(1.0分)题号:248对象的可见性用enabled属性设置,可用性用visible属性设置。
第17题(1.0分)题号:682Dim(4,5)定义数组元素个数是20个。
第18题(1.0分)题号:685dim a(1 to 5)定义的数组是2维数组。
程序改错1 题目:求s=2!+4!+6!+8!,阶乘的计算用Function过程fact实现。
程序代码:Private Sub Form_Click()Dim i as integer, s as longFor i = 2 to 8 →For i = 2 to 8 step 2s = s + fact(i)Next iPrint sEnd SubPublic Function fact( ) →Public Function fact(Byval n%)Dim t as longDim i as integert = 1For i = 1 to nt = t * iNext iFact = i →Fact = tEnd function2 题目:请根据下列描述编写购物优惠程序。
某商场为了加速促成商品流通,采用购物打折的优惠办法,每位顾客一次购物(1)在100元以上者,按九五折优惠;(2)在200元以上者,按九折优惠;(3)在300元以上者,按八折优惠;(4)在500元以上者,按七折优惠。
在窗体上添加两个文本框和一个命令按钮,要求在Text1中输入购物商品总金额,单击命令按钮,在Text2中输出优惠价。
程序代码:Private Sub Command1_Click ()Dim x As Integer, y As Singlex = Val(Text1.Text)If x < 100 thenx = y →y=xElseIf x < 200 theny = 0.95 * xElseIf x < 300 theny = 0.9 * xElseIf x < 300 theny = 0.8 * xElsey = 0.7 * xElse If →End IfEnd IfEnd IfEnd IfText2.text = x →Text2.text = yEnd Sub3 题目:创建一个绘图程序。
改错〖第1题〗『程序改错』(5分)(题号:132)'------------------------------------------------'【程序改错】'------------------------------------------------'题目:求s=2!+4!+6!+8!,阶乘的计算用Function过程' fact实现'------------------------------------------------'注意:不可增加或删除程序行,也不可以更改程序结构'------------------------------------------------Private Sub Form_Click()dim i as integer,s as Long'**********FOUND**********For i = 2 To 8s = s + fact(i)Next iPrint sEnd Sub'**********FOUND**********Public Function fact( )dim t as Longdim i as integert = 1For i = 1 To nt = t * iNext I'**********FOUND**********fact=iEnd Function答案:1)、For i = 2 To 8 Step 22)、Public Function fact(ByVal n As Integer) 或Public Function fact(n As Integer) 或Public Function fact(n%) 或Public Function fact(n) 或Public Function fact(ByVal n%) 或Public Function fact(ByVal n)3)、fact = t〖第1题〗『程序改错』(5分)(题号:132)'------------------------------------------------'【程序改错】'------------------------------------------------'题目:求s=2!+4!+6!+8!,阶乘的计算用Function过程' fact实现'------------------------------------------------'注意:不可增加或删除程序行,也不可以更改程序结构'------------------------------------------------Private Sub Form_Click()dim i as integer,s as Long'**********FOUND**********For i = 2 To 8s = s + fact(i)Next iPrint sEnd Sub'**********FOUND**********Public Function fact( )dim t as Longdim i as integert = 1For i = 1 To nt = t * iNext I'**********FOUND**********fact=iEnd Function答案:1)、For i = 2 To 8 Step 22)、Public Function fact(ByVal n As Integer) 或Public Function fact(n As Integer) 或Public Function fact(n%) 或Public Function fact(n) 或Public Function fact(ByVal n%) 或Public Function fact(ByVal n)3)、fact = t〖第1题〗『程序改错』(5分)(题号:493)'------------------------------------------------'【程序改错】'------------------------------------------------'题目:给定年号与月份,判断该年就是否闰年,并根据给出的' 月份来判断就是什么季节与该月有多少天?' (闰年的条件就是:年号能被4整除但不能被100整除,' 或者能被400整除。
四、程序调试改错题(两小题,共10分,每处2分)1.改错题1答案:Private Sub Command1_Click()'10位学生参加2门课程的考试,求每个学生的2门课程的平均成绩'利用rnd产生0~100分数,结果显示在图形框内。
'程序中有3个错误,请调试改正Dim aver As DoublePicture1.ClsPicture1.Print "成绩1 成绩2 平均"For i = 1 To 10aver = 0 ' *********For j = 1 To 2m = Int(Rnd * 101) '*******Picture1.Print m & Space(6 - Len(m)); '显示成绩aver = aver + m '*******Next javer = aver / 2Picture1.Print Format(aver, "00.00") '显示平均成绩Next iEnd Sub2.改错题2答案:Private Sub Command2_Click()'本程序段用数字1~9绘制一个倒三角形,结果显示在Label1。
'程序中有2个错误,请调试改正Dim i%, j%Label1 = vbCrLfFor i = 9 To 1 Step -1 ' *********Label1 = Label1 & Space(20 - 2 * i)For j = 1 To 2 * i - 1 ' *********Label1 = Label1 + Str(i)NextLabel1 = Label1 & vbCrLfNext iEnd Sub五、编程题(36分)程序参考代码:‘窗体1Dim H As Integer,M As Integer, S As Integer, mS As IntegerPrivate Sub Command1_Click()If Command1.Caption = "暂停" ThenTimer1.Enabled = False '停止计时Text2 = Text2 & Text1.Text & vbCrLf '将文本框1内容添加到Text2 Command1.Caption = "继续"ElseTimer1.Enabled = TrueCommand1.Caption = "暂停"End IfEnd SubPrivate Sub menu11_Click()Timer1.Interval = 100 '开始计时Timer1.Enabled = TrueText2 = "" '清空文本框内容H = 0: M = 0: S = 0: mS = 0Command1.Caption = "暂停"Command1.Enabled = TrueEnd SubPrivate Sub menu12_Click()Dim mX As Single, mY As SingleOpen App.Path + "\result.txt" For Output As #1Print #1, Text2.TextClose #1MsgBox "已经成功写入!"End SubPrivate Sub menu13_Click()EndEnd SubPrivate Sub menu2_Click()Form1.HideForm2.ShowEnd SubPrivate Sub Timer1_Timer()'下面程序将计算经过的时间If mS < 9 ThenmS = mS + 1ElsemS = 0If S < 59 ThenS = S + 1ElseS = 0If M < 59 ThenM = M + 1ElseM = 0H = H + 1End IfEnd IfEnd If'将经过时间的数值转化为字符型显示到文本框Text1.Text = Str(M) + ":" + Str(S) + "." + Str(mS) End Sub‘窗体2Private Sub Command1_Click()Dim mX As Single, mY As SingleList1.ClearList2.ClearOpen App.Path + "\xy.txt" For Input As #1Do WhileInput #1, mX, mYList1.AddItem mXList2.AddItem mYLoopClose #1MsgBox "已经成功读出!"End SubPrivate Sub Command2_Click()Unload MeForm1.ShowEnd Sub。
改错[(第1题》『程序改错」(5分)(题号:132)【程序改错】'题目:求s二2!+4X6!+8!,阶乘的计算用Function过程'fact实现'注意:不可增加或删除程序行,也不可以更改程序结构J _____________________ ___ _____________________________ _ ___________________________________ Private Sub Form_Click()dim i as integer,s as Long'**********F0UND**********For i = 2 To 8s = s + fact (i)Next iPrint sEnd Sub'**********F0UND**********Public Function fact()dim t as Longdim i as integert = 1For i = 1 To nt = t * iNext I'**********F0UND**********fact=iEnd Function答案:1). For i = 2 To 8 Step 22). Public Function fact(ByVai n As Integer) 或Public Function Integer) 或Public Function fact(n%) 或Public Function fact(n) Function fact(ByVai n%) 或Public Function fact(ByVai n)3). fact = tK第1题》『程序改错」(5分)(题号:132)【程序改错】'题目:求s二2!+4!+6!+8!,阶乘的计算用Function 11程'fact实现'注意:不可增加或删除程序行,也不可以更改程序结构Private Sub Form_Click() fact(n As 或Publicdim i as integer, s as Long'**********F0UND**********For i = 2 To 8s = s + fact (i)Next iPrint sEnd Sub':fc*********F0UND**********Public Function fact()dim t as Longdim i as integert = 1For i = 1 To nt = t * iNext I'**********F0UND**********fact=iEnd Function答案:1). For i = 2 To 8 Step 22). Public Function fact(ByVai n As Integer) 或Public Function fact(n As Integer) 或Public Function fact(n%) 或Public Function fact(n) 或Public Function fact(ByVai n%) 或Public Function fact(ByVai n)3). fact = tK第1题》『程序改错」(5分)(题号:493)【程序改错】'题目:给左年号与月份,判断该年是否闰年,并根据给出的 '月份来判断是什么季节和该月有多少天'(闰年的条件是:年号能被4整除但不能被100整除,'或者能被400整除°) '注意:不可增加或删除程序行,也不可以更改程序结构Private Sub Form_Click()Dim Year As Integer, Month As IntegerYear = InputBox(/z输入年号:")Month = InputBox(/z输入月份:“)'**********F0UND**********If Year Mod 4 = 0 And Year Mod 100 <> 0 And Year Mod 400 <> 0 Then'**********FO UND**********flag = 0MsgBox "闰年"Elseflag = 0MsgBox "非闰年"End If'**********FO UND**********Select Case flagCase 1MsgBox "该月有31天,春季"Case 2If flag 二1 Then MsgBox "该月有29 天,春季"Else MsgBox 〃该月有28 天,春季"Case 3MsgBox "该月有31天,春季"Case 4MsgBox "该月有30天,夏季"Case 5MsgBox "该月有31天,夏季"Case 6MsgBox "该月有30天,夏季"Case 7MsgBox该月有31天,秋季"Case 8MsgBox "该月有31天,秋季"Case 9MsgBox "该月有30天,秋季"Case 10MsgBox "该月有31天,冬季"Case 11MsgBox "该月有30天,冬季"Case 12MsgBox该月有31天,冬季"End SelectEnd Sub答案:1) . If Year Mod 4 = 0 And Year Mod 100 <> 0 Or Year Mod 400 = 0 Then 或If YearMod 400 = 0 Or Year Mod 4 = 0 And Year Mod 100 <> 0 Then2) . Flag = 13) . Select Case MonthK第2题』『程序改错」(5分)(题号:119)【程序改错】'题目:在下面的程序段中过程pd可以判断任意三个数能'否构成三角形的三边,利用该过程的判泄结果,'对能构成三角形的讣算其而积,构不成的显示"'不能构成三角形〃 '注意:不可增加或删除程序行,也不可以更改程序结构Option ExplicitPrivate Sub Form_Click()':fc*********FOUND**********Dim x%, y%, z%, s%, b As Boolean, h As SingleX = InputBox C请输入三角形的边长")y = InputBox C请输入三角形的边长")z = InputBox C请输入三角形的边长")b = pd(x, y, z)h = (x + y + z) / 2'客*********FOUND**********If Not b Thens = Sqr (h * (h - x) * (h - y) * (h - z))Print "三角形而积是";sElsePrint "不能构成三角形"End IfEnd Sub'**********FOUND**********Public Function pd() As BooleanIf x > 0 And y > 0 And z > 0 And x + y > z And x + z > y And y + z > x Then pd = TrueElsepd = FalseEnd IfEnd Function答案:1). Dim ★矗★,z%*, ! ★,As Boolean^, ★h As Single 或Dim ★x%^,★ z%*, as Singled,As Boolean*, As Single2). If b Then 或If b=true Then3). Public Function pd(x%, y%, z%) As Boolean 或Public Function pd(x, y, z) As Boolean 或Public Function pd(x as Integer, y as Integer, z as Integer) As Boolean K第3题]]『程序改错」(5分)(题号:134)【程序改错】'题目:程序功能根拯输入的学习成绩,分别显示优秀'(90分以上),良好(75分以上),及格(60分以上) ',不及格几个等级.'注意:不可增加或删除程序行,也不可以更改程序结构Private Sub Formed ick()CisDim i As Integeri二InputBox C请输入学习成绩")Select Case I':fc*********FOUND**********Case 0<I<100MsgBox 〃成绩应该在0—100之间"'**********FOUND**********Case 90Print "优秀”Case 75 To 90Print ?,良好"Case 60 To 75Print "及格"'**********FOUND**********CaseMsgBox "不及格",vbCriticalEnd SelectEnd Sub答案:1). Case ★! > 100 ★or* i < 0 或Case ★100 < i★orik* i〈0 或Case ★! > 100 ★or* 0>i 或Case ★100 < i ★or* 0>i2). Case 90 To 1003). Case elseK第4题』『程序改错〕(5分)(题号:481)【程序改错】'题目:下而程序的功能是将一个整数转化为数值字符串, '列如123,转化为"+123",-123转化为“-123”'注意:不可增加或删除程序行,也不可以更改程序结构9 _____________________________ _________________________________________________________________________________Private Function NtoC(ByVai n As Single)Dim sign As Boolean, i%, a%, count%, temp%(100)Dim strc As Stringsign = False'**********F0UND**********If n < 0 Then sign = Falsen = Abs(n)Do Wh:ile n > 0'客*********F0UND**********a = n / 10n = n \ 10'**********FO UND**********count = 1temp(count) = aLoopIf sign Then strc = 〃- " Else strc =For i = count To 1 Step -1strc = strc + Chr(Asc("0") + temp(i))Next iNtoC = strcEnd FunctionPrivate Sub Commandl_Click()Print NtoC(-123)End Sub答案:1). If n 〈0 Then sign = True2). a = n Mod 103). count = count + 1 或count = 1 + count K第1题』『程序改错」(5分)(题号:132)【程序改错】'题目:求s=2!+4!+6!+8!,阶乘的计算用Function 程'fact实现'注意:不可增加或删除程序行,也不可以更改程序结构Private Sub Form_Click() dim i as integer, s as Long '**********F0UND********** For i = 2 To 8s = s + fact (i)Next iPrint sEnd Sub'**********F0UND********** Public Function fact() dim t as Longdim i as integert = 1For i = 1 To nt = t * iNext I'客*********FOUND**********fact=iEnd Function答案:1). For i = 2 To 8 Step 22). Public Function fact(ByVai n As Integer) 或Public Function fact(n AsInteger)或Public Function fact(n%) 或Public Function fact(n) 或Public Function fact(ByVai n%)或Public Function fact(ByVai n)3). feet = t。
1.'功能:以下程序段用于计算n的阶乘:n!。
(1!=1)2. 已知某城市一年的交通事故车辆报废情况,编程序计算该城市的交通事故一年损失金额。
3. 下面的程序用"冒泡"法将数组a中的10个整数按从小到大排列,请将程序补充完整。
4. '程序运行界面。
键盘输入3个数,将它们按由大到小的顺序输出,-1为结束标志。
5. '在窗体有三个复选框,名称分别为Ch1、Ch2和Ch3,标题依次为'"体育"、"音乐"、"美术",还有一个命令按钮,名称为C1,标题'为"显示"。
要求程序运行后,如果选中某个复选框,则当单击'"显示"命令按钮时,则显示相应的信息。
例如,如果选中"体育"'和"音乐"复选框,则单击"显示"命令按钮后,在窗体上显示'"我的爱好是体育音乐"(如图1所示);而如果选中"体育"、'"音乐"和"美术"复选框,则单击"显示"按钮后,在窗体上显示"'我的爱好是体育音乐美术"。
6. 窗体上建立了一个文本框Text1("输入口令")和一个命令按钮Command1("检查")。
' 判断密码是否正确,并显示相应提示在加载窗体时设置密码框最大长度为8,密码显示字符为“*”7. 下面的程序用于求三个数中最大数8. 要求输入若干学生的成绩,计算平均分和高于平均分的人数,并将这两个数据放入数组的最后。
9. 求A,B,C三个数的最大值。
10. 该程序通过For循环计算一个表达式的值,这个表达式是1/2+2/3+3/4+4/511. 用户单击命令按钮后,程序将文本框Text1中的文本反转显示,同时在文本框Text2中显示文本框Text1中字符串的个数12. 功能:单击“插入数据”按钮后,输入一个整型数据,该数据会被插入到一个有序的数组a(1 to 10)中,插入该数据后数组还是有序的。
Visual Basic改错题常见错误类型1.语句的顺序颠倒★如:s=0、I=1、k=k+1、st=""等初始化的语句,两重循环时常放在两个循环之间flag=False或True的位置2.形参是传数值调用还是传地址调用(包括虚实结合时,参数个数、类型、位置统一)★如:某形参在子过程中被改变(放在赋值语句的左边),而在主过程(包括事件过程)中需要再次引用对应的实参,常常应设置形参为传数值调用是数组元素传递,还是整个数组传递如:形参是普通变量,实参是数组名→将实参改为数组元素3.Exit的跳出问题★如:究竟是跳出循环还是跳出过程、究竟是跳出Sub过程还是跳出Function过程等Exit For→Exit Do→Exit Sub→Exit Function→……→4.边界问题如:循环时是<10(或>)还是<=10(或>=)、I>=Len(st)还是I>Len(st)将整数N=354各位分解DoI=I+1Num(I)=N Mod 10N=N \10Loop Until N<=0 24位真彩色图像的值在st串中,将其8位一组提取Dok = k + 1c(k) = Left(st, 8)st = Right(st, Len(st) – 8)Loop Until k > 3改为:k=3S为8位二进制串,把s化为十进制Dim k As IntegerDob2d = b2d + V al(Right(s, 1)) * 2 ^ ks = Left(s, Len(s) - 1)k = k + 1Loop Until k = Len(s) 改为:k=85.字符串问题(1)长度计算出错如x=234,Len(Str(x))=? 应该用CStr(x)Dim y As Integer: y=5678,则Len(y)=2,不是4 (2)判断一个整数中不含有0If InStr(CStr(n), "0") <> 0 Then 应为:=0(3)形参不能是定长字符串变量(可以是定长字符串数组)形参若是不定长字符串变量,则对应实参定不定长都可以(4)字符串倒序如:For I=1 To Len(st)ch=Mid(st,I,1)Newst= ch & NewstNext I(5)判断某字符是否是字母:(假定st是字符串变量)Select Case stCase "A" To "Z","a" To "z"………6.循环:(1)步长为负For I=10 To 1 Step –1(2)按要求输出所有数组元素时,是Ubound(a)、还是Ubound(a)-1如:6=1+2+3(3)正常退出循环时,循环控制变量超过终值如:判断超级素数(超级素数是指本身为素数,从右向左依次去掉1位数字后的数据仍为素数的数。
【程序改错】'------------------------------------------------'题目:下面的程序段用于删除数组中指定位置的数字,'如果位置错误给出提示,否则分别显示删除前后'的数组元素'------------------------------------------------'注意:不可增加或删除程序行,也不可以更改程序结构'------------------------------------------------Private Sub Form_Click()Dim a(10) As Integer, x As Integer, i As Integer, k As Integer For i = 1 To 10a(i) = Int(Rnd * 90) + 10Print a(i);Next iPrintx = InputBox("请输入要删除第几位数字")'**********FOUND**********If x > 0 And x <= 10 Then 'If x > 0 Then'**********FOUND**********For k = x To 9 'For k = x To 10a(k) = a(k + 1)Next kPrint "删除后的数组:"For i = 1 To 9Print a(i);Next iElsePrint "删除位置错误"'**********FOUND**********End If 'EndEnd Sub【程序改错】'------------------------------------------------'题目:在下列程序段中,过程fb可以显示任意长度的菲'波那契数列,现要求通过键盘输入一数字,利用'该过程显示不超过指定数字大小的数列'------------------------------------------------'注意:不可增加或删除程序行,也不可以更改程序结构'------------------------------------------------Option ExplicitPrivate Sub Form_Click()Dim x As Integerx = Val(InputBox("请指定显示范围"))'**********FOUND**********Call fb(x) 'call fb yEnd SubPublic Sub fb(x As Integer)Dim i&, j%, k%j = 1i = 1Print i; j;k = i + j'**********FOUND**********Do Until k > x 'Do While k > xPrint k;i = jj = k'**********FOUND**********k = i + j 'k = i - jLoopEnd Sub'【程序改错】'------------------------------------------------'题目:下面的程序段用于实现以下功能:建立一顺序文'件,存放10名同学的学号和三门功课成绩,显示'该文件内所有记录,并同时显示其总分和平均分'------------------------------------------------'注意:不可增加或删除程序行,也不可以更改程序结构'------------------------------------------------Private Sub Form_Click()Dim no%, c1%, c2%, c3%, i As Integer'**********FOUND**********Open "c:\2.txt" For Output As #1 'Open "c:\2.txt" For Input As #1 For i = 1 To 3no = InputBox("请输入学号")c1 = InputBox("请输入数学成绩")c2 = InputBox("请输入语文成绩")c3 = InputBox("请输入外语")Write #1, no, c1, c2, c3Next iClose #1'**********FOUND**********Open "c:\2.txt" For Input As #1 'Open "c:\2.txt" For Output As #1 For i = 1 To 3'**********FOUND**********Input #1, no, c1, c2, c3 'Print #1, no, c1, c2, c3Print no, c1, c2, c3, c1 + c2 + c3, (c1 + c2 + c3) / 3Next iClose #1End Sub'【程序改错】'------------------------------------------------'题目:以下程序段用于输出100-300的所有素数'------------------------------------------------'注意:不可增加或删除程序行,也不可以更改程序结构'------------------------------------------------Private Sub Form_Click()Dim n As Integer, k As Integer, i As Integer, swit As IntegerFor n = 101 To 300 Step 2k = Int(Sqr(n))i = 2'**********FOUND**********swit = 0 'swit = 1'**********FOUND**********While swit = 1 'While swit = 0If n Mod i = 0 Thenswit = 1Else'**********FOUND**********i = i + 1 ' i = i - 1End IfWendIf swit = 0 ThenPrint n;If n Mod 7 = 0 Then PrintEnd IfNext nEnd Sub'【程序改错】'------------------------------------------------'题目:在下面的程序段中过程pd可以判断任意三个数能' 否构成三角形的三边,利用该过程的判定结果,' 对能构成三角形的计算其面积,构不成的显示"' 不能构成三角形"'------------------------------------------------'注意:不可增加或删除程序行,也不可以更改程序结构'------------------------------------------------Option ExplicitPrivate Sub Form_Click()'**********FOUND**********Dim x%, y%, z%, s!, b As Boolean, h As Single 'Dim x%, y%, z%, s%, b As Boolean, h As Single x = InputBox("请输入三角形的边长")y = InputBox("请输入三角形的边长")z = InputBox("请输入三角形的边长")b = pd(x, y, z)h = (x + y + z) / 2'**********FOUND**********If b Then 'If Not b Thens = Sqr(h * (h - x) * (h - y) * (h - z))Print "三角形面积是"; sElsePrint "不能构成三角形"End IfEnd Sub'**********FOUND**********Public Function pd(x%, y%, z%) As Boolean 'Public Function pd() As BooleanIf x > 0 And y > 0 And z > 0 And x + y > 0 And x + z > y And y + z > x Thenpd = TrueElsepd = FalseEnd IfEnd Function'【程序改错】'------------------------------------------------'题目:以下程序段用于打印如下图形式的九九乘法表:'------------------------------------------------'注意:不可增加或删除程序行,也不可以更改程序结构'------------------------------------------------Private Sub Form_Click()Dim i As Integer, j As Integer, k As IntegerPrint Tab(30); "9*9 table"Print: PrintPrint " * ";For i = 1 To 9'**********FOUND**********Print Tab(i * 6); i; 'Print Tab(i * 6); iNext iPrintFor j = 1 To 9Print j; " ";'**********FOUND**********For k = 1 To 9 'For k = 1 To 9(可能会根据图的样式更改为j To 9或1 To j) '**********FOUND**********Print Tab(k * 6); j * k; " "; 'Print Tab(j * 6); j * k; " ";Next kPrintNext jEnd Sub'【程序改错】'------------------------------------------------'题目:一个两位的正整数,如果将它的个位数与十位数' 对调,则产生另一个正整数,我们把后者叫做前' 者的对调数,现给定一个两位的正数,请找到另' 一个两位的正整数,使得这两个两位正整数之和' 等于它们各自的对调数之和。