当前位置:文档之家› VB 课本答案

VB 课本答案

第三部分习题与解答

第1章程序设计语言与程序设计

1.1填空题

1.VB是以(事件驱动)作为运行机制的新一代可视化程序设计语言。

2.程序设计语言是(人)与(计算机)交流的工具。

3.若从机器执行的角度来对程序设计语言进行分类,则可以分为(低级语言)和(高级语言)两种。

4.计算机系统中,对高级语言的翻译工具称为(编译)程序或(解释)程序。

5.源程序中的错误一般分为(编译)错误、(运行)错误和(逻辑)错误等三种。6.VB把一个应用程序称为一个(工程),它包含各种文件。

1.2 选择题

1.把a和b的乘积写成ab的错误属于(c )错误。

a) 编译b) 运行c) 逻辑d) 编译和运行

2.用户在什么时候都可以按(b )键来查看与当前进行的工作相关的帮助。

a) Held b) F1 c) ESC d) F10

4 窗体文件的扩展名为(d )。

a) .vbp b) .bas c) .exe d) .frm

4.指示一个窗体位置的值是窗体的(c )。

a) 对象b) 事件c) 属性d) 方法

5.下面选项中不能运行VB程序的操作是(a )。

a) 双击窗体b) 单击“启动”按钮图标

c) 从菜单栏运行菜单中选“全编译执行”菜单命令d) 按F5键

1.3 问答题

1.低级语言和高级语言的各自特点是什么?

答:参见教材1.1。

2.什么是数据描述和数据处理?

答:参见教材1.2。

3.源程序的翻译方式有哪两种,简述它们的工作过程。

答:参见教材1.1。

4.一个好程序的基本要求是什么?

答:参见教材1.2。

5.Visual BASIC 集成开发环境的主窗口由哪些部分构成?各自的主要功能是什么?

答:参见教材1.3。

6.简述在VB的环境下,对象、属性、方法、事件和事件驱动程序的概念,并用例子进行说明。

答:在VB的环境下,对象是系统中的基本运行实体,它封装了数据和操作。工具箱中的命令按钮、标签、文本框等是对象摸板。控件是由VB工具箱创建的对象。

属性是对象的性质或状态特征。例如,窗体的Caption(标题)、BackColor(背景颜色)、Height(高度)和Width(宽度)等都是窗体的属性。

事件是对象之间传递的消息。VB控件的事件由系统预先定义。例如,Click(单击)事件、DblClick(双击)事件。

方法是对象在某些事件驱动下执行的特定操作。它可以执行系统预定义的操作,例如窗体的Print(打印)方法、Show(显示窗体)方法;

当事件由用户或VB系统触发时,对象会感受到该事件并对该事件作出响应,响应某个事件

后所执行的程序就是事件驱动程序。事件驱动程序有时也称为事件过程。例如,以下是命令按钮Command1在接受单击事件时驱动的程序:

Private Sub Command1_Click()

Print "Hello world !"

End Sub

7.总结使用Visual BASIC开发一个应用程序的过程。

答:参见教材1.5。

8.下面程序是什么事件驱动程序?如何执行该事件驱动程序?执行的结果如何?

Private Sub Command1_Click()

Print "欢迎你使用VB!"

End Sub

答:略。

1.4 编程题

编写一个程序。要求设置窗体的标题是“这是我的第一个练习”,且在程序执行后,单击窗体显示如下一行文字:

我可以用Visual BASIC编写程序了!

解答:

(1)用户界面设计:设计用户界面由一个窗体构成。

(2)对用户界面上的控件对象的属性进行设置:把窗体的Caption属性值设置为“这是我的第一个练习”。

(3)编写控件对象的事件驱动程序:

Private Sub Form_Click()

Print "我可以用Visual BASIC编写程序了!"

End Sub

第2章基本数据类型与表达式

2.1 填空题

1.在程序设计语言系统中具有固定语法含义的符号串称为(关键字),它们通常用来表示系统提供的标准过程、函数、运算符、常量等。

2.(标识符)用于标记用户自定义的常量、类型、变量、控件、过程、函数等名字。3.整型数据占(2 )字节的内存空间。长整型数据占(4 )个字节的内存空间。单精度浮点型数据占(4 )个字节的内存空间。双精度浮点型数据占(8 )个字节的内存空间。日期型数据占(8 )个字节的内存空间。

4.100% 表示100为(整)型数据;100!表示100为(单精度浮点)型数据;100@表示100为( 货币)型数据。

6 符号常量在某一过程中说明,则该符号常量只能在(该过程内)内有效。

6.若一个整型变量说明了之后没有给它赋值,则它的值为(0 )。

7.在VB中可以把类型说明符放在变量名的(末尾)来说明变量的类型。

8.为使VB的编译程序自动检查变量声明,遇到未经说明的标识符发出错误警告信息,在程序中要加上(Option Explicit )语句。

9.对含有多种运算的表达式,各种运算之间的顺序为(函数运算)→(算术运算)→(关系运算)→(逻辑运算)。

10.把1234.567的小数部分四舍五入转换为整数,可使用函数(Cint(1234.567) )。11.将x四舍五入到百位(例如,若x=23874.52应舍入成23900),可使用表达式(Int(x / 100 + 0.5) * 100 )。

12.将x从十位截断(例如,x=23874.52应截成23800)可使用表达式(Fix(x / 100) * 100或者Int(x/100)*100或者Cint(x\100)*100 )。

13.设X为数值变量,求X的常用对数可使用的表达式是(Log(X)/Log(10) )。

14.要从字符串“Visual BASIC 6.0”中截取子字符串“BASIC”可使用函数(Mid(“Visual BASIC 6.0”,8,5) )

15.设S是字符串变量,并且串长度为7,写出生成由S的偶数序号字符组成的字符串的表达式(例如,把字符串”ABCDEFG”变成“BDF”)。

答案:Mid(s, 2, 1) + Mid(s, 4, 1) + Mid(s, 6, 1)

16.设S是字符串变量,并且串长度为7,写出用第2i–1个字符代替第2i个字符所得到字符串的表达式(例如,把字符串”ABCDEFG”变成“AACCEEG”)。

答案:String(2, Mid(s, 1, 1)) + String(2, Mid(s, 3, 1)) + String(2, Mid(s, 5,1)) + Mid(s,7, 1)

或:String(2, Mid(s, 1, 1)) + String(2, Mid(s, 3, 1))

+ String(2, Mid(s, 5, 1)) + Right(s, 1)

17.产生从整数a到整数b之间的随机整数可使用表达式(Int((b-a+1)*Rnd+a) )。18.产生从100.01到200.99之间的随机数(包括两端点)可使用的表达式是(Int((20099-10001+1)*Rnd+10001)/100 )。

2.2 选择题

1.下面选项中(c )是算术运算符。

a) % b) &c) Mod d) And

4 下面不合法的标识符是(d )。

a) Go_To b) Tab1 c) 姓名d) Int

3.下列选项中,把r定义为双精度型变量的是(c )。

a) r% b) r! c) r# d) r$

4.下列表达式中(d )是错误的。

a) 2^a/5 b) –2^1/5 c) 2^(1/5) d) (-2) ^(1/5)

5.在下列选项中,正确表达2a+5 的表达式是(c )。

a) 2^a+5 b) 2^a+2^5 c) 2^(a+5) d) 2^a2^5

6.10 Mod 4的值为( b )。

a) 1 b) 2 c) 4 d) 10

7.下列运算符中( a )优先级最高。

a) / b) \ c) Mod d) +

8.在VB中不能表示逻辑真的是( d )。

a) True b) –1 c) 1 d) T

9.能正确表达a≤1或a≥5的逻辑表达式是( c )。

a) a<=1 或a>=5 b) a<=1 ,a>=5

c) a<=1 or a>=5 d) a<=1 And a>=5

10.设X为整型变量,不能正确表达1< X < 5的逻辑表达式是( a )。

a) 1< X <5 b) X=2 or X=3 or X=4

c) 1=5)

11.求COS35°可以使用的函数是(d )。

a) Cos 35 b) Cos(35) c) Cos(35o) d) Cos(35*3.14159/180)

12.Len(“中国人民”)的值是(b )。

a) 0 b) 4 c) 8 d) 不能确定

13.设X是一个正实数,对X的第二位小数四舍五入可使用的函数是(c )。

a) Int(X+0.05)/10 b) Int((X+0.05)/10)

c) Int(10*(X+0.05))/10 d) Int(10*(X+0.05)/10)

14.函数Int(Rad*99+1)产生随机数的范围是( b )。

a) [1,99) b) [1, 99] c) [1,100) d) [1,100]

2.3 下列符号哪些是正确的变量名

1) n 2) 3x 3) Abs 4) 85 5) print_56 6) 名称

7) π8) a%b 9) ab# 10)My Name 11)“年龄”12)学校$

答案: 除了以下符号外,其它符号都是正确的变量名。

错误的变量名原因

3x 变量名必须以字母为开始

Abs 不能和关键字同名

85 变量名必须以字母开始

π不是英文字母

a%b 变量名中不能用字符%

My Name 变量名内不能有空格字符

2.4 把下列数学表达式写成VB表达式

1) 2) x{x[x(ax+b)+c]+d}+e

3) ln(1+| |10)4)

5) ctg 6) log10(a2+2ab+b2)

答案:

1) 1/(1+(1/(1+1/(x+y))))

2) x*(x*(x*(a*x+b)+c)+d)+e

3) Log(1+Abs((a+b)/(a-b)) ^10)

4) Sqr(1+3.14159/2*Cos(48*3.14159/180))

5) 1/Tan((1-x*x)/(1+x*x))或者Cos((1-x*x)/(1+x*x))/Sin((1-x*x)/(1+x*x))

6) Log(a*a+2*a*b+b*b)/Log(10)

2.5 写出下列函数的值

1) Int(-1234.5678) 2) Fix(1234.5678)

3) val(“12.34”) 4) Cint(1234.5678)

5) Abs(-100) 6) Sgn(-100)

7) Sqr(sqr(16)) 8) Left(“Visual BASIC 6.0”,6)

9) Mid(“Visual BASIC 6.0”,8,5)

10) InStr(1, “Visual BASIC 6.0”, “BASIC”)

11) String(3, “$”) 12) Int((100*Rnd)+1)

答案:

1) -1235 2) 1234 3) 12.34 4) 1235 5) 100

6) -1 7) 2 8) Visual 9) BASIC 10) 0

11) $$$ 12) 产生从整数1到整数100之间的随机整数

2.6 写出下列表达式的值

1) ( 3 + 6)` \ 2 2) 18 \ 4 * 4.0^2 / 1.6

3) 25 \ 3 Mod 3.2 * Int(2.5 )4)“xyz”+ “438”

5) “abc”& “123” &“abc” 6) 349.25 + “0.75” = 350

7) “china”>=“canada” 8) “abc”<=“abc”&“123”

9) 3 > 4 And 5 = 5 10) True Or Not 7–3 <= 4

答案:

1) 4 2) 0 3) 2 4) xyz438 5) abc123abc

6) True 7) True 8) True 9) False 10) True

2.7 设a1,a2,a3是布尔变量,其值依次为:True,True,False,写出下列布尔表达式的值

1) Not a1 And Not a2 2) Not a1 Eqv Not a2

3) a1 Or a2 And a3 4) a1 Xor a2 Or a3

5)(Not a1 Or a2 )And (a2 Or a3 )

6) Not a1 And a2 Imp a3

答案:

1) False 2) True 3) True 4) False 5) True 6) True

2.8 用关系表达式或逻辑表达式表示下列条件

1) i 整除j 2) n是小于正整数k的偶数

3) 1<=x<10 4) x,y其中有一个小于z

5) y [–100,–10],并且y [10,100]

6) 坐标点(x, y)落在以(10, 20)为圆心,以35为半径的圆内

7) 三条边a,b和c构成三角形

8) 年份Year能被4整除,但不能被100整除或者能被400整除

答案:

1) i Mod j=0 2) n

3) 1<=x And x<10 4) x

5) Not(y>=-100 And y<=-10 ) And Not(y>=10 And y<=100)

6) Sqr((x-10) ^2+(y-15) ^2)<35

7) a+b>c And b+c>a And c+a>b

8) Year Mod 4=0 And year Mod 400<>0 Or Year Mod 400=0

2.9 问答题

1. 标识符的选取必须遵循什么规则?

答:参见教材2.1.2。

2. 各种基本数据类型的取值范围如何?

答:参见教材2.2表2-1。

3. 空串与空格有什么不同?

答:参见教材2.1.1。

4. 什么是符号常量?使用符号常量有什么好处?

答:参见教材2.3.1。

5. 自动变量与静态变量如何定义?它们之间有什么不同?

答:参见教材2.3.2。

6. 两个字符串如何进行比较(关系)运算,如何确定运算结果?试举例说明。

答:参见教材2.4.3。

第3章程序流程控制

3.1 填空题

1.设变量r 表示圆的半径,则计算圆的面积并赋给变量s使用的赋值语句为(s=3.14159*r*r )。

2.给命令按钮Command2的Caption属性赋予字符串“退出”使用的赋值语句为(Command2.Caption="退出")。

3.为了求n的阶乘,要求用户输入n的值。程序使用InputBox函数输入,要求对话框提示信息为“请输入一个求阶乘的数:”,标题为“求数的阶乘”,并且正确地把输入的信息转换为数值存放到变量n中,则使用的赋值语句为(n=val(InputBox("请输入一个求阶乘的数:","求数的阶乘"))。

4.如果使用MsgBox对话框显示提示信息“退出本系统?”,并显示“是(Yes)”和“否(No)”两个按钮,显示图标“?”号,指定第一个按钮为默认值以及标题为“提示信息”,则调用MsgBox函数的形式为(MsgBox("退出本系统? ",4+32+0,"提示信息"))。5.如果使用MsgBox对话框显示提示信息“文件未找到!”,并显示“确定”按钮、图标“!”号和标题“文件查找”,则使用的MsgBox语句为(MsgBox"文件未找到",0+48+0,"文件查找")。

6.要在当前窗体Form和立即窗口输出字符串“Visual BASIC 6.0”使用的Print方法分别是( Print “Visual BASIC 6.0”)和( Debug.Print “Visual BASIC 6.0”)。

7.使用Print方法时,若用逗号分隔,则按( 标准)格式输出各表达式的值,若用分号分隔,则按( 紧凑)格式输出各表达式的值。

8.注释语句是一个(非执行)语句,VB不对它们进行编译,对程序的执行结果没有任何影响。

9.判别变量i是否为偶数,若为偶数就把它显示出来。使用单行结构条件语句为(If i Mod 2=0 Then print x )。

10.判别变量x是否大于0,若大于0,则累加到变量s1中,否则,累加到变量s2中,使用的单行结构条件语句为(If x>0 Then s1=s1+x Else s2=s2+x )。

11.给定分段函数,求y的值,使用的单行结构条件语句为(If x>0 Then y=2*x+1 Else If x=0 Then y=0 Else y=2*x-1 )。

12.判别a是否等于b,若a=b,则输出字符串“a is equal to b”的块结构条件语句为()。

答案:

If a=b Then

Print “a is equal to b”

End

13.判别ch是否为小写字母,若是,输出“yes”;否则,输出“No”的块结构条件语句为()。答案:

If Asc(ch)>=97 And Asc(ch)<=122 Then

Print “Yes”

Else

Print “No”

End If

14.若一个case子句中的表达式表由逗号分隔的若干个常数组成,则它的含义是:当测试表达式的值等于(这些常数中的某一个)时,执行该case子句相应的程序块。

15.若case子句中的表达式表列具有形式:<表达式1> To <表达式2>,则它的含义是:当测试表达式的值等于(这个范围内的值)时,执行该case子句相应的程序块。

16.若case子句中的表达式表列具有形式:Is <关系运算符> <表达式>,则它的含义是:当测试表达式的值满足(Is后的关系)时,执行该case子句相应的程序块。

17.在循环语句中,反复执行的程序段称为(循环体);进入循环体的条件称为(循环条件);中止循环体执行的条件称为(结束循环条件)。

3.2 选择题

1.下列赋值语句中,( d )是正确的。

a)x!="abc"b)a%="10e"c)x+1=5d)s$=100

2.下列选项中,( d )不能交换变量a和b的值。

a) t=b : b=a : a=t b) a=a+b : b=a-b : a=a-b

c) t=a : a=b : b=t d) a=b : b=a

3.若在消息框MsgBox中显示“确定(Ok)”和“取消(Cancel)”两个按钮,则buttons参数的设置值是( b )。

a) 0 b) 1 c) 2 d)3

4.若在消息框MsgBox中选择第二个按钮为默认值,则buttons参数的设置值是( b )。

a)0 b)256 c)512 d)768

5.若单击了“终止(Abort)”按钮,则MsgBox函数的返回值是(c )。

a)1 b)2 c)3 d)4

6.以下不正确的单行结构条件语句是(d )。

a) If x>y Then Print “x>y” b) If x Then t = t * x

c) If x Mod 3=2 Then ? x d) If x<0 Then y = 2*x-1 : Print x End If

7.给定程序段

Dim a As Integer, b As Integer, c As Integer

a=1:b=2:c=3

If a=c-b Then Print "#####" Else Print "*****"

以上程序(c )。

a) 没有输出b) 有语法错

c) 输出##### d) 输出*****

8.把a, b之中的最大值存放于max,下面语句书写正确的是(d )。

a) If a>b Then max=a Else max=b End If

b) If a>b Then max=a

Else max=b

End If

c) If a>b Then

max=a

Else

max=b

d) If a>b Then

max=a

Else

max=b

End If

9. 下列Case语句中正确的是(c )。

a) Select Case x

Case 1 Or 3 Or 5

y=x*x-1

Case Is >10

y=x+1

End Select

b) Select Case x

Case 1, 3, 5

y=2*x-1

Case Is x <=1

Y=2*x+1

End Select

c) Select Case x

Case Is <=0

y=x-1

Case Is >0

y=Sqr(x)+1

End Select

d) Select Case x

Case x>=1 And x<= 5

y=x-1

Case Is >10

y=x*x+1

End Select10.执行下列程序段后屏幕上(c )。

i% = 10 : Sum = 0

While i > 1

Sum = Sum + i

i = i - 1

Wend

Print Sum

a) 无显示b) 显示10 c) 显示54 d) 显示55

11.执行下列程序段输出结果是(c )。

x%=2

Do while x<8

Print “*”;

x=x+2

Loop

a) * b) ** c) *** d) ****

12.设有程序段

Dim k%

k=5

Do until k=0

k=k-1

Loop

则下面对循环语句描述正确的是( c )。

a) 循环体1次也不执行b) 循环体执行1次

c) 循环体执行5次d) 循环体执行无限次

13.下面描述中错误的是(a, c )。

a) 执行Do until <条件>…loop语句中,当循环<条件>为false时,结束循环体的执行。

b) 执行While <条件>…Wend语句时,循环体可能一次也不执行。

c) Do …loop While <条件>语句的循环体可能一次也不执行。

d) 执行Do …loop Until <条件>语句中,当循环条件为true时,结束循环体的执行。14.下面程序段中循环语句的循环次数是(b )。

For x=10 To 1 Step -3

Print x

Next x

a) 0 b) 4 c) 5 d) 10

15.执行语句For i=1 to 3: i=i+1 :Next i后变量i的值是(c )。

a) 3 b) 4 c) 5 d) 6

16.下面程序段执行后输出结果是(b )。

For i=1 To 2

s=1

For j=0 To i-1

s=s+s*j

Next j

Print s,

Next i

a) 1 1 b) 1 2 c) 2 1 d) 2 2

3.3 阅读下列程序,写出执行结果

1. Private Sub Form_Click

Print –2*3/2 , “Visual ”& “BASIC”,Not 5>3,0.75

Print –2*3/2 ; “Visual ” & “BASIC”; Not 5>3; 0.75

x=12.34

Print “x=”;

Print x

End Sub

答案:-3 Visual BASIC False .75

-3 Visual BASICFalse .75

x=12.34

2.Private Sub Form_Click

Print Tab(10); -100;Tab(20); 200;Tab(30); -300

Print Spc(10); -100;Spc(10); 200;Spc(10); -300

End Sub

答案:-100 200 -300

-100 200 -300

3.Private Sub Form_Click

x=12.35

Print Form at ( x,”###.##” )

Print Format ( x,”##.##” )

Print Format ( x,”000.00” )

Print Format ( x,”00.0”)

Print Format ( x,”0.00%” )

Print Format ( x,”$##.##” )

Print Format ( x,”+##.##” )

Print Format ( x,”00.00E+00” )

End Sub

答案:12.35

12.35

012.35

12.4

1235.00%

$12.35

+12.35

12.35e+00

4.Private Sub Command1_Click() Dim a%, b%, c%, s%, w%, t%

a = -1:

b = 3:

c = 3

s = 0: w = 0: t = 0

If c > 0 Then s = a + b

If a <= 0 Then

If c <= 0 Then

w = a - b

End If

Else

If c > 0 Then w = a - b Else t = c End If

c = a + b

Print a, b, c

Print s, w, t

End Sub

答案:-1 3 2

2 0 0

5.Private Sub Command1_Click() Dim x%, y%

x = InputBox("请输入x的值:") Select Case x

Case 1, 3, 5

y = x - 1

Case 6 To 10

y = x + 1

Case 2, 4

y = 2 * x

Case Is > 10

y = x * x + 1

End Select

Print "x="; x, "y="; y

End Sub

(x 的输入值为2.5、8、4和15)

答案:x=2 y=4

x=8 y=9

x=4 y=8

x=15 y=226

6.Private Sub Command1_Click() Dim i%, t!

t = 1: i = 1

While i < 10

t = t * i

i = i + 2

Wend

Print "t="; t

End Sub

答案:t=945

7.Private Sub Command1_Click() Dim i%, x%, y%

x = 1: y = 1:i = 1

Do Until i > 8

If i Mod 2 = 1 Then

x = x * i

Else

y = y * i

End If

i = i + 1

Loop

Print "x="; x, "y="; y

End Sub

答案:x=105 y=384

8.Private Sub Command1_Click() Dim p%, s%

p = 1: s = 1

Do

p=p+2:s=s+p

Loop While p<10

Print "s="; s

End Sub

答案:s=36

9.Private Sub Command1_Click() Dim m%, n%

For m=1 to 3

n=0

While n<=m-1

Print m,n

n=n+1

Wend

Next m

End Sub

答案: 1 0

2 0

2 1

3 0

3 1

3 2

3.4 编程题

1. 输入一个学生成绩,若成绩在85分以上,则输出“very good”;若成绩在60分到80分之间,则输出“good”;若成绩低于60分,则输出“no good”。

解答:

(1) 界面设计和属性设置

在窗体上建立两个标签、两个文本框和两个命令按钮。窗体和窗体上控件的主要属性设置如表3-3-1所示。

表3-3-1 第1题的属性设置

控件名称属性名属性值

Form1 Caption 根据分数给定评语

Label1 Caption 分数

Label2 Caption 评语

Text1 Text 空串

Text2 Text 空串

Command1 Caption 开始

Command2 Caption 结束

(2) 程序代码

Private Sub Command1_Click()

Dim score!

score = Val(Text1.Text)

If score >= 85 Then

Text2.Text = "Very good!"

ElseIf score >= 60 Then

Text2.Text = "Good!"

Else

Text2.Text = "No good!"

End If

End Sub

Private Sub Command2_Click()

End

End Sub

(3) 运行情况

运行程序后,屏幕出现用户界面。把鼠标移到Text1文本框并单击,输入分数。然后,单击“开始”命令按钮,系统执行Command1_Click事件过程。执行结果如图3.3.1所示。单击标题为“结束”的命令按钮,执行Command2_Click事件过程,结束程序的执行。

图3.3.1 第1题的执行结果

2. 求一元二次方程ax +bx+c=0的根。

解答:

(1) 界面设计和属性设置

在窗体上建立两个命令按钮。窗体和命令按钮的主要属性设置如表3-3-2所示。表3-3-2 第2题的属性设置

控件名称属性名属性值

Form1 Caption 求一元二次方程的根

Command1 Caption 开始

Command2 Caption 结束

(2) 程序代码

由中学数学知识知道,求一元二次方程的根的公式为:,

编程时要考虑如下各种情况:

①当a=0 时,方程不是二次方程;

②当b2-4ac=0 时,有两个相同的实根:;

③当b2-4ac>0 时,有两个不同的实根:;

④当b2-4ac<0 时,有两个共轭复根:。

Private Sub Command1_Click()

Cls

Dim a!, b!, c!, disc!, x1!, x2!, realpart!, imagpart!

a = InputBox("请输入方程的系数a:")

b = InputBox("请输入方程的系数b:")

c = InputBox("请输入方程的系数c:")

Print: Print

Print Tab(10); "输入方程的系数为:"; "a="; a; "b="; b; "c="; c

Print

If Abs(a) <= 0.000001 Then

Print Tab(15); "方程不是一个二次方程!"

Else

disc = b ^ 2 - 4 * a * c

If Abs(disc) <= 0.000001 Then

Print Tab(10); "方程有两个相同的实根:"; "x1=x2="; -b / (2 * a)

ElseIf disc > 0.000001 Then

x1 = (-b + Sqr(disc)) / (2 * a)

x2 = (-b - Sqr(disc)) / (2 * a)

Print Tab(5); "方程有两个实根:"

Print Tab(18); "x1="; x1

Print Tab(18); "x2="; x2

ElseIf disc < 0.000001 Then

realpart = -b / (2 * a): imagpart = Sqr(-disc) / (2 * a)

Print Tab(5); "方程有两个虚根:";

Print Tab(18); "x1="; realpart; "+"; imagpart; "i"

Print Tab(18); "x2="; realpart; "-"; imagpart; "i"

End If

End If

End Sub

Private Sub Command2_Click()

End

End Sub

注意,程序中的条件“fabs(a)<=0.000001”和“fabs(disc)<=0.000001”分别用来判断a和disc的值是否为0。因为实数在计算机计算和存储时会有微小的误差,若用“a=0”和“disc=0”来判断a 和disc是否为0,则会由于误差导致条件不成立,无法得到正确的运行结果。

(3)运行情况

运行程序后,单击“开始”命令按钮,执行Command1_Click事件过程。执行时,在InputBox 框中输入a、b和c三个系数。图3.3.2~图3.3.5显示了不同系数输入的执行结果。

图3.3.2 执行结果(a) 图3.3.3 执行结果(b)

图3.3.4 执行结果(c) 图3.3.5 执行结果(d)

3. 给定函数y = ,从键盘上输入x的值,求y的值。(要求使用Case语句)

解答:

(1) 界面设计和属性设置

在窗体上建立两个命令按钮。窗体和命令按钮的主要属性设置如表3-3-3所示。

表3-3-3 第3题的属性设置

控件名称属性名属性值

Form1 Caption 求给定分段函数的值

Command1 Caption 开始

Command2 Caption 结束

(2) 程序代码

Private Sub Command1_Click()

Cls

Dim x!, y!

x = InputBox("请输入x的值:")

If x >= 1 And x <= 5 Then

Select Case x

Case Is < 2

y = 3 * x - 5

Case Is < 4

y = 2 * Cos(x) + 1

Case Is <= 5

y = Sqr(1 + x * x)

End Select

Else

y = x * x - 4 * x + 5

End If

Print Tab(10); "x="; x, "y="; y

End Sub

Private Sub Command2_Click()

End

End Sub

(3) 运行情况

运行程序后,单击“开始”命令按钮,执行事件过程Command1_Click。执行时,按InputBox 对话框提示,输入x的值。计算结果在窗体上显示。

4. 输入圆的半径R和运算标志,按照运算标志进行指定运算。给定的运算标志及其表示的运算如下:

C(Circle)表示计算周长

A(Area)表示计算面积

B(Both)表示周长和面积都计算

(要求使用Case语句)

解答:

(1)界面设计和属性设置

在窗体上放置两个命令按钮。窗体和命令按钮的主要属性设置如表3-3-4所示。

表3-3-4 第4题的属性设置

控件名称属性名属性值

Form1 Caption 计算圆周长或圆面积或两者都计算

Command1 Caption 开始

Command2 Caption 结束

(2)程序代码

Private Sub Command1_Click()

Cls

Dim r!, f As String * 1

Const pi! = 3.14159265

r = InputBox("请输入圆的半径r :")

If r >= 0 Then

f = UCase(InputBox("输入运算标志:" + Chr(13) & _

"C___(计算周长)" + Chr(13) & _

"A___(计算面积)" + Chr(13) & _

"B___(两者都计算)")) '提示信息分多行显示

Select Case f

Case "C"

Print Tab(10); "半径r="; r; "圆周长="; r * 2 * pi

Case "A"

Print Tab(10); "半径r="; r; "圆面积="; r ^ 2 * pi

Case "B"

Print Tab(10); "半径r="; r; "圆周长="; r * 2 * pi

Print Tab(10); "半径r="; r; "圆面积="; r ^ 2 * pi

Case Else

Print Tab(18); "输入的运算标志错!"

End Select

Else

Print Tab(18); "半径不能是负数!"

End Sub

Private Sub Command2_Click()

End

End Sub

(3)运行情况

运行程序后,单击标题为“开始”的命令按钮,执行Command1_Click事件过程。按InputBox 对话框的提示输入半径r和运算标志。计算结果在窗体上显示。

5. 求满足12+22+…+n2>1000的最小n值。(要求使用While…WEnd语句)

解答:

(1)界面设计和属性设置

在窗体上建立两个命令按钮。窗体和命令按钮的主要属性设置如表3-3-5所示。

表3-3-5 第5题的属性设置

控件名称属性名属性值

Form1 Caption 求满足1^2+2^2+…+n^2>1000的最小n值

Command1 Caption 开始

Command2 Caption 结束

(2)程序代码

Private Sub Command1_Click()

Dim n%, s&

n = 0: s = 0

While s <= 1000

n = n + 1

s = s + n ^ 2

Wend

Print: Print: Print

Print Tab(8); "满足1^2+2^2+…+n^2>1000的最小n值为:"; n

End Sub

Private Sub Command2_Click()

End

End Sub

6.输入若干个正实数,个数预先不能确定,求这些正实数之和。(要求分别使用Do While…Loop语句和Do Until …Loop语句)

解答:

(1)界面设计和属性设置

在窗体上建立三个命令按钮。窗体和命令按钮的主要属性设置如表3-3-6所示。

表3-3-6 第6题的属性设置

控件名称属性名属性值

Form1 Caption 求正实数之和

Command1 Caption Do While…Loop

Command2 Caption Do Until…Loop

Command3 Caption 结束

(2)程序代码

Private Sub Command1_Click()

Dim a!, s!

a = InputBox("输入一个实数:")

Do While a >= 0

s = s + a

a = InputBox("输入一个实数:")

Loop

Print: Print

Print Tab(15); "输入的正实数之和为:"; s

End Sub

Private Sub Command2_Click()

Cls

Dim a!, s!

a = InputBox("输入一个实数:")

Do Until a < 0

s = s + a

a = InputBox("输入一个实数:")

Loop

Print: Print: Print

Print Tab(15); "输入的正实数之和为:"; s

End Sub

Private Sub Command3_Click()

End

End Sub

(3) 运行情况

运行程序后,屏幕出现用户界面如图3.3.6所示。单击标题为“Do While…Loop”或标题为“Do While…Loop”的命令按钮,系统执行相应的Click事件过程。用户可以输入一系列数据,以输入-1作结束。窗体显示运算结果。单击“结束”按钮,结束程序执行。

图3.3.6 第6题的执行结果

7.使用公式来求π的近似值,直到最后一项的值小于10-8为止。(要求使用Do…Loop While 语句)

解答:

(1)界面设计和属性设置

在窗体上建立两个命令按钮。窗体和命令按钮的主要属性设置如表3-3-7所示。

表3-3-7 第7题的属性设置

控件名称属性名属性值

Form1 Caption 求圆周率的近似值

Command1 Caption 开始

Command2 Caption 结束

(2)程序代码

Private Sub Command1_Click()

Dim i&, s#, term#

i = 1

Do

term = 1 / (i * i)

s = s + term

i = i + 1

Loop While term >= 0.00000001

Print: Print: Print

Print Tab(8); "圆周率的近似值为:"; Sqr(6 * s)

End Sub

Private Sub Command2_Click()

End

End Sub

(3)运行情况

运行程序后,单击标题为“开始”的命令按钮,执行Command1_Click事件过程。计算结果在窗体上显示。

8. 由数值计算方法可知,用牛顿迭代法解方程f(x)=0的迭代公式为:

试用牛顿迭代法求解方程x5-3x2 +2x+1=0 在x0=0附近的根。(要求使用Do…Loop Until 语句)

解答:

(1)界面设计和属性设置

在窗体上建立两个命令按钮。窗体和命令按钮的主要属性设置如表3-3-8所示。

表3-3-8 第8题的属性设置

控件名称属性名属性值

Form1 Caption 用牛顿法求方程的根

Command1 Caption 开始

Command2 Caption 结束

(2)程序代码

根据迭代公式,牛顿迭代法的计算过程为:

①令n=0 ,由迭代公式得,然后判别∣x1-x0∣是否小于ε(给定精度)。若是,则迭代结束,x1作为方程的近似根;否则,进行下一步。

②令n=1 ,由迭代公式得,然后判别∣x2-x1∣是否小ε。若是,则迭代结束,x2 作为方程的近似根;否则,由x2求x3的值,判断∣x3-x2∣。

按这样迭代下去,一直到∣xi+1-xi∣< ε(i=0,1,2,…)为止。

根据上述计算过程可以编写程序为:

Private Sub Command1_Click()

Dim x0!, x1!

x1 = 0

Do

x0 = x1

x1 = x0 - (x0 ^ 5 - 3 * x0 ^ 2 + 2 * x0 + 1) / (5 * x0 ^ 4 - 6 * x0 + 2)

Loop Until Abs(x1 - x0) < 0.00001

Print Tab(10); "方程的根为:"; x1

End Sub

Private Sub Command2_Click()

End

End Sub

(3)运行情况

运行程序后,单击标题为“开始”的命令按钮,执行Command1_Click事件过程。在窗体上显示计算结果。

9.求S = 的值。

解答:

(1)界面设计和属性设置

在窗体上建立两个命令按钮。窗体和命令按钮的主要属性设置如表3-3-9所示。

表3-3-9 第9题的属性设置

控件名称属性名属性值

Form1 Caption 求s=1-1/2+1/3-1/4+…+1/99-1/100的值

Command1 Caption 开始

Command2 Caption 结束

(2)程序代码

Private Sub Command1_Click()

Dim i%, s!, sign%

sign = 1: s = 0

For i = 1 To 100

s = s + sign * 1 / i

sign = -sign

Next i

Print: Print: Print

Print Tab(18); "s的值为:"; s

End Sub

Private Sub Command2_Click()

End

End Sub

(3)运行情况

运行程序后,单击标题为“开始”的命令按钮,执行Command1_Click事件过程。窗体显示计算结果。

10.求100到999中的水仙花数。所谓水仙花数是指一个三位数,它的各位数字的立方之和等于该数。例如,因为153 = 13 + 53 + 33 ,所以153是水仙花数。

解答:

(1)界面设计和属性设置

在窗体上建立两个命令按钮。窗体和命令按钮的主要属性设置如表3-3-10所示。

表3-3-10 第10题的属性设置

控件名称属性名属性值

Form1 Caption 求水仙花数

Command1 Caption 开始

Command2 Caption 结束

(2)程序代码

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