文档库 最新最全的文档下载
当前位置:文档库 › VB第四章习题答案

VB第四章习题答案

VB第四章习题答案
VB第四章习题答案

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

Print

Avr = Avr / 20

Print "最大值为:"; Max, "最小值为:"; Min, "平均值为:"; Avr Print

End Sub

相关文档