当前位置:文档之家› 计算机导论课后习题答案.doc

计算机导论课后习题答案.doc

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 ThenText2.Text = "Very good!"ElseIf score >= 60 ThenText2.Text = "Good!"ElseText2.Text = "No good!"End IfEnd SubPrivate Sub Command2_Click()EndEnd 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()ClsDim a!, b!, c!, disc!, x1!, x2!, realpart!, imagpart!a = InputBox("请输入方程的系数a:")b = InputBox("请输入方程的系数b:")c = InputBox("请输入方程的系数c:")Print: PrintPrint Tab(10); "输入方程的系数为:"; "a="; a; "b="; b; "c="; cPrintIf Abs(a) <= 0.000001 ThenPrint Tab(15); "方程不是一个二次方程!"Elsedisc = b ^ 2 - 4 * a * cIf Abs(disc) <= 0.000001 ThenPrint Tab(10); "方程有两个相同的实根:"; "x1=x2="; -b / (2 * a)ElseIf disc > 0.000001 Thenx1 = (-b + Sqr(disc)) / (2 * a)x2 = (-b - Sqr(disc)) / (2 * a)Print Tab(5); "方程有两个实根:"Print Tab(18); "x1="; x1Print Tab(18); "x2="; x2ElseIf disc < 0.000001 Thenrealpart = -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 IfEnd IfEnd SubPrivate Sub Command2_Click()EndEnd 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()ClsDim x!, y!x = InputBox("请输入x的值:")If x >= 1 And x <= 5 ThenSelect Case xCase Is < 2y = 3 * x - 5Case Is < 4y = 2 * Cos(x) + 1Case Is <= 5y = Sqr(1 + x * x)End SelectElsey = x * x - 4 * x + 5End IfPrint Tab(10); "x="; x, "y="; yEnd SubPrivate Sub Command2_Click()EndEnd 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()ClsDim r!, f As String * 1Const pi! = 3.14159265r = InputBox("请输入圆的半径r :")If r >= 0 Thenf = UCase(InputBox("输入运算标志:" + Chr(13) & _"C___(计算周长)" + Chr(13) & _"A___(计算面积)" + Chr(13) & _"B___(两者都计算)")) '提示信息分多行显示Select Case fCase "C"Print Tab(10); "半径r="; r; "圆周长="; r * 2 * piCase "A"Print Tab(10); "半径r="; r; "圆面积="; r ^ 2 * piCase "B"Print Tab(10); "半径r="; r; "圆周长="; r * 2 * piPrint Tab(10); "半径r="; r; "圆面积="; r ^ 2 * piCase ElsePrint Tab(18); "输入的运算标志错!"End SelectElsePrint Tab(18); "半径不能是负数!"End IfEnd SubPrivate Sub Command2_Click()EndEnd 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 = 0While s <= 1000n = n + 1s = s + n ^ 2WendPrint: Print: PrintPrint Tab(8); "满足1^2+2^2+…+n^2>1000的最小n值为:"; nEnd SubPrivate Sub Command2_Click()EndEnd Sub6.输入若干个正实数,个数预先不能确定,求这些正实数之和。

相关主题