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对应的中断处理程序的入口地址。在调试工具下调入以前...