第三部分 控制结构复习题
一、选择题
1. 结构化程序由三种基本结构组成,下面属于三种基本结构之一的是( )。
(A)递归结构 (B)选择结构 (C)过程结构 (D)输入、输出结构2.下面程序段运行后,显示的结果是( )。
Dim x
If x Then Print x Else Print x + 1
(A)1 (B)0 (C)?1 (D)显示出错信息 3. 语句If x=1 Then y=1,下列说法正确的是( )。
(A)x=1和y=1均为赋值语句
(B)x=1和y=1均为关系表达式
(C)x=1为关系表达式,y=1为赋值语句 (D)x=1为赋值语句,y=1为关系表达式
4. 计算分段函数值: ??0,x?0下面程序段中正确的是( )。
y???1,0?x?1 ?2,1?x?2
?
?3,x?2(A)If x < 0 Then y = 0
(B)If x >= 2 Then y = 3
If x < 1 Then y = 1 If x >= 1 Then y = 2 If x < 2 Then y = 2 If x > 0 Then y = 1 If x >= 2 Then y = 3
If x < 0 Then y = 0 (C)If x < 0 Then
(D)If x > =2 Then
y = 0 y = 3 ElseIf x > 0 Then ElseIf x > =1 Then y = 1 y = 2 ElseIf x > 1 Then
ElseIf x > =0 Then y = 2 y = 1 Else
Else y = 3
y = 0 End If
End If
5.下面程序段求两个数中的大数,( )不正确。
(A)Max = IIf(x > y, x, y) (B)If x > y Then Max = x Else Max = y (C)Max = x (D)If y >= x Then Max = y
If y >= x Then Max = y
Max = x
1
6. 下列循环能正常结束循环的是( )。 (A)i = 5 (B) i = 1
Do
Do i = i + 1
i = i + 2 Loop Until i < 0
Loop Until i = 10
(C)i = 10
(D)i = 6
Do
Do
i = i + 1
i = i?2
Loop Until i > 0
Loop Until i = 1
7. 下面程序段的运行结果为( )。 For i = 3 To 1 Step?1
Print Spc(5?i);
For j = 1 To 2 * i?1 Print \ Next j Print Next i
(A) *
(B)*****
(C)*****
***
***
*** ***** * *
8. 哪个程序段不能分别正确显示1!、2!、3!、4!的值( (A)For i = 1 To 4 (B)For i = 1 To 4
n = 1
For j = 1 To i For j = 1 To i n = 1 n = n * j n = n * j Next j Next j Print n
Print n
Next i
Next i
(C)n = 1
(D)n = 1
For j = 1 To 4 j=1 n = n * j Do While j<=4
Print n n = n * j Next j Print n
j=j+1 Loop
9.程序运行后,单击命令按钮,结果为( )。
Private Sub Command1_Click() n = 6 f = 1 s = 0
For I = 2 To n Step 2 f = f * i s = s + f
Next i
D)*****
***
*
)。 2
(
Print s End Sub
(A) 72 (B) 6 (C)58 (D) 10 10.下列程序运行后输出的结果是( )
a$=\ For j = 1 To 2
a$ = b$ : b$=c$ : c$=a$ Next j
Print a$ + b$ + c$ End
(A) BCCAAB (B) CAABBC (C) BCCABC (D) CABCCA 11.InputBox函数的返回值的类型为______。
A.数值 B.字符串 C.逻辑值 D.日期值 12. MsgBox函数的返回值的类型为______。
A.整数 B.字符串 C.逻辑值 D.日期值
二、 填空题
1.要使下列FOR语句循环执行20次,循环变量的初值应当是:
For k =【 1 】To?5 Step?2
2. 下面程序段显示【 2 】个“*”。
For i = 1 To 5 For j = 2 To i Print \ Next j Next i
3. 找出被3、5、7除,余数为1的最小的5个正整数。
Private Sub Command1_Click() Dim CountN%, n% CountN = 0 n = 1 Do n = n + 1
If 【3 】 Then Print n
CountN = CountN + 1 End If
Loop【 4 】 End Sub
4.在窗体上画两个名称分别为Text1、Text2的文本框和一个名称为Command1的命令按钮,然后编写如下事件过程:
Private Sub Command1_Click() Dim x As Integer,n As Integer x=1
3
n=0
Do While x<20 x=x*3 n=n+1 Loop
Text1.Text=Str(x) Text2.Text=Str(n) End Sub
单击命令按钮,文本框Text1和Text2显示的内容是【5 】和【6 】。 5.输入任意长度的字符串,要求将字母顺序倒置 dim a$,c$,d$,n%,I%
a=inputbox(“输入字符串“) n=【 7 】
for I = 1 to n c=mid(a,I,1) d=【 8 】 next I a=d print a
6. 以下是按钮Command1的Click事件过程,求100以内所有素数,选择填空使程序完整: Private Sub Command1_Click() Dim i%, j%,flag% For i = 2 To 100 【 9 】
For j = 2 To sqr(i)
If i Mod j = 0 Then flag = 0 【10 】 End If Next j
If flag = 1 Then Print i Next i End Sub
7.下面程序运行后的结果为 【11 】 。 x=Int (Rnd( ))+3
If x^2 >8 Then y=x^2+1 If x^2=9 Then y=x^2-2
If x^2<8 Then y=x^3 Print y
8. 从键盘输入一个实数mm,请简要写出下列程序实现的功能是什么? 【12 】 Private Sub Command1_Click()
mm=Val(InputBox(\请输入一个实数\ n$=Str$(mm)
p=InStr(n, \‘InStr()函数:指定一字符串在另一字符串中最先出现的位置
4
If p>0 Then
Print Mid(n,p) ‘Mid 语句来得到某个字符串中的几个字符 Else
Print \ End If End Sub
9.下面程序运行后,单击命令按钮,在两个文本框中显示的值分别为【13 】 Private Sub Command1_Click() x=0
Do While x<50 x=(x+2)*(x+3) n=n+1 Loop
Text1.Text=Str(n) Text2.Text=Str(x) End Sub
10.下面程序的功能是:计算f=1-1/(2*3)+1/(3*4)-1/(4*5)+??+1/(19*20)
Private Sub Form_Click() Dim f,i,sign As Integer
_______【14 】_________ f = 1
______【15 】_________
f = f + sign / (i * (i + 1))
________【16 】__________
Next i
Print “f=”;f End Sub
11.下面的程序是在一个字符串变量中查找“at”,并用消息框给出查找结果的报告:没有找到或找到的个数,程序如下:
Public Sub Findat() Dim Str1 As String Dim length As Integer Dim sum As Integer Dim i As Integer Str1 = InputBox (“请输入一个字符串”) length = _______【17 】_________
i = 1 sum = 0
Do While i <= _______【18 】_________ If _______【19 】_______ = “at” Then
sum = sum + 1 End If i = i + 1
5
Loop
If ________【20 】_________ Then MsgBox “没有找到!” Else MsgBox “找到了” & Str (sum) & “个”
End If End Sub
答案
一、选择题
1. B
2. A x没有赋值,默认为0。而在VB中,0作为逻辑常量False,非0作为True。 3. C 4. D
对于多边选择,一般从最小值开始判断,依次增大;或者从最大值开始判断,
依次减小。这样可不会被众多的条件所迷惑或考虑不周而漏了某个条件的判断。 5. D 错误原因不管x取何值,f=x*x+3语句始终执行。
6. C A死循环,永远不可能小于0;B死循环,不可能使i=10;D死循环,不可能
使i=0。 7. B 8. B 9. C 10. D 11. B 12. A
二、填空题
(1) 33 根据循环次数计算公式得。
(2)10 该题相当于统计两重循环执行了多少次。 (3) n Mod 3 = 1 And n Mod 5 = 1 And n Mod 7 = 1 (4) Until CountN = 5或While CountN < 5 (5) 27 (6) 3 (7) len(a) (8) d=c+d (9) flag=1 (10) exit for (11) 7
(12) 输出数据的小数部分 (13) 2和72 (14) sign=1
(15)for i=2 to 19 (16)sign=-1*sign (17) len(Str1) (18)Length (19mid(Str1,i,2) (20)sum=0
6
在内循环体内对存放阶乘的变量n赋初值,显示的结果是1、2、3、4。