第4次上机 选择结构上机指导

发布 2021-06-01 23:20:28 阅读 7142

1.熟练掌握关系表达式和逻辑表达式的使用。

2.熟练掌握函数getchar()和函数putchar()的使用。

3.熟练掌握if和switch多分枝选择结构程序设计。

4.熟练掌握switch语句中break语句的作用。

4-1调试示例,输入参数a,b,c,求一元二次方程a*x2+bx+c=0的根。

源程序(有错误的程序)error6_

#include <>

#include <>

void main( )

double a,b,c,d;

printf("输入一元二次方程a= ,b= ,c=");

scanf("a=%lf, b=%lf, c=%lf",&a,&b,&c);

d=b*b-4*a*c;

if(a==0)

elseprintf("x=%0.2f",-c/b);

elseif(d>=0)

else运行结果(改正后程序的运行结果)

输入一元二次方程a= ,b= ,c=

a=2.1, b=8.9, c=3.5

x1=-7.22

x2=-10.58

运行结果(有错误程序的运行结果)

输入一元二次方程a= ,b= ,c=

a=2.1, b=8.9, c=3.5

x1=-0.44

x2=-3.80

我们现在进一步学习断点的设置,并且观察断点前的变量值是否正确,如果不正确,可以在watch窗口中将正确的值直接赋给变量,即起到改变变量值的作用,如果调试正确,再在程序做相应的修改。这种做法,在调试运行大型程序时,特别有用。

对以上程序进行编译、连接、调试和运行如下:

1) 执行“编译”—>构件”,对以上程序进行编译、连接,没有出现错误信息。

2) 调试开始,设置三个断点,如图6.2所示。

3) 单击编译工具条(go (f5)),程序运行,等待输入一元二次方程“a、b、c”参数的值,输入a=2.1, b=8.9, c=3.5(如图6.1所示)。

图6.1 dos运行窗口输入参数。

4) 程序运行到第一个断点,在watch窗口输入变量名a、b、c,观察执行到第一个断点时变量a、b、c的值是否和(2)中输入的值一致,如图6.2所示,此时,watch窗口显示的变量a、b、c的值和输入的值一致。

注意:变量可以在wtach1、wtach2、wtach2、wtach4任何一个窗口输入,输入可以是变量,也可以是表达式。

5) 假设我们在输入的时候,输错了变量a的值,我们可以在watch窗口重新赋值,改变原来的值。例如,如果在watch窗口输入表达式a=0,则a的值就改变为0了,如图6.3所示。

从watch窗口看到,a的值已经改变为0。

图6.2 在watch窗口观察当前变量的值。

图6.3 在watch窗口改变变量的值。

6) 单步执行,单击,箭头指向了下一行,观察watch窗口,a的值还是“0”, 如图6.4所示,说明(4)中变量a的值确实被改变了。

7) 单步执行,单击,箭头指向第17行,说明程序执行到第17行,再观察变量a、b、c的值,发现变量b的值已经改变,原来输入的是8.9,现在已改变为“0”,如图6.5所示。

8) 我们在(2)中输入变量b的值是8.9,说明在程序的执行过程中肯定有一个地方改变了变量b的值,通过仔细观察、分析,发现if语句中误把相等“==写成了赋值“=”所以变量b被赋值0了。单击(stop debugging (shaft+f5))停止调试,把源程序中的“=”改为“==后,重新编译、连接,没有出现错误信息。

图6.4 验证变量a值的正确性。

图6.5 显示变量b的值已经改变。

9) 单击(restart (ctrl+shaft+f5))重新开始调试,如图6.6所示。

图6.6 重新开始调试。

10) 执行(3)-(7),此时,观察到变量b的值没有改变,还是8.9,并且dos窗口显示x=-0.35,单击(stop debugging (shaft+f5)),结束本次调试。

11) 单击(restart (ctrl+shaft+f5))重新开始调试。

注意:删除watch窗口中的表达式a=0,否则a的值还是为0。

12) 单击(go (f5)),输入数据,程序运行到第一个断点, 观察到变量a、b、c的值和输入数据一样。

13) 单击(go (f5)),程序运行到第二个断点,观察到变量d=49.81,应该输出实根。

14) 单击(go (f5)),程序运行到第三个断点,在dos窗口看到x1=-0.44,x2=-3.80。

15) 单击(stop debugging (shaft+f5))程序结束调试。

读者也可以输入不同的参数,观察有虚数的情况。

4-1 编程,输入x,计算并输出下列分段函数 f(x) 的值(保留2位小数)。

输入输出示例:

input x: -2.5

f(-2.500000) =1.68

该程序应该运行4次,每次测试一个分支,即分别输入每个分段中的x值。

假设x为整数,如何用switch计算上述分段函数吗?

4-2输入一个职工的月薪salary,输出应交的个人所得税tax(保留2位小数)。

计算方式:tax = rate * salary-4500)/100

当 salary ≤4500 时,rate = 0;

当 4050 < salary ≤6000 时,rate = 3;

当 6000 < salary≤9000 时,rate = 10;

当 9000 < salary ≤13500 时,rate = 20;

当 9000 < salary ≤39500 时,rate = 25;

当 39500 < salary ≤59500 时,rate = 30;

当 59500 < salary ≤84500 时,rate = 35;

当 84500 < salary 时,rate =45;

4-3 编程,输入2023年的任一个月,输出这个月的天数,要求使用switch语句。

输入输出示例:

input month of 2011:10

2023年10月有31天。

提示:1)该程序应该运行13次,分别输入1~12月,以及除此之外的数。

2)运行时调试跟踪月份的变化。

3)编程时注意不同月份可以有相同的天数。

输入年和月,如何求该月的天数。

第4次上机作业

华中科技大学。计算机基础与程序设计 c 实验报告。实验名称 第四次上机实验实验学时 姓名学号班级 实验日期教师批阅签字 一 实验目的。掌握一维数组的定义 输入 输出和基本操作。掌握二维数组的定义 输入 输出和基本操作。掌握字符串的存储和访问。使用数组处理解决实际问题的能力。动态数组的访问。二 实验内...

选择结构上机练习

实验目的 1.掌握if语句的用法。2.掌握if语句编写程序的方法。3.掌握选择结构条件确定的方法。语句的编程。上机内容。1.编写程序 输入x的值计算并输出下列分段函数 y的值。1 x x 0 y 0 x 0 用到的知识点 1 选择结构的流程图。2 if语句的结构。3 用关系表达式表示数学条件。2.给...

2019汇编第4次上机题

第四次上机题 本次实验报告可以打印 一 目的。1 掌握中断矢量表的概念以及中断处理程序设计方法。2 了解win32程序编写方法。3.了解win32程序的编译 连接 调试方法。二 题目。1 直接运行调试工具 观察中断矢量表中的信息,指出中断类型码21h对应的中断处理程序的入口地址。在调试工具下调入以前...