文档库 最新最全的文档下载
当前位置:文档库 › 第4章 VB控制结构

第4章 VB控制结构

第4章 VB控制结构
第4章 VB控制结构

第4章VB控制结构

一.例题解析

(1)设有语句x=InputBox("输入数值","0","示例") , 程序运行后,如果从键盘上输入数值10并按回车键,则下列叙述中正确的是。

A)变量x的值是数值10

B)在InputBox对话框标题栏中显示的是“示例”

C)0是默认值

D)变量x的值是字符串"10"

【答案】D

【解析】InputBox函数一般格式是:

InputBox(<提示>[, 标题] [, 默认值] [, X] [, Y] [, 帮助文件名, 上下文编号])

参照一般格式可知,题干中的“输入数值”是对话框的提示部分,“0”是对话框的标题,“示例”是对话框的默认值。由于程序运行时用户输入了10,且该函数的返回值是字符串,所以选项D是正确答案。

(2)在窗体上放置一个命令按钮,然后编写如下事件过程:

Private Sub Command1_Click()

Dim a,b

a = InputBox("请输入一个整数")

b = InputBox("请输入一个整数")

Print b + a

End Sub

程序运行后,单击命令按钮,在输入对话框中分别输入321和456,输出结果为。

A)321456 B)456321

C)777 D)有语法错误,不能执行

【答案】B

【解析】“+”运算符有两个作用:对于字符串型运算数,执行字符串连接运算;对于数值型运算数,执行加法运算。InputBox函数的返回值是字符串,所以执行字符串连接运算,即将字符串a连接到字符串b之后,结果为456321。

(3)运行下列程序,单击窗体,则消息框中显示的提示是。

Private Sub Form_Click()

MsgBox Str(123 + 123)

End Sub

A)123+123 B)"246"

C)246 D)显示出错信息

【答案】C

【解析】MsgBox语句后给定的字符串参数Str(123 + 123)是消息框中要显示的提示信息。Str(123 + 123)函数首先计算算术表达式123+123,结果为246,然后将其转换为MsgBox 语句所需要的字符串类型的参数。但消息框中显示提示信息时不带字符串两侧的双引号定界符。

(4)执行如下语句后,Print语句的输出结果是。

A=100

Print IIf(A>50,"Large","Small")

A)1000 B)True C)Large D) Small

【答案】C

【解析】IIF函数的一般格式是IIf(表达式1,表达式2,表达式3)。当表达式1的值为True时,函数返回表达式2的值,否则返回表达式3的值。因而本题的正确答案是选项C。

(5)下列语句中,与Else匹配的If语句是。

If x>0 Then

If x<10 Then

Print x

Else

Print x*2

End if

End if

A)第一个B)第二个C)第一个或第二个D)程序有错误

【答案】B

【解析】当出现If语句的嵌套时,Else总是与它前面离它最近的一个If语句匹配,即“最近匹配原则”。

(6)运行下列程序,单击窗体,则输出结果是。

Private Sub Form_Click()

M = 5

If M >= 0 Then N = 1

If M >= 1 Then N = 2

If M >= 2 Then N = 3

Print N;

End Sub

A)1 B)2 C)3 D)1 2 3

【答案】C

【解析】按照语句的执行顺序,M首先被赋值为5,然后判断第一个条件M>=0,条件满足,变量N被赋值为1;继续判断第二个条件M>=1,条件仍然满足,变量N重新被赋值为2;最后判断第三个条件M>=2,条件仍然满足,所以变量N的值最后被赋值为3。Print 语句输出变量N的值是3。

(7)运行下列程序,单击窗体,从键盘输入50,则输出结果是。

Private Sub Form_Click()

a = Val(InputBox("A="))

Select Case a

Case Is < 100: Print a + 1;

Case Is < 80: Print a + 2;

Case Is < 60: Print a + 3;

Case Else: Print a + 4;

End Select

End Sub

A)51 B)52 C)53 D)51 52 53 54

【答案】A

【解析】Select Case语句的执行方法是:用测试表达式的值与第一个Case子句的表达式值进行比较,如果匹配,则执行第一个Case子句下的语句,执行完成结束Select语句的执行;如果不匹配,依次比较第二、第三、……各Case子句。

本例题中,A=50,与第一Case子句的条件匹配(Is<100),所以输出结果是51。

(8)在For循环中,循环控制变量的增量(循环步长)。

A)只能是整数B)只能是正整数

C)只能是不为0的整数D)任何数值型数据

【答案】D

【解析】For循环的控制变量和它的增量可以是任何一种数值型数据。但如果增量为0,在循环体内,必须有可以结束循环的语句,否则会形成“死循环”。

(9)运行下列程序后,单击窗体,则其中的循环体一共被执行次。

Private Sub Form_Click()

For I = 7 To 100 Step 5

Print I

Next I

End Sub

A)16 B)17 C)18 D)19

【答案】D

【解析】For~Next循环中,循环体的执行次数=Int((上界-下界)/步长+1),即Int((100-7)/5+1)。

(10)运行下列程序,单击窗体,则运行结果是。

Private Sub Form_Click()

For x = 1 To 2

a = 0

For y = 1 To x + 1

a = a + 1

Next y

Print a;

Next x

End Sub

A) 1 1 B) 0 0 C) 1 2 D) 2 3

【答案】D

【解析】本题是嵌套两层的For循环结构,外层循环控制变量是x,x的值由1变到2,控制执行两次循环体,每次执行循环体的第—个语句是把0赋给变量a,执行循环体的最后一个语句是输出a的值,用内层循环计算a的值,当x值为1时,内层循环执行2次,每次使a增1,退出内层循环时a的值为2,2是第—个输出;当x值为2时,内层循环执行3次,每次使a增1,退出内层循环时a的值为3,3是第二个输出。由于Print 语句以分号结束,因此,用紧凑格式输出2 和3。

(11)运行下列程序,单击窗体,则执行结果是。

Private Sub Form_Click()

s = 0

Do

s = (s + 1) * (s + 2)

Number = Number + 1

Loop Until s >= 30

Print Number; s

End Sub

A) 0 1 B) 30 30 C) 4 30 D) 3 182

【答案】D

【解析】本题使用了Do~Loop Until循环结构,循环初始设置s为0,循环的退出条件是s>=30,在循环中每次用(s+1)* (s+2)计算出新的s值,很容易算出第1次执行后s的值是2,第2次用3乘以4行后s的值是12,第3次用13乘以14行后s的值是182,到此s的值超过了30,退出循环。退出循环时共执行了3次循环,Number每次执行循环增l,所以Number的值是3,s的值是182。

(12)以下能够正确计算n!的程序是。

A) Private Sub Commandl_Click()

n=5: x=1

Do

x=x*i

i=i+1

Loop While i

Print x

End Sub

B) Private Sub Commandl_Click()

n=5: x=l: i=l

Do

x=x*i

i=i+1

Loop While i

Print x

End Sub

C) Private Sub Commandl_Click()

n=5: x=1: i=1

Do

x=x*i

i=i+1

Loop While i<=n

Print x

End Sub

D) Private Sub Commandl_Click()

n=5:x=l:i=l

Do

x=x*i

i=i+l

Loop While i>n

Print x

End Sub

【答案】C

【解析】选项A中在循环体外没有为变量i赋初始值,因而变量i的初值为0,则循环体执行第一次的时候,存放阶乘的变量x的值改变为0,所以选项A是错误的。

选项B中各变量的初始值是正确的,错在判断循环执行的条件While i

选项D的错误原因也是判断循环执行的条件While i>n不符合题意,使用该条件循环体只能执行一次,即终止循环,即x中求出的是1!。

(13)在窗体上画一个命令按钮,名称为Command1。然后编写如下程序:Private Sub Command1_Click()

For i = 1 To 4

For j = 0 To i

Print Chr$(65 + i);

Next j

Print

Next i

End Sub

程序运行后,如果单击命令按钮,则在窗体上显示的内容是。

A)BB B)A C) B D)AA

CCC BB CC BBB

DDDD CCC DDD CCCC

EEEEE DDDD EEEE DDDDD 【答案】A

【解析】当i为1时,j的取值为0、1,在同一行输出ASCⅡ码值为66的字符B两次后换行;同理,当i为2时,在同一行输出字符C三次后换行。依此类推。

二.练习题

1.单项选择题

1. 有如下程序:

Private Sub Form_Click()

ddd = MsgBox("注意", vbAbortRetryIgnore + vbExclamation, "标题") End Sub

运行后,单击窗体,则显示的消息对话框是。

A)

B)

C)

D)

2. 下面程序运行后,单击窗体,输出的结果是。

Private Sub Form_Click()

For i = 10 To 4 Step -2

k = i

Next i

Print k; i

End Sub

A) 5 2 B) 5 3 C) 4 2 D) 4 3

3. 下面程序中,能正确计算出10的阶乘值(10!)的是。

A) Private Sub Form_Click()

p = 0

For i = 1 To 10

p = p * i

Next i

Print p

End Sub B)Private Sub Form_Click()

p = 1

For i = 1 To 10

p = p * i

Next i

Print p

End Sub

C) Private Sub Form_Click()

For i = 1 To 10

p = 0

p = p * i

Next i

Print p

End Sub D) Private Sub Form_Click()

For i = 1 To 10

p = 1

p = p * i

Next i

Print p

End Sub

4. 下面程序运行后,单击窗体,从键盘输入a,输出的结果是。

Private Sub form_Click()

t = InputBox("请输入一个字符:")

Select Case t

Case "a"

y = String(3, UCase(t))

Case "A"

y = String(3, Lcase(t))

Case Else

y = "AaA"

End Select

Print y

End Sub

A) aaa B) AAA C) AaA D) aAa

5. 下面程序运行后,单击窗体,输出的结果是。

Private Sub Form_Click()

m = 63

n = 14

Do While m <> n

Do While m > n

m = m - n

Loop

Do While n > m

n = n - m

Loop

Loop

Print m; n

End Sub

A) 7 7 B) 1 1 C) 1 7 D) 7 1

6. 下面程序运行后,单击窗体,输出的结果是。

Private Sub Form_Click()

a$ = "1234512345"

For i = 1 To Len(a$)

k = Mid(a$, i, 1)

m = Trim(Str(Val(k) + 2))

s = s + m

Next i

Print s

End Sub

A) 30 B) 50 C)3456734567 D) 2345623456

7. 下面程序运行后,单击窗体,输出的结果是。

Private Sub form_Click()

k = "A"

For i = 5 To 0 Step -1

t = t + Chr(Asc(k) + i)

Next i

Print t

End Sub运行后输出结果是

A) ABCDE B) ABCDEF C) FEDCBA D) EDCBA

8. 下面程序运行后,单击窗体,输出的结果是。

Private Sub Form_Click()

For J = 4 To 1 Step -1

Print Tab(6 - J);

For K = 3 To 1 Step -1

Print "*";

Next K

Print

Next J

End Sub

A) *** B) *** C) *** D) ****

*** *** *** ***

*** *** *** **

*** *** *** *

9. 下面程序运行后,单击窗体,输出的结果是。

Private Sub Form_Click()

a = 100

Do

If a Mod 2 = 0 Then

s = s + 1

End If

a = a + 1

Loop While a < 121

Print a; s

End Sub

A) 120 12 B) 120 10 C) 122 12 D) 121 11

10. 下面程序运行后,单击窗体,从键盘输入1,输出的结果是。

Private Sub Form_Click()

x = -5

s = InputBox("请输入一个整数")

Select Case s

Case Is > 0: y = x + 1

Case 1 To 10: y = x + 2

Case Else: y = x + 3

End Select

Print x; y

End Sub

A) -5 -1 B) -5 -4 C) -5 -3 D) -5 -5

11. 在窗体上画一个名称为Commandl的命令按钮,然后编写如下事件过程:

Private Sub Command1_Click ()

Dim sum As Integer

sum = 1

Do Until sum > 5

Print sum

sum = sum + 2

Loop

End Sub

程序运行后,单击命令按钮,则窗体上显示的内容是。

A)l B)1 C)1 D)无数据输出

3 2 4

5 4 6

12. 在窗体上画一个名称为Commandl的命令按钮,然后编写如下事件过程:

Private Sub Command1_Click()

For n = 1 To 10

If n Mod 3 <> 0 Then m = m + n \ 5

Next n

Print m

End Sub

程序运行后,如果单击命令按钮,则窗体上显示的内容是。

A) 5 B) 3 C)2 D)4

13. 有如下程序

Private Sub Form_Click()

y = 1: x = 1

Do Until y > 5

x = x * y

y = y + 1

Loop

Print x; y

End Sub

运行后输出的结果为。

A) 120 6 B) 24 5 C)6 6 D) 显示出错信息

14. 下面程序运行后,单击窗体,则输出结果为。

Private Sub Form_Click()

a$ = "1234"

b$ = " -*/" ' 注意:字符串的第一位是空格

For j = 4 To 1 Step -1

c$ = c$ + Mid$(a$, j) + Mid$(b$, j, 1)

Next j

Print c$

End Sub

A) 4*34-234+1234 B) 4/3*2-1 C) 4/34*234-1234 D) 出错

15. 现有语句: y=IIf(x>0,x Mod 3,0) 设x=10,则y的值是。

A) 0 B) 1 C) 3 D) 语句有错

16. 设窗体上有一个文本框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

Text1.Text=s

End Sub

程序执行时,在文本框中输入"Basic",然后单击命令按钮,则Text1中显示的是。

A)Basic B)cisaB C)BASIC D)CISAB

17. 在窗体上画一个命令按钮和一个文本框,名称分别为Command1和Text1,然后编写程序:

Private Sub Command1_Click()

a=Val(InputBox("请输入日期(1~31)"))

t="旅游景点:"& IIf(a>0 And a<=10, "长城","") & _

IIf(a>10 And a<=20, "故宫","") & IIf(a>20 And a<=31, "颐和园","") Text1.Text=t

End Sub

程序运行后,如果从键盘上输入16,则在文本框中显示的内容是。

A) 旅游景点:长城故宫B) 旅游景点:长城颐和园

C) 旅游景点:颐和园D) 旅游景点:故宫

18. 在窗体上画一个名称为Command1的命令按钮,然后编写如下事件过程:

Private Sub Command1_Click()

c="ABCD"

For n=1 To 4

Print ______

Next

End Sub

程序运行后,单击命令按钮,要求在窗体上显示如下内容:

D

CD

BCD

ABCD

则在______处应填入的内容为

A) Left(c,n) B) Right(c,n) C) Mid(c,n,1) D) Mid(c,n,n)

19.以下Case语句中错误的是。

A)Case 0 to 10 B)Case Is> 10

C)Case Is>10 and Is <50 D)Case 3,5,Is>10

20. 当VB执行下面语句后,A的值为。

A=1

If A>0 Then A=A+1

If A>1 Then A=0

A.0 B.1 C.2 D.3

21. 在窗体中添加一个文本框(其中Name属性为Text1),然后编写如下代码

Private Sub Form_Click()

Text1.Text = ""

Text1.SetFocus

For i = 1 To 10

Sum = Sum + i

Next i

Text1.Text = Sum

End Sub

上述程序运行后,单击窗体,则运行的结果。

A.在文本框Text1中输出55 B.在文本框Text1中输出0

C.出错D.在文本框Text1中输出不定值

22. 在窗体上画一个名称为Text1的文本框和一个名称为Command1的命令按钮,然后编写如下事件过程:

Private Sub Command1_Click()

Dim i As Integer,n As Integer

For I=0 To 50

i=i+3

n=n+1

If i>10 Then Exit for

Next

Text1.Text=Str(n)

End Sub

程序运行后,单击命令按钮,在文本框中显示的值是。

A. 2

B. 3 D. 4 D. 5

二.填空题

1. 下列Visual Basic代码的执行结果是。

a = Abs(-5)

b = Sqr(16)

If a < b Then a = a / b Else b = a \ b

Print a; b

2. 执行下面的程序段后,变量S的值为。

S=5

For i=2.6 To 4.9 Step 0.6

S=S+1

Next i

3. 面程序运行后,单击窗体,输出的结果是。

Private Sub Form_Click()

m = 0

For i = -5 To 5

For j = 5 To 0 Step -2

m = m + 1

Next j

Next i

Print m

End Sub

4. 运行下面程序后,单击窗体,要求能够显示下图所示的消息框,请填空。

Private Sub Form_Click()

asd = MsgBox("确定", + vbInformation, "标题")

End Sub

5. 在下面的程序中,要求循环体执行4次,请填空。

Private Sub Command1_Click()

x = 1

Do While

x = x + 2

Loop

Print x

End Sub

6. 以下程序的功能是:生成20个100到300之间的随机整数,输出其中能被5整除的数并

求出它们的和。请填空。

Private Sub Command1_Click()

For i = 1 To 20

x = Int( * 200 + 100)

If = 0 Then

Print x

s = s +

End If

Next i

Print "Sum="; s

End Sub

7. 以下程序的功能是:从键盘上输入若干个学生的考试分数,当输入负数时结束输入,然

后输出其中的最高分数和最低分数。请填空。

Private Sub Form_Click()

Dim x As Integer,amax As Integer,amin As Integer

x=InputBox("输入一个分数:")

amax=x: amin=x

Do While ①

If x>amax Then amax=x

if ②Then amin=x

x=InputBox("请输入下一个分数:")

Loop

Print "Max=";amax,"Min=";amin End Sub

8. 设有以下的循环:

x=1

Do

x=x+2

Print x

Loop Until

要求程序运行时执行3次循环体,请填空。

9. 下列程序段的执行结果为

a=3:b=1

For i=1 To 3

f=a + b:a=b:b=f

Print f;

Next I

10. 设有如下程序:

Private Sub Form_Click()

Dim a As Integer, s As Integer

n=8:s=0

Do

s=s+n : n=n-1

Loop While n>0

Print s

End Sub

以上程序运行后,单击窗体,输出结果为。

相关文档