1、国家二级 VB机试(控制结构)模拟试卷 14及答案解析(总分:54.00,做题时间:90 分钟)一、选择题(总题数:27,分数:54.00)1.编写如下程序:Private Sub Commandl_Click() Dim a(10)As String s=“123456“:n=Len(s) For k=1 To n a(k)=Mid(s,k,1) Next k For i=1 To n2 t=a(i) a(i)=a(ni+1):a(ni+1)=t Next i For k=1 To n Print a(k); Next kEnd Sub 程序运行后,单击命令按钮 Commandl,输出结果为
2、(分数:2.00)A.654321B.123456C.654123D.1236542.窗体上有 1个名称为 Commandl的命令按钮;1 个名称为 List1、没有列表项的列表框。编写如下程序:Private Sub Commandl_Click() Dim x As String,s As String,temp As String Dim iAs Integer x=InputBox(“输入字符串“,“输入“) Ifx“Then For i=Len(x)To 1 Step-1 s=Mid(x,i,1) If S“Then temp=s+temp Else List1AddItem tem
3、p s=“:temp=“ End If Next List1AddItem temp Else MsgBox“输入内容为空!“ End IfEnd Sub 程序运行后,单击命令按钮 Commandl,并输入“Happy new year”,则在 Lis1中显示的内容为(分数:2.00)A.year new HappyB.Happy new yearC.raey wen yppaHD.yopaH wen raey3.设窗体上有一个文本框 Text1和一个命令按钮 Command1,并有以下事件过程:Private Sub Command1_Click()Dim s As String,ch As
4、 String S=“For k=1 To Len(Text1)ch=Mid(Text1,k,1)s=ch+s Next k Text1Text=s End Sub 程序执行时,在文本框中输入“Basic”,然后单击命令按钮,则 Text1中显示的是(分数:2.00)A.BasicB.cisaBC.BASICD.CISAB4.某人编写了如下程序,用来求 10个整数(整数从键盘输入)中的最大值:Private Sub Commandl_Click() Dim a(10)As Integer,max As Integer For k=1 To 10 a(k)=InputBox(“输入一个整数“)
5、Nextk max=0 For k=1 To 10 Ifa(k)max Then max=a(k) End If Next k Print maxEnd Sub 运行程序时发现,当输入 10个正数时,可以得到正确结果,但输入 10个负数时结果是错误的,程序需要修改。下面的修改中可以得到正确运行结果的是(分数:2.00)A.把 Ifa(k)max Then 改为 Ifa(k)max ThenB.把 max=a(k)改为 a(k)=maxC.把第 2个循环语句 For k=1 To 10改为 For k=2 To 10D.把 max=0改为 max=a(10)5.在窗体上画一个名称为 Textl的
6、文本框和一个名称为 Commandl的命令按钮,然后编写如下事件过程:Private Sub Commandl_Click() Dim iAs Integer,nAs Integer For i=0 To 50 i=i+3:n=n+1 If i10 Then Exit For Next Text1TeXt=Str(n)End Sub 程序运行后,单击命令按钮,在文本框中显示的值是(分数:2.00)A.2B.3C.4D.56.在窗体上画一个名为 Command1的命令按钮,然后编写如下代码:Option Base 1Private Sub Commandl_Click() Dim a a=Arr
7、ay(1,2,3,4):J=1 For i=4 To 1 Step1 s=s+a(i)*j:j=j*10 Next i Print SEnd Sub运行上面的程序,其输出结果是(分数:2.00)A.1234B.12C.34D.43217.在窗体上画一个名称为 Textl的文本框和一个名称为 Commandl的命令按钮,然后编写如下事件过程:Private Sub Commandl Click() Dim iAs Integer,nAs Integer For i=0 To 50 i=i+3:n=n+1 Ifi10 Then Exit For Next Text1Text=Str(n)End S
8、ub 程序运行后,单击命令按钮,在文本框中显示的值是(分数:2.00)A.2B.3C.4D.58.在窗体上画一个名称为 Commandl的命令按钮,然后编写如下程序: Option Base 1Private Sub Commandl_Ciek()d=0:c=10:x=Array(10,12,21,32,24)For i=1 To 5 Ifx(i)c Then d=d+x(i):c=x(i) Else d=dc End If Next i Print dEnd Sub 程序运行后,如果单击命令按钮,则在窗体上输出的内容为(分数:2.00)A.89B.99C.23D.779.在窗体上画 1个名称
9、为 Commandl的命令按钮,并编写如下事件过程: Private Sub Commandl_Click() x=1:s=0 For i=1 To 5 x=xi:s=s+x Next Print sEnd Sub 该事件过程的功能是计算(分数:2.00)A.s=1+2+3+4+5qB.s=1+12+13+14+15C.s=1+12!+13!+14!+15!D.s=1+1(1*2)+1(2*3)+1(3*4)+1(4*5)10.有如下程序:Private Sub Form_Click() Dim i As Integer,n As Integer For i=1 To 20 i=i+4:n=n
10、+i Ifi10 Then Exit For Next Print nEnd Sub 程序运行后,单击窗体,则输出结果是(分数:2.00)A.14B.15C.29D.3011.有以下通用过程:Function fun(N As Integer) s=0 For k=1 To N s=s+k*(k+1) Next k fun=sEnd Function该过程的功能是(分数:2.00)A.计算 N!B.计算 1+2+3+NC.计算 12233NND.计算 12+23+34+N(N+1)12.编写如下程序:Option Base 1Prirate Sub Commandl_Click() Dim a
11、 a=Array(1,2,3,4):s=0:j=1 For i=4 To 1 Step1 s=s+a(i)*j:j=j*10 Next i Print sEnd Sub 程序运行后,单击命令按钮 Commandl,输出结果为(分数:2.00)A.110B.123C.1234D.432113.在窗体上画一个名称为 Commandl的命令按钮,编写如下事件过程:Private Sub Commandl_Click()n=0For i=0 To 10 X=2*i一 1IfX Mod 3=0 Then n=n+1 Next i Print nEnd Sub运行程序,单击命令按钮,则窗体上显示的是(分数
12、:2.00)A.1B.3C.5D.714.窗体上有一个名称为 Textl的文本框,一个名称为 Commandl的命令按钮。要求编写一个程序,统计文本框中 0-9各数字字符的个数。某人编写如下程序:Prirate Sub Commandl_Click()Dim count(10)As Integer第 1个 For循环 For i=0 To 9 count(i)=0 Next s=Trim(Text1,Text) strLen=Len(s)第 2个For循环 For i=1 To strLen c=Mid(s,i,1) If c=“0“And c=“9“Then x=Val(c):count(i
13、)=count(i)+1 End IfNext第 3个 For循环 For i=0 To 9 Print Str(i),count(i) NextEnd Sub 运行程序后,发现不能实现题目的要求,程序应该进行的修改是(分数:2.00)A.将第 2个 For循环的初值改为 0B.将第 2个 For语句改为 For i=0 To 9C.去掉 x=Val(c)语句D.将 count(i)=count(i)+1改为 count(x)=count(x)+115.在窗体上画一个组合框,其名称为 Combol,然后编写如下事件过程:Private Sub Form_Load()CombolText=”1”
14、For i=1 To 10 Sum=Sum+i Next i CombolText=SumEnd Sub 程序运行后,输出结果为(分数:2.00)A.在组合框的编辑区中显示 1B.在组合框的编辑区中显示不定值C.在组合框的编辑区中显示 55D.出错信息16.下面循环语句中在任何情况下都至少执行一次循环体的是(分数:2.00)A.Do While条件 循环体 LoopB.While条件 循环体 WendC.Do 循环体 LoopUntil条件D.Do Until条件 循环体 Loop17.设 a、b 都是自然数,为求 a除以 b的余数,某人编写了以下函数:Function fun(a As In
15、teger,b As Integer)While ab a=ab Wend fun=aEnd Function 在调试时发现函数是错误的。为使函数能产生正确的返回值,应做的修改是(分数:2.00)A.把 a=ab 改为 a=baB.把 a=ab 改为 a=abC.把 While ab 改为 While abD.把 While ab 改为 While a=b18.设有如下事件过程:Private Sub Form_Click() x=0 While x10 x=x+1:x=x*x Wend Print x End Sub运行程序,单击窗体,输出结果是(分数:2.00)A.16B.19C.20D.
16、2519.下面程序在调试时出现了死循环 Private Sub Commandl_Click() n=InputBox(“请输入一个整数”) Do Ifn Mod 2=0 Then n=n+1 Else n=n+2 End If Loop Until n=1000End Sub(分数:2.00)A.只有输入的 n是偶数时才会出现死循环,否则不会B.只有输入的 n是奇数时才会出现死循环,否则不会C.只有输入的 n是大于 1000的整数时才会出现死循环,否则不会D.输入任何整数都会出现死循环20.假定有以下循环结构 Do Until条件表达式循环体 Loop则以下正确的描述是(分数:2.00)A.
17、如果“条件表达式”的值是 0,则一次循环体也不执行B.如果“条件表达式”的值不为 0,则至少执行一次循环体C.不论“条件表达式”的值是否为“真”,至少要执行一次循环体D.如果“条件表达式”的值恒为 0,则无限次执行循环体21.以下 Visual Basic不支持的循环结构是(分数:2.00)A.ForNextB.For EachNextC.DoLoopD.DoEnd Do22.在窗体上画两个文本框(名称分别为 Text1和 Text2)和一个命令按钮(名称为 Commandl),然后编写如下事件过程:Private Sub Commandl_Click() x=0 Do While x50 x
18、=(x+2)*(x+3):n=n+1 Loop TexttText=Str*(n):Text2Text=Str(x)End Sub 程序运行后,单击命令按钮,在两个文本框中显示的值分别为(分数:2.00)A.1和 0B.2和 72C.3和 50D.4和 16823.编写如下程序:Private Sub Commandl_Click()Dim x As Integer,y As Integer x=1:y=1 Do y=x*y Ify10 Then Exit Do Else x=x+3 End If Loop Until x=10 Print x;yEnd Sub 程序运行后,单击命令按钮 Co
19、mmandl,输出结果为(分数:2.00)A.1 1B.4 1C.4 2D.7 2824.编写如下程序:Private Sub Commandl_Click() Dim nAs Long,SAs String n=InputBox(“输入一个数“) Do While n0 S=S&n Mod 10:s=s&n10 Mod 10 n=n100 Loop Print sEnd Sub 程序运行后,单击命令按钮 Commandl,并输入数值 123456,则输出结果为(分数:2.00)A.654321B.563412C.642531D.61524325.下面程序计算并输出的是 Private Sub
20、 Commandl_Click()a=10:s=0 Do s=s+a*a*a:a=a1 Loop Until a=0 Print sEnd Sub(分数:2.00)A.13+23+33+103的值B.10!+3!+2!+1!的值C.(1+2+3+10)3的值D.10个 103的和26.窗体上有 1个名称为 Commandl的命令按钮,事件过程如下:Private Sub Commandl_Click() Dim x,y,z x=InputBox(“请输入第 1个整数“):y=InputBox(“请输入第 2个整数“) Do Until x=y Ifxy Then x=xy Else y=yx
21、End if Loop Print xEnd Sub 运行程序,单击命令按钮,并输入 2个整数 169和 39,则在窗体上显示的内容为(分数:2.00)A.11B.13C.23D.3927.窗体上有 1个名称为 Commandl的命令按钮,事件过程及函数过程如下:Private Sub Commandl _Click()Dim m As String m=InputBox(“请输入字符串“) Print pick_str(m)End SubPrivate Function pick_str(s As String)As String temp=“:i=1:sLen=Len(s) Do Whil
22、e i=sLen2 temp=temp+Mid(s,i,1)+Mid(s,sLen-i+1,1) i=i+1 Loop pick_str=tempEnd Function 运行程序,单击命令按钮,并在输入对话框中输入“basic”,则在窗体上显示的内容为(分数:2.00)A.bcaiB.cbiaC.bcaisD.cbias国家二级 VB机试(控制结构)模拟试卷 14答案解析(总分:54.00,做题时间:90 分钟)一、选择题(总题数:27,分数:54.00)1.编写如下程序:Private Sub Commandl_Click() Dim a(10)As String s=“123456“:n
23、=Len(s) For k=1 To n a(k)=Mid(s,k,1) Next k For i=1 To n2 t=a(i) a(i)=a(ni+1):a(ni+1)=t Next i For k=1 To n Print a(k); Next kEnd Sub 程序运行后,单击命令按钮 Commandl,输出结果为(分数:2.00)A.654321 B.123456C.654123D.123654解析:解析:本题中有三个 For循环,但是这三个循环之间没有嵌套关系,而是顺序的关系。在第一个循环中依次取出字符串 s中的每一个字符存入数组 a;第二个循环中将数组的第一个元素和最后一个元素互换
24、,第二个元素和倒数第二个元素互换以此类推完成数组的逆序;第三个循环输出数组元素。2.窗体上有 1个名称为 Commandl的命令按钮;1 个名称为 List1、没有列表项的列表框。编写如下程序:Private Sub Commandl_Click() Dim x As String,s As String,temp As String Dim iAs Integer x=InputBox(“输入字符串“,“输入“) Ifx“Then For i=Len(x)To 1 Step-1 s=Mid(x,i,1) If S“Then temp=s+temp Else List1AddItem temp
25、 s=“:temp=“ End If Next List1AddItem temp Else MsgBox“输入内容为空!“ End IfEnd Sub 程序运行后,单击命令按钮 Commandl,并输入“Happy new year”,则在 Lis1中显示的内容为(分数:2.00)A.year new Happy B.Happy new yearC.raey wen yppaHD.yopaH wen raey解析:解析:本题的循环中倒序从字符串 s中依次取出每一个字符,只要该字符不是空格就将其连接到temp的前面,见到空格就把连接好的 temp加入到列表框中,即先加入 year,然后是 ne
26、w,最后是Happy。3.设窗体上有一个文本框 Text1和一个命令按钮 Command1,并有以下事件过程:Private Sub Command1_Click()Dim s As String,ch As String S=“For k=1 To Len(Text1)ch=Mid(Text1,k,1)s=ch+s Next k Text1Text=s End Sub 程序执行时,在文本框中输入“Basic”,然后单击命令按钮,则 Text1中显示的是(分数:2.00)A.BasicB.cisaB C.BASICD.CISAB解析:解析:本题考查的考点是有关循环和取子串函数的。本题比较简单,
27、循环次数就是字符串的长度,每次都在第 k位取一个字母,最后倒序连接起来。注意每次都把 ch连接到 s的前面。4.某人编写了如下程序,用来求 10个整数(整数从键盘输入)中的最大值:Private Sub Commandl_Click() Dim a(10)As Integer,max As Integer For k=1 To 10 a(k)=InputBox(“输入一个整数“) Nextk max=0 For k=1 To 10 Ifa(k)max Then max=a(k) End If Next k Print maxEnd Sub 运行程序时发现,当输入 10个正数时,可以得到正确结果
28、,但输入 10个负数时结果是错误的,程序需要修改。下面的修改中可以得到正确运行结果的是(分数:2.00)A.把 Ifa(k)max Then 改为 Ifa(k)max ThenB.把 max=a(k)改为 a(k)=maxC.把第 2个循环语句 For k=1 To 10改为 For k=2 To 10D.把 max=0改为 max=a(10) 解析:解析:本题考查的考点是有关循环和数组的。本题为了实现求取最大值,首先应该假设数组中的某一个数就是最大值,再依次与数组元素比较,一旦某个元素比当前的最大值大,就把它作为新的最大值。max初值设为 0是不可以的,它没有考虑到数组元素都小于 0的情况。
29、5.在窗体上画一个名称为 Textl的文本框和一个名称为 Commandl的命令按钮,然后编写如下事件过程:Private Sub Commandl_Click() Dim iAs Integer,nAs Integer For i=0 To 50 i=i+3:n=n+1 If i10 Then Exit For Next Text1TeXt=Str(n)End Sub 程序运行后,单击命令按钮,在文本框中显示的值是(分数:2.00)A.2B.3 C.4D.5解析:解析:本题考查的考点是有关循环的。实际上本题就要关注循环何时结束,第一次循环中,i 的值变成 3,n 的值变为 1,然后 i+1变
30、成 4;由于满足循环条件,所以第二次循环中,i 的值变成 7,n 的值变为 2,然后 i+1变成 8;由于还是满足循环条件,所以第三次循环中,i 的值变成 11,n 的值变为 3,然后判断由于 i已经大于 10,所以退出循环,最后 n的值为 3。6.在窗体上画一个名为 Command1的命令按钮,然后编写如下代码:Option Base 1Private Sub Commandl_Click() Dim a a=Array(1,2,3,4):J=1 For i=4 To 1 Step1 s=s+a(i)*j:j=j*10 Next i Print SEnd Sub运行上面的程序,其输出结果是(
31、分数:2.00)A.1234 B.12C.34D.4321解析:解析:本题考查的考点是有关循环的。本题也很简单,首先取得数组的最后一个元素加到累加变量中,然后取倒数第二个元素,乘 10后加到累加变量中,然后取倒数第三个元素,乘 100后加到累加变量中,以此类推,最后结果为 1234。7.在窗体上画一个名称为 Textl的文本框和一个名称为 Commandl的命令按钮,然后编写如下事件过程:Private Sub Commandl Click() Dim iAs Integer,nAs Integer For i=0 To 50 i=i+3:n=n+1 Ifi10 Then Exit For N
32、ext Text1Text=Str(n)End Sub 程序运行后,单击命令按钮,在文本框中显示的值是(分数:2.00)A.2B.3 C.4D.5解析:解析:语句 Exit For的作用是退出当前 For循环。本题中。For 循环语句的循环变量 i不仅在执行到 Next语句时后自动加 1,而且在每次执行循环体中的 i=i+3语句时,还会加 3。当第 1次进入循环体时 i=0、n=0;当第 2次进入循环体时 i=4、n=1;当第 3次进入循环体时 i=8、n=2,此时当执行 i=i+3和n=n+1语句后,i=11、n=3,If 语句的条件表达式 i10 为真,将退出循环,故文本框中显示的值为 3
33、。8.在窗体上画一个名称为 Commandl的命令按钮,然后编写如下程序: Option Base 1Private Sub Commandl_Ciek()d=0:c=10:x=Array(10,12,21,32,24)For i=1 To 5 Ifx(i)c Then d=d+x(i):c=x(i) Else d=dc End If Next i Print dEnd Sub 程序运行后,如果单击命令按钮,则在窗体上输出的内容为(分数:2.00)A.89B.99C.23 D.77解析:解析:本题的循环中依次用数组的每个元素和 c进行比较,如果比 c大就将数组元素累加,并令数组元素成为新的 c
34、值;否则令累加和 d减去 c。在 5次循环中 d的累加过程为10+12+21+3232=23。9.在窗体上画 1个名称为 Commandl的命令按钮,并编写如下事件过程: Private Sub Commandl_Click() x=1:s=0 For i=1 To 5 x=xi:s=s+x Next Print sEnd Sub 该事件过程的功能是计算(分数:2.00)A.s=1+2+3+4+5qB.s=1+12+13+14+15C.s=1+12!+13!+14!+15! D.s=1+1(1*2)+1(2*3)+1(3*4)+1(4*5)解析:解析:在本题的循环中每次累加的变量是 x,而 x
35、在每次的循环中都会除以 i,即第一次除以 1,第二次再除以 2,第三次再除以 3以此类推 C选项是正确答案。10.有如下程序:Private Sub Form_Click() Dim i As Integer,n As Integer For i=1 To 20 i=i+4:n=n+i Ifi10 Then Exit For Next Print nEnd Sub 程序运行后,单击窗体,则输出结果是(分数:2.00)A.14B.15C.29D.30 解析:解析:本题的 For循环中改变了循环变量 i的值,而且在循环中还有 Exit语句退出循环,故此需要逐次循环进行分析。第一次循环中 i的初值为
36、 1,然后变为 5,将其累加到 n中然后因其不满足 If条件,所以 i的值加上步长 1(特别重要很容易忘记)继续循环:第二次循环开始 i的值为 6,加上 4以后变为10,将其累加到 n中然后因其不满足 If条件,所以 i的值加上步长 1继续循环;第三次循环开始 i的值为 11,加上 4以后变为 15,将其累加到 n中然后因其满足 If条件退出循环,所以累加三次的值为5+10+15=30。11.有以下通用过程:Function fun(N As Integer) s=0 For k=1 To N s=s+k*(k+1) Next k fun=sEnd Function该过程的功能是(分数:2.0
37、0)A.计算 N!B.计算 1+2+3+NC.计算 12233NND.计算 12+23+34+N(N+1) 解析:解析:在函数中每次向累加和变量 s中累加 k*(k+1)的值,循环变量 k从 1循环到 N,即为求12+23+34+N(N+1)的值。12.编写如下程序:Option Base 1Prirate Sub Commandl_Click() Dim a a=Array(1,2,3,4):s=0:j=1 For i=4 To 1 Step1 s=s+a(i)*j:j=j*10 Next i Print sEnd Sub 程序运行后,单击命令按钮 Commandl,输出结果为(分数:2.0
38、0)A.110B.123C.1234 D.4321解析:解析:本题的循环首先取出数组的最后一位累加,然后取出倒数第二位乘以 10以后累加;然后取出倒数第三位乘以 100后累加以此类推,最终结果为 1234。13.在窗体上画一个名称为 Commandl的命令按钮,编写如下事件过程:Private Sub Commandl_Click()n=0For i=0 To 10 X=2*i一 1IfX Mod 3=0 Then n=n+1 Next i Print nEnd Sub运行程序,单击命令按钮,则窗体上显示的是(分数:2.00)A.1B.3 C.5D.7解析:解析:本题的 For循环共执行 11
39、次,在每次循环中计算出一个 X的值,然后判断能否被 3整除,如能整除则令计数器 n自加 1。14.窗体上有一个名称为 Textl的文本框,一个名称为 Commandl的命令按钮。要求编写一个程序,统计文本框中 0-9各数字字符的个数。某人编写如下程序:Prirate Sub Commandl_Click()Dim count(10)As Integer第 1个 For循环 For i=0 To 9 count(i)=0 Next s=Trim(Text1,Text) strLen=Len(s)第 2个For循环 For i=1 To strLen c=Mid(s,i,1) If c=“0“An
40、d c=“9“Then x=Val(c):count(i)=count(i)+1 End IfNext第 3个 For循环 For i=0 To 9 Print Str(i),count(i) NextEnd Sub 运行程序后,发现不能实现题目的要求,程序应该进行的修改是(分数:2.00)A.将第 2个 For循环的初值改为 0B.将第 2个 For语句改为 For i=0 To 9C.去掉 x=Val(c)语句D.将 count(i)=count(i)+1改为 count(x)=count(x)+1 解析:解析:本题中要求分别统计数字 09 的个数,使用了一个数组 count来存放各个数字
41、的个数。在第一个 For循环中,将数组的各个元素设置为 0,在第二个循环中,依次取出字符串中的每一个字符,判断是不是在 09 之间,如果在范围内,则应该令对应的数组元素加 1。如果写成 count(i)=count(i)+1,只能顺序的令每一个数组元素都加 1,只有改写成 count(x)=count(x)+1,让 x作为下标,才能保证让 x对应的数组元素加 1。15.在窗体上画一个组合框,其名称为 Combol,然后编写如下事件过程:Private Sub Form_Load()CombolText=”1”For i=1 To 10 Sum=Sum+i Next i CombolText=S
42、umEnd Sub 程序运行后,输出结果为(分数:2.00)A.在组合框的编辑区中显示 1B.在组合框的编辑区中显示不定值C.在组合框的编辑区中显示 55 D.出错信息解析:解析:组合框的 Text属性将会返回或者设置编辑区中的文本,本题中显示的是 110 的累加和55。16.下面循环语句中在任何情况下都至少执行一次循环体的是(分数:2.00)A.Do While条件 循环体 LoopB.While条件 循环体 WendC.Do 循环体 LoopUntil条件 D.Do Until条件 循环体 Loop解析:解析:本题考查循环,Do Loop Until 循环至少会执行一次,该循环是先执行然后
43、判断循环条件。17.设 a、b 都是自然数,为求 a除以 b的余数,某人编写了以下函数:Function fun(a As Integer,b As Integer)While ab a=ab Wend fun=aEnd Function 在调试时发现函数是错误的。为使函数能产生正确的返回值,应做的修改是(分数:2.00)A.把 a=ab 改为 a=baB.把 a=ab 改为 a=abC.把 While ab 改为 While abD.把 While ab 改为 While a=b 解析:解析:本题函数过程的原代码仅适合 a不能被 b整除的两数,而当 a能被 b整除时则不适用,如a=4,b=2
44、,a 除以 b的余数为 0,而原代码返回的函数值为 2。因此需将语句 While ab 改为 While a=b。18.设有如下事件过程:Private Sub Form_Click() x=0 While x10 x=x+1:x=x*x Wend Print x End Sub运行程序,单击窗体,输出结果是(分数:2.00)A.16B.19C.20D.25 解析:解析:本题是简单 While循环,在循环中改变循环变量 x的值,要注意退出循环时 x必然是不会满足循环条件的。本题中循环中 x依次变化为 1、4、25。19.下面程序在调试时出现了死循环 Private Sub Commandl_C
45、lick() n=InputBox(“请输入一个整数”) Do Ifn Mod 2=0 Then n=n+1 Else n=n+2 End If Loop Until n=1000End Sub(分数:2.00)A.只有输入的 n是偶数时才会出现死循环,否则不会B.只有输入的 n是奇数时才会出现死循环,否则不会C.只有输入的 n是大于 1000的整数时才会出现死循环,否则不会D.输入任何整数都会出现死循环 解析:解析:本题考查循环。如果输入的 n是偶数,那么在循环体中执行 n=n+1,偶数+1 是奇数,循环结束条件 Loop Until n=1000不会满足,形成死循环;如果输入的 n是奇数,
46、那么循环体内执行 n=n+2,奇数+2 依然是奇数,循环结束条件永远不会满足,也形成死循环。20.假定有以下循环结构 Do Until条件表达式循环体 Loop则以下正确的描述是(分数:2.00)A.如果“条件表达式”的值是 0,则一次循环体也不执行B.如果“条件表达式”的值不为 0,则至少执行一次循环体C.不论“条件表达式”的值是否为“真”,至少要执行一次循环体D.如果“条件表达式”的值恒为 0,则无限次执行循环体 解析:解析:本题考查的考点是有关 Do型循环的。对于这种循环结构,首先看条件判断在循环体的前面还是后面,如果是先判断条件,则有可能一次也不执行循环体;如果是后判断条件,则无论条件
47、如何至少执行一次循环体。在 Until循环中条件为 False时执行循环体,条件为 True时退出循环;在 While循环中条件为 True时执行循环体,条件为 False时退出循环,这一点要注意区分清楚。21.以下 Visual Basic不支持的循环结构是(分数:2.00)A.ForNextB.For EachNextC.DoLoopD.DoEnd Do 解析:解析:Visual Basic 支持的循环结构包括:ForNext 循环、For EachNext 循环、DoLoop 循环和 While循环。22.在窗体上画两个文本框(名称分别为 Text1和 Text2)和一个命令按钮(名称为
48、 Commandl),然后编写如下事件过程:Private Sub Commandl_Click() x=0 Do While x50 x=(x+2)*(x+3):n=n+1 Loop TexttText=Str*(n):Text2Text=Str(x)End Sub 程序运行后,单击命令按钮,在两个文本框中显示的值分别为(分数:2.00)A.1和 0B.2和 72 C.3和 50D.4和 168解析:解析:本题考查的考点是有关 Do型循环的。对于这种循环结构,首先看条件判断在循环体的前面还是后面,如果是先判断条件,则有可能一次也不执行循环体;如果是后判断条件,则无论条件是什么,至少执行一次循
49、环体。在 until循环中条件为 False时执行循环体,条件为 True时退出循环:在 while循环中条件为 True时执行循环体,条件为 False时退出循环,这一点要注意区分清楚。本题只需要实际计算一下两次循环中 x和 n值的变化即可容易的得出结果。23.编写如下程序:Private Sub Commandl_Click()Dim x As Integer,y As Integer x=1:y=1 Do y=x*y Ify10 Then Exit Do Else x=x+3 End If Loop Until x=10 Print x;yEnd Sub 程序运行后,单击命令按钮 Commandl,输出结果为(分数:2.00)A.1 1B.4 1 C.4 2D.7 28解析:解析:Do 型循环