当前位置:文档之家› VB书面习题答案(第4章)

VB书面习题答案(第4章)

习题四 P94
1~15题
参考答案:

1. 结构化程序设计的三种基本结构是什么?
答:顺序结构、选择结构和循环结构

2. 指出下列赋值语句中的错误(包括运行时要产生的错误)
10 x = Sin(x) + y 答:10x是非法变量名
c = 3 + Sqr(-3) 答:待求平方根的数为负数
c x + y = c * y 答:赋值符号的左边是表达式
x = Sin(x) / (20 Mod 2) 答:分母为零

3. Msgbox函数与InputBox函数之间有什么区别?各自获得什么值?
答:两个函数的共同之处是均显示对话框。区别:InputBox函数等待用户在文本框输入数据,获得的是输入的字符串数据;Msgbox函数等待用户按一按钮,获得的是表示按扭的整数值,以决定程序的流向。

4. 要使单精度变量x,y,z分别保留1位、2位、3位小数,并在窗体显示,应使用什么函数?如何编写对应的Print方法?
答:使用Format函数,具体如下:
Print Format(x,"0.0") '显示1位小数
Print Format(x,"0.00") '显示2位小数
Print Format(x,"0.000") '显示3位小数

5. 语句 If <表达式> Then … 中的表达式可以是算术、字符、关系、逻辑表达式中哪些?
答:可以是算术、关系、逻辑表达式
按照一般语言的规定,If后应该是关系表达式、逻辑表达式,根据其结果逻辑量是True或False决定是否执行Then后边的子句。而在VB中还可以是算术表达式,因为VB逻辑判断中,对于非0值就作为True,而0值作为False,因此如下分段函数
Sin x / x x≠0
Y=
0 x=0

可用VB语句表示为If x Then y=Sin(x)/x Else y=0
而不必写成 If x<>0 Then y=Sin(x)/x Else y=0

6. 指出下列语句中的错误
(1)If x ≥ y Then Print x
答:“≥”应写成“>=”
(2)If 10 < x < 20 Then x = x + 20
答:VB中表示x的范围“10 < x < 20”应写成“10 < x And x < 20”
(3)If c >=〝A〞 And c <=〝Z〞 Then
Print 〝大写字母〞
Else If c >=〝a〞 And c <=〝z〞Then
Print 〝小写字母〞
 End if
答:“Else If”之间不能有空格,即应写成“ElseIf”

7. 按照下列条件,写出相应的条件语句
(1)当字符型变量中第三个字符是"C"时,利用Msgbox显示"Yes",否则显示"No"。
答:If Mid(c,3,1)="C" Then Msgbox "Yes" Else Msgbox "No"
(2)利用If语句、Select Case语句两种方法计算分段函数
x2+3x+2, x>20

Y=



答: If语句 Select语句
Private Sub Command1_Click Private Sub Command1_Click
x=Val(Text1.Text) x=Val(Text1.Text)
If x>20 Then Se

lect Case x
y=x*x+3*x+2 Case Is>20
ElseIf x>=10 Then y=x*x+3*x+2
y=Sqr(3*x)-2 Case Is>=10
ElseIf x>0 Then y=Sqr(3*x)-2
y=1/x+Abs(x) Case Is>0
End If y=1/x+Abs(x)
Print y End Select
End Sub Print y
End Sub
(3)利用If语句和IIf函数两种方法求三个数x、y、z中的最大值并存入变量Max中。
答: If语句 IIf函数
If x>y Then Max=x Else Max=y Max=IIf(x>y,x,y)
If z>Max Then Max=z Max=IIf(Max>z,Max,z)

8. 在多分支结构的实现中,可以用If…Then…ElseIf…EndIf形式的语句,也可以用Select Case…End Select形式的语句,由于后者的条件书写更灵活、简洁,是否完全可以取代前者?
答:不可以。虽然select case….End select语句在条件的书写上更简洁和灵活,但是却不可以完全取代If…then…elseif…end if形式的语句。因为select case….End select语句在使用上是有一些限制的。
首先,看该语句的形式:
Select Case <变量或表达式>
Case <表达式列表1>
<语句块1>
[Case <表达式列表2>
 [<语句块2>]]

[Case <表达式列表n>
 [<语句块n>]]
[Case Else
 [<语句块n+1>]]
End Select
其中<变量或表达式>只能含有一个变量,任何含有多个变量的形式都是错误的。例如,要判断x,y是否在第一、第三象限内,若输入如下语句:Select Case x,y,VB程序会显示“缺少:语句结束”。
其次,在后面的Case“表达式列表”中不能出现Select Case变量或表达式中使用的变量,也不能出现主教材上列出的四种形式以外的符号或关键字(符号是:逗号;关键字是:Is、To)。
例如,上述象限的判断,若语句表示如下:
Select Case x,y
Case x>0 And y>0
Print “第一象限”
Case x<0 And y<0
Print “第三象限”
End Select
则程序有多处错误:Select Case x,y中出现了多个变量;在Case x>0 And y>0中出现了变量和And逻辑运算符。上述例子只能用If的多分支结构来实现。
由此可见,虽然Select Case结构清晰,但使用受到限制,凡是对多个变量的条件判断只能用If的多分支结构来实现。

9.计算下列循环语句的次数
⑴ For I =- -3 To 20 Step 4
答:循环次数为6次。
⑵ For I = -3.5 To 5.5 Step 0.5
答:循环次数为19次。
⑶ For I= -3.5 To 5.5 Step -0.5
答:不循环。步长<0,

循环初值<终值。
⑷ For I= -3 To 20 Step 0
答:无数次。

10.下列 30-90 为语句标号,分别标记该语句,第40 句执行了几次?,第50 句执行了几次?,第90 句显示的结果是多少?
30 For j = 1 To 12 Step 3
40 For k = 6 To 2 Step -2
50 mk = k
60 Print j, k
70 Next k
80 Next j
90 Print j, k, mk
答:第40 句执行了4次。
第50 句执行了12次。
第90 句显示的结果是13 0 2。

11.如果事先不知道循环次数,如何用 For …… Next 结构来实现?
答:只要将循环的终值设置为一个非常大的值,然后在循环体内增加 If 语句,判断是否达到循环结束条件,并使用Goto转向语句或Exit For语句结束循环。形式如下:
For 循环变量 = 1 To 非常大的数
…….
If 达到循环结束条件 Then Exit For
…….
Next 循环变量

12.利用循环结构,实现如下功能:

答: Private Sub Command1_Click()
Dim S&, i%
S = 0
For i = 1 To 10
S = S + (i + 1) * (2 * i + 1)
Next i
Print "S="; S
End Sub

⑵ 分别统计 1 ~ 100中,满足3的倍数、7的倍数的数个为多少?
答:Private Sub Command1_Click()
Dim i%, S3%, S7%
S3 = 0
S7 = 0
For i = 1 To 100
If i Mod 3 = 0 Then S3 = S3 + 1
If i Mod 7 = 0 Then S7 = S7 + 1
Next i
Print "1-100中满足3的倍数的数有" & S3 & "个"
Print "1-100中满足7的倍数的数有" & S7 & "个"
End Sub

⑶ 将输入的字符串以反序显示。如输入“ASDFGHJKL”,显示“LKJHGFDSA”。
 答: Private Sub Command1_Click()
Dim S$, i%
S = InputBox("输入字符串")
Print S
For i = Len(S) To 1 Step -1
Print Mid(S, i, 1);
Next i
Print
End Sub

13.下面程序运行后的结果是什么?该程序的功能是什么?
Private Sub Command1_Click()
Dim x$, n%
n = 20
x = ""
Do While n <> 0
a = n Mod 2
n = n \ 2
x = Chr(48 + a) & x
Loop
Print x
End Sub
答:运行后结果为“10100”,该程序的功能是将十进制数转换成二进制数字字符串。

14.下面程序运行后的结果是什么?该程序的功能是什么?
Private Sub Command1_Click()
Dim x%, y%, z%
x = 242: y = 44
z = x * y
Do Until x = y
If x > y Then x = x - y Else y = y - x
Loop
Print x, z / x
End Sub
答:运行后结果为“22 484”,该程序的功能是用相减法求 x ,y 的最大公约数和最小公倍数。

15.利用随机函数产生20个 50~100范围内的随机数,显示它们的最大值、最小值和平均值。
答:
Private Sub Command1_Click()
Dim i%, t%,

Max%, Min%, Avr!
Form1.FontSize = 12
Avr = 0
Print "随机数为:";
Randomize
t = Int(Rnd() * 51 + 50)
Print t;
Avr = Avr + t
Max = t
Min = t
For i = 1 To 19
t = Int(Rnd() * 51 + 50)
Print t;
Avr = Avr + t
If t > Max Then Max = t
If t < Min Then Min = t
Next i
Print
Avr = Avr / 20
Print "最大值为:"; Max, "最小值为:"; Min, "平均值为:"; Avr
Print
End Sub


相关主题
文本预览
相关文档 最新文档