VB程序改错40题1

合集下载

VB改错题(答案)

VB改错题(答案)

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程序改错

VB程序改错

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个)两位的互质数。

VB程序设计例题-程序改错程序填空程序设计

VB程序设计例题-程序改错程序填空程序设计

'以下程序段用于输出杨辉三角:结果样式如图1'Private Sub Form_Click()Const n = 10Dim arr(n, n) As IntegerFor I = 1 To narr(I, I) = 1'**********SPACE**********【arr(I, 1) = 1】Next IFor I = 3 To nFor j = 2 To I - 1'**********SPACE**********arr(i, j) =arr(i-1,j-1)+arr(i-1,j)Next jNext IFor I = 1 To nFor j = 1 To I'**********SPACE**********【print arr(I,j)】Next jPrintNext IEnd SubOption Explicit'------------------------------------------------'【程序改错】'------------------------------------------------'题目:用自定义函数的方法求sum(x),求当-1≤x≤1时,' sum(x)=x/2!+x^2/3!+x^3/4!+……+x^n/(n+1)!,' 当x〉1或x〈-1时,函数值为0。

当n〈=0时,输入数' 据错误。

X、N都是由用户输入。

'------------------------------------------------'注意:不可增加或删除程序行,也不可以更改程序结构'------------------------------------------------Private Sub Command1_Click()Dim s As SingleDim n As Integer, x As Single, k As Integern = Val(InputBox("Please input a integer value:"))x = Val(InputBox("Please input a single value:"))If n <= 0 Thenk = MsgBox("数据输入错误!", vbRetryCancel + vbExclamation, "数据输入")Exit SubEnd Ifs = Sum(x, n)Print sEnd SubFunction Sum(x As Single, n As Integer)Dim i As Integer, ss As Longss = 1Sum = 0If x > 1 Or x < -1 Then'**********FOUND**********Exit Do 改为Exit FunctionElse'**********FOUND**********For i = 2 To n 改为For i = 2 To n+1ss = ss * i'**********FOUND**********Sum = x ^ (i - 1) / ss 改为Sum =sum+ x ^ (i - 1) / ssNext iEnd IfEnd FunctionOption Explicit'------------------------------------------------'【程序改错】'------------------------------------------------'题目:编程将一个数从已经有序(设从小到大排序)的数组' 中删除,使数组还继续保持有序而且其余元素按照下' 标连续存放。

vb程序改错

vb程序改错

1.在考生文件夹下有一个工程文件Modi.vbp,相应的窗体文件为Modi.frm。

其功能是:产生30个[0,90]的随机整数,放入一个数组中,然后输出其中的最大值。

程序运行后,单击命令按钮,可求出数组中的最大值,并在窗体上显示。

运行界面请参阅附图。

在窗体的代码窗口中,已给出了部分程序,程序中有两处错误,请修改程序并运行,直到得出正确结果。

注意:程序中的修改位置就在注释行:’**********found*************’’请不要删除该行’的下面一行中,请不要改动程序中的其他部分。

最后把修改后的文件按原来文件名存盘,提交程序改错题文档。

VERSION 5.00Begin VB.Form Form1Caption = "Form1"ClientHeight = 2100ClientLeft = 1905ClientTop = 1875ClientWidth = 3660LinkTopic = "Form1"ScaleHeight = 2100ScaleWidth = 3660Begin mandButton Command1Caption = "输出最大值"Height = 375Left = 960TabIndex = 0Top = 1320Width = 1575EndEndAttribute VB_Name = "Form1"Attribute VB_GlobalNameSpace = FalseAttribute VB_Creatable = FalseAttribute VB_PredeclaredId = TrueAttribute VB_Exposed = FalseOption Base 1Private Sub Command1_Click()Dim arrN(30) As IntegerDim Max As IntegerRandomizeForm1.ClsFor i = 1 To 30’**********found*************’’请不要删除该行’arrN(i) = Int(Rnd * 51) 91Print Format(arrN(i),"@@@@@@");If i Mod 6 =0 Then PrintNext i’**********found*************’’请不要删除该行’Max = arrN(0) 1For i = 2 To 30If Max<arrN(i) ThenMax = arrN(i)End IfNext iPrint "Max=";Max2. 在考生文件夹下有一个工程文件Modi.vbp,相应的窗体文件为Modi.frm。

江苏二级VB改错题测试

江苏二级VB改错题测试

一、改错题【题目】本程序是生成个位数分别是0、l、2、…9的十个三位随机整数,再按插入排序方法由大到小排序,并输出到列表框中。

Option ExplicitPrivate Sub Command1_Click()Dim a(9) As Integer, x As Integer, k As Integer, i As IntegerDo While i <= 9x = Int(Rnd * 900 + 100)k = x Mod 10If a(k) = 0 Thena(k) = xi = i + 1Text1 = Text1 & Str(a(k))End IfLoopsort (a)‘sort aFor i = 0 To 9List1.AddItem a(i)Next iEnd SubPrivate Sub sort(a() As Integer)Dim x As Integer, i As Integer, j As IntegerFor i = 1 To UBound(a)x = a(i)j = i - 1Do While j >= 0 And x > a(j)a(j) = a(j + 1) ‘a(j+1)=a(j)j = j - 1If j < 0 Then Exit Sub‘Exit DoLoopIf i > j + 1 Thena(j + 1) = xEnd IfNext iEnd Sub二、改错题【题目】本程序的功能是查找3位和4位的Armstrong数。

若一个N位的正整数,其各位数字的N次方之和等于这个数本身。

则这个数就是一个Armstrong数。

如:153=1^3+5^3+3^3,1634=1^4+6^4+3^4+4^。

Option ExplicitOption Base 1Private Sub Command1_Click()Dim I As Integer, A() As Integer, f As Boolean, n As IntegerDim j As Integer, st As Stringst = ""‘下移一行For I = 153 To 9999f = FalseCall Arms(I, f, A, n)If f Thenst = st & I & "="For j = 1 To UBound(A) - 1st = st & A(j) & "^" & n & "+"Next jst = st & A(j) & "^" & nList1.AddItem stEnd IfNext IEnd SubPrivate Sub Arms(k As Integer, f As Boolean, B() As Integer, n As Integer) ‘ByV al k as Integer Dim I As Integer, Sum As Integer, M As Integern = Len(Str(k)) ‘CStr(k)M = kReDim B(n)For I = n To 1 Step -1B(I) = k Mod 10k = k \ 10Next IFor I = 1 To nSum = Sum + B(I) ^ n '计算各位数字的N次方之和Next IIf Sum = M Then f = TrueEnd Sub【要求】1.新建工程,输入上述代码,改正程序中的错误;2.改错时,不得增加或删除语句,但可适当调整语句位置。

VB上机模拟改错题

VB上机模拟改错题

(本试卷完成时间 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.程序代码书写应成锯齿形。

省二 vb程序改错

省二 vb程序改错
Dim x As Integer
count = 0
x = 200
While x <= 400
If x Mod 3 = 0 Or x Mod 7 <> 0 Then
count = count + 1
End If
x = x + 1
Loop
Print count
End Sub
k = k + 1
Wend
s = s + t
i = i + 1
Wend
Print s
End Sub
答案:40346
3004题:
程序功能:计算s=2!+4!+6!+8!。程序中有两行有错误。改正错误,使它能输出正确的结果。
原程序:
Private Sub Command1_Click()
Number = Number + 1
End If
Next x
Print Number
End Sub
答案:21
3020题:
程序功能:sum=d+dd+ddd+……+ddd..d(d为1-9的数字)。例如:3+33+333+3333(此时d=3,n=4)。从键盘上输入d 的值为8,n的值为9,求sum的值。程序中有两行有错误。改正错误,使它能输出正确的结果。
Next count
print count
End Sub
答案:19
3008题:
程序功能:求1到500间,同时能被5和9整除的数的个数。程序中有两行有错误。改正错误,使它能输出正确的结果。
原程序:

VB程序改错40题

VB程序改错40题

第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'------------------------------------------------'【程序改错】'------------------------------------------------'题目:下面的程序用来产生并输出图示的杨辉三角。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Integer Dim r As Integer r = m Mod n Do While r <> 0 '**********FOUND********** n = m n = r r = m Mod n Loop '**********FOUND********** gcd = r End Function Private Sub Form_Click() Dim a As Integer, b As Integer, c As Integer a = InputBox("输入一个整数") b = InputBox("输入一个整数") a = Val(a) b = Val(b) '**********FOUND********** Call gcdd Sub
答案: =======(答案1)=======
If x < y Then =========或========= If y > x Then =======(答案2)======= If y >= z Then =========或========= If z <= y Then =======(答案3)======= ElseIf x >= z Then =========或========= ElseIf z <= x Then 第70题 (1.0分) 题号:142 '-----------------------------------------------'【程序改错】 '-----------------------------------------------'题目:程序功能根据输入的学习成绩,分别显示优秀 ' (90分以上), 良好(75分以上),及格(60分以上) ' 不及格四个等级. '-----------------------------------------------Option Explicit Private Sub Form_Click() Cls Dim i As Integer i = InputBox("请输入学习成绩") Select Case i '**********FOUND********** Case 0 < i < 100 MsgBox "成绩应该在0--100之间""" '**********FOUND********** Case 90 Print "优秀" Case 75 To 89 Print "良好"
第57题 (1.0分) 题号:465 '-----------------------------------------------'【程序改错】 '-----------------------------------------------'题目:用InputBox函数输入一个字符串,编写程序按与 ' 输入的字符相反的次序用Msgbox函数输出这个字 ' 符串。如输入字符串为"abcdefgh",则输出为"h ' gfedcba",输出效果如图1。 '-----------------------------------------------Option Explicit Private Sub Command1_Click() Dim pristr As String, outstr As String Dim i As Integer pristr = 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
Case 60 To 74 Print "及格" '**********FOUND********** Case MsgBox "不及格", vbCritical End Select End Sub 答案: =======(答案1)======= Case is>100 ,is<0 =========或========= case is<0 ,is>100 =======(答案2)======= Case 90 to 100 =======(答案3)======= Case else 第71题 (1.0分) 题号:473 '-----------------------------------------------'【程序改错】 '-----------------------------------------------'题目:下列程序进行-n阶乘运算,当阶乘的值超过-21147483648 溢出报错,并将结果输出为-1。 '-----------------------------------------------Option Explicit '**********FOUND********** Private Function jc(ByVal n As Integer) As Integer Dim I As Integer Dim result As Long result = 1 I = 1 Do While I <= n
'-----------------------------------------------'题目:从计算机输入三个数 , 找出中间数 '-----------------------------------------------Option Explicit Private Sub FindMidNum() Dim x As Integer, y As Integer, z As Integer, A As Integer x = InputBox("PLEASE INPUT THE FIRST NUMBER") y = InputBox("PLEASE INPUT THE SECOND NUMBER") z = InputBox("PLESSE INPUT THE THIRD NUMBER") '**********FOUND********** If x > y Then A = x x = y y = A End If '**********FOUND********** If y = z Then Print y '**********FOUND********** ElseIf x = z Then Print z Else Print x End If End Sub Private Sub Form_Click() FindMidNum End Sub
答案: =======(答案1)======= m = n =======(答案2)======= gcd = n =======(答案3)======= c = gcd(a, b) 第65题 (1.0分) 题号:492
'-----------------------------------------------'【程序改错】 '-----------------------------------------------'题目:输入两个正整数m和n,求其最大公约数。 '-----------------------------------------------Option Explicit Private Sub Form_Click() Dim m As Integer, n As Integer, r As Integer m = InputBox("输入m的值:") n = InputBox("输入n的值:") Do While n <> 0 '**********FOUND********** r = m / n m = n '**********FOUND********** n = m Loop '**********FOUND********** Print "两数的最大公因子为:"; n End Sub 答案: =======(答案1)======= r = m Mod n =======(答案2)======= n = r =======(答案3)======= Print "两数的最大公因子为:"; m 第66题 (1.0分) 题号:467 '-----------------------------------------------'【程序改错】
=======(答案3)======= MsgBox outstr, vbQuestion, "The Output Result " 第59题 (1.0分) 题号:147 '-----------------------------------------------'【程序改错】 '-----------------------------------------------'题目:下面的程序用来产生并输出图示的杨辉三角。 ' 1 ' 1 1 ' 1 2 1 ' 1 3 3 1 ' 1 4 6 4 1 ' 1 5 10 10 5 1 '-----------------------------------------------Option Explicit Public Sub readin(a() As Integer, n As Integer) Dim i, j As Integer For i = 1 To n '**********FOUND********** a(i, n) = 1 a(i, 1) = 1 Next i For i = 3 To n '**********FOUND********** For j = 2 To n a(i, j) = a(i - 1, j) + a(i - 1, j - 1) Next j Next i End Sub Public Sub printf(a() As Integer, n As Integer) Dim i, j As Integer For i = 1 To n '**********FOUND**********
相关文档
最新文档