1.结构化程序设计的三种基本结构是什么? 答:顺序结构、选择结构和循环结构。
2. 指出下列赋值语句中的错误(包括运行时要产生的错误)。
⑴ 10x=sin(x)+y 答:10x 错误变量名 ⑵ c=3+sqr(-3)
答:sqr(x) 中自变量要求>=零 ⑶ 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")
Print Format(y, "0.00") Print Format(z, "0.000")
5. 语句
if 表达式 then …
中的表达式可以是算术、字符、关系、逻辑表达式中的哪些? 答:可以是算术、关系、逻辑表达式。
按照一般语言的规定,if 后应该是关系表达式、逻辑表达式,根据其结果逻辑量是True 或False 决定是否执行Then 后面的句子。而在VB 中还可以是算术表达式,因为VB 逻辑判断中,对于非0值就作为True ,而0值作为False ,因此分段函数
sin /0,0
0{x x x x x y <>== 可用VB 语句表示为:
If x Then y = sin (x) / x Else y = 0 而不必写成If x < >0 Then y = sin (x) / x Else y = 0
6 指出下列语句中的错误。
⑴ If x ≥ y Then print x 答:“≥”应写成“>=” ⑵ If 10 < x < 20 then x = x + 20
答:VB 中表示x 的范围“10 < x < 20”应写成“10 < x and x < 20” ⑶ 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 语句两种方法计算分段函数:
???
?
???<<+≤≤->++=10x 0 , |x |x 1
20x 10
, 23x 20 x
, 232
x x y
(3)利用if 语句和IIf 函数两种方法求三个数
x ,y ,z 中的最大值并存入变量Max 中。 答:If 语句
If x>y Then Max=x Else Max=y If z>Max Then Max=z
IIf 函数:
Max = IIf(x > y, x, y)
Max = IIf(Max > z, Max, z)
8 在多分支结构的实现中,可以用if …Then … ElseIf …End if 形式的语句,也可以用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 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 语句,判断是否达到循环结束条件。形式如下:
For 循环变量=1 To 非常大的数
…….
If 达到循环结束条件Then Exit For
…….
Next 循环变量
12.利用循环结构,实现如下功能:
⑴∑
=
+ +
=
10
1
)1
2
)(
1
(
i
i i
s
答:S=0
For i = 1 To 10
S = S +(i + 1)*(2* i + 1)
Next i
⑵分别统计1 ~100中,满足3的倍数、7的倍数的数个为多少?
答: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
⑶将输入的字符串以反序显示。如输入“ASDFGHJKL”,显示“LKJHGFDSA”。答:
s = InputBox("输入字符串")
For i = Len(s) To 1 Step -1
Print Mid(s, i, 1);
Next i
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
Avr = Avr / 20
Print "最大值为:"; Max, "最小值为:"; Min, "平均值为:"; Avr Print
End Sub