第二部分VB上机考试模拟试题一、程序调试题(改错或填空)(二)程序调试题[题1] Modify.bas模块中的getanswer过程是用于计算一元二次方程的根,并将结果输出来。
Option ExplicitPublic Sub getanswer()'该过程是用于计算一元二次方程的根,并将结果输出来。
Dim dalt!, a#, b#, c#a = InputBox("输入系数a")b = InputBox("输入系数b")c = InputBox("输入系数c")dalt = b * b - 4 * a * cIf ----1---- dalt >0 thendalt = Sqr(dalt)MsgBox Format((-b + dalt) / 2 / a), "0.00" + Chr(13) + Chr(10) + Format((-b - dalt) / 2 / a, "0.00")Elseif ---2---- dalt =0 thenMsgBox Format(-b / 2 / a, "0.00") + Chr(13) + Chr(10) + Format(-b / 2 / a, "0.00")Elsedalt= ---3---- Sqr(-dalt)MsgBox Format((-b + dalt) / 2 / a, "0.00") + "+i" + Chr(13) + Chr(10) + Format((-b - dalt) / 2 / a, "0.00") + "-i"End IfEnd Sub[题2] 打印输出一菱形图案。
Public Sub prt()'打印由#组成的菱形图案' #' ###' #####' #######' #########' #######' #####' ###Dim start As String '每行起始空格数Dim count As Integer '每行#个数For i = 1 To 9If i <= 5 Then'------1------ start=space(21-i)count = 2 * i - 1Elsestart = Space(11 + i)'-------2------ count=19-2*iEnd If'------3------ form1.print start;For j = 1 To countForm1.Print "#";Next j'------4------ form1.printNext i [题3] 过程pyramid用以打印一个数字金字塔,请在横线上填入必要的内容(将横线删除掉后填入正确的内容),使其完整。
Option ExplicitPublic Sub pyramid()'打印数字金字塔' 1' 222' 33333' 4444444' 555555555' 6666666' 77777' 888' 9Dim i As IntegerDim j As IntegerDim start As String '每行起始空格数Dim num As Integer '每行数字个数For i = 1 To 9If i <= 5 Thenstart = Space(20 - i)num = 2 * i - 1Elsestart= '------1------ Space(10 + i)num= '------2------ 2 * (10-i) - 1End IfForm1.Print start;For j = 1 To num'------3------ form1.print trim(str(i));Next j'------4------ form1.printNext iEnd Sub[题4] 改错。
Option ExplicitPublic Sub prt()'打印由数字组成的如下所示金字塔图案' 9' 888' 77777' 6666666' 555555555' 44444444444' 3333333333333' 222222222222222' 11111111111111111Dim i As Integer, j As Integer'****** 错误1 ******For i = 9 To 1 step -1Form1.Print Space(i);'****** 错误2 ******For j = 1 To 2 *(10- i) - 1'****** 错误3 ******Form1.Print trim(str(i));Next jForm1.PrintNext i[题5] 计算s=7+77+777+……+(n个7组成的数)。
Public Sub total()'计算s=7+77+777+……+(n个7组成的数)Const n = 20Dim s As SingleDim i As IntegerFor i = 1 To ns=s+ '-------1------number(i)Next iForm1.Print "s="; sEnd SubPublic Function number('---2--- n as integer ) As Single Dim i As Integernumber = 0For i = 1 To n'---3---number=number*10+7 number=value(number & 7) Next i[题6] Modify.bas模块中的过程eat用于计算猴子共摘了多少个桃子。
Option ExplicitPublic Sub eat()'该过程是用于计算猴子共摘了多少个桃子。
'(小猴在一天摘了若干个桃子,当天吃掉了一半多一个;'第二天吃了剩下的一半多一个;'以后每天都吃尚存的一半零一个,到第7天早上要吃时只剩下一个了),'并将结果输出来。
Dim n%, i%, x%x = 1for i=6 to ---1----1 step ----2---- -1-----3---- x=2*(x+1)Next iForm1.Print "共有"; x; "个桃子"[题7] Modify.bas模块中的Prime过程是求出100到200之间所有的素数,并打印出来。
Public Sub prime()'打印出100到200之间所有的素数,并统计素数的个数Dim i As IntegerDim j As IntegerDim k As IntegerDim t As Integer '统计素数的个数Dim b As BooleanFor i = 100 To 200b = True------ 1 -------k=2j = Int(Sqr(i))Do While k <= j And bIf i Mod k = 0 Then------ 2 ------ b=falseEnd If ------ 3 ------ k=k+1Loopif ------ 4 ------- b b=true thent = t + 1Form1.Print iEnd IfNext iForm1.Print "t="; tEnd sub[题8] 过程even用以验证一个偶数可以分解为两个素数之和;Isprime用以判断x是否是素数。
请在横线上填入必要的内容(将横线删除掉后填入正确的内容),使其完整。
Public Sub even()'从键盘输入一个大于4的偶数,将它所有的不重复的分解式求出Dim x As IntegerDim i As Integer'--1-- do while x<4 or x mod 2<>0do while x<4 or x mod 2=1'保证x是大于4的偶数x = Val(InputBox("x="))LoopFor i = 3 To x / 2 Step 2 '在不大于x的奇数中找素数 '------2------ if isprime(i) and isprime(x-i)Form1.Print x; "="; i; "+"; x - iEnd IfNext iEnd SubPublic Function Isprime(x As Integer) As BooleanDim i As Integer'------3------ isprime=trueFor i = 2 To x - 1'------4------ if x mod i=0 thenIsprime = FalseExit ForEnd IfNext iEnd Function[题9] Modify.bas模块中的find过程是用于找出被3、5、7除,余数为1的最小的5个整数,并将结果输出来。
Option ExplicitPublic Sub find()'该过程是用于找出被3、5、7除,余数为1的最小的5个整数,并将结果输出来。
Dim countN%, n%countN = 0n = 1Don=----1---- n+1if --2---- n mod 3=1 and n mod 5=1 and n mod 7=1then Form1.Print ncountN = countN + 1End IfLoop ----3----- until countN=5 while countN<5End Sub[题10] Modify.bas模块中的过程rn通过调用函数isLeapYear判断某年是否是闰年,若是,则打印"今年是闰年",否则打印"今年不是闰年"。