实验4-选择结构

上传人:s9****2 文档编号:378952045 上传时间:2023-10-18 格式:DOCX 页数:7 大小:55.88KB
返回 下载 相关 举报
实验4-选择结构_第1页
第1页 / 共7页
实验4-选择结构_第2页
第2页 / 共7页
实验4-选择结构_第3页
第3页 / 共7页
实验4-选择结构_第4页
第4页 / 共7页
实验4-选择结构_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《实验4-选择结构》由会员分享,可在线阅读,更多相关《实验4-选择结构(7页珍藏版)》请在金锄头文库上搜索。

1、0 实验 4 选择结构程序设计一、实验目的1.了解C语言表示逻辑量的方法,学会正确使用逻辑运算符和逻辑表达式。2熟练掌握 if 语句和 switch 语句。3结合程序掌握一些简单的算法。4学会程序调试的一般方法。二、实验内容1程序调试示例(1) 改正下列程序中的错误,输入X,计算并输出下列分段函数f(x)的值(保留一位小数)。(x 丰 0)(x=0)1(以 10 和 o 为例)y = f (x) = x0源程序(有错误的程序)#include main() double x,y; printf(“Enter x=”); scanf(“%lf”,x);if(x!=0)y=1/x else y=0

2、; printf(“f(%.2f)=%.1fn”,x,y);调试步骤:打开源程序,单击工具栏上的编译按钮,出现的第1条错误是:Configuration: 1 - Uin32 DebugCompiling.1 .cD:1 .c(8) : error C2143: syntax error : missing ; before Configuration: 1 - Uin32 DebugCompiling1 .cD:1.c(5) : earning C4700: local uariable x used without hauing been initialized1.obj - 0 erro

3、r(s), 1 uarning(s)双击错误信息,箭头指向“ scanf(%lf”,x) ”所在的行,错误原因是“x”前少了 “&”,将之补上。重新编译并连接,都正确。 选择菜单栏上的“Tools”“Customize”命令,在“Customize”对话框中单击“Toolbars”选项卡,在其中勾选“Debug”显示调试工具条。圭劭知刃除別1?呼弋 3犀囚園画反 单步调试程序。单击调试工具条中按钮仆(Step Over),每次执行一行语句,编辑窗口的 箭头指向某一行,表示程序将要执行该行。#includemain()|= double x ; printF(Enter x=); scanf;i

4、F(x*=Q)/*fonnd*/ elseprintF(f(.2F)=.1Fn,x,y);在上图的下半部分列出了变量窗口和观察窗口,在观察窗口中可以改变变量的值。 再单击仆3次(若调试工具条未出现,则利用第三步将之调出), 程序执行到输入语句这一行,同时运行窗口显示:表示程序将要执行该行。继续单击仆按钮,在运行窗口中输入10,按回车键,则箭头指向if(x!=0)这一行。此时,在变量窗口可以看到变量10.000000000000。 继续单击按钮2次,箭头指向“else”这一行,在变量窗口可以看到变量y的值为0.1000000000000。 继续单击铵钮2次,运行窗口显示运行结果,符合题目要求。

5、单击壬(Stop Debugging)按钮,程序调试结束。(2)改正下列程序中的错误,输入参数a,b,c,求一元二次方程ax2+bx+c=0的根。 源程序:#include #includemain(void) double a,b,c,d;printf(Enter a,b,c:);scanf(%lf,%lf,%lf,&a,&b,&c);d=b*b-4*a*c;/*调试时设置断点*/if(a=0) if(b=0) if(c=0)printf(参数都为零,方程无意义! n);elseprintf(a和b为0, c不为0,方程不成立n);elseprintf(x=%0.2fn,-c/b);else

6、 if(d=0)/*调试时设置断点*/ printf(x1=%0.2fn,(-b+sqrt(d)/(2*a); printf(x2=%0.2fn,(-b-sqrt(d)/(2*a);else printf(x1=%0.2f+%0.2fin,-b/(2*a),sqrt(-d)/(2*a); printf(x2=%0.2f-%0.2fin,-b/(2*a),sqrt(-d)/(2*a);/* 调试时设置断点*/调试断点的使用:断点的作用是使程序执行到断点处暂停,观察当前变量或表达式的值。设置断点时,先将 光标定位到要设置断点的位置,然后单击编译工具条的也按钮,则断点设置完毕。若要取消 已设置的断点

7、,需将光标移到要取消的断点处再单击砂按钮,该断点即取消。上述程序设置断点进行调试的步骤: 打开源程序,对程序进行编译和连接,没有出现错误信息。 设置 3 个断点,具体位置见源程序的注释说明。ttinclude ttinclude main(uoid) double a,b,c,d; printf(Enter a ,b ,c; scanfflf ,lf;d=b*b-4*a*c;调试时设置断点*/if(a=Q) if(b=O) if(c=Q)PintFC参数都为零,方程无意义! n); elseprintFCaflb为比c不为比 方程不成立n);elseValue友直斷原祁田&caS &aNamE

8、aprintf (,x=0.2Fn,-c/b);elseNameValue2.1000000000000001r0x0012FF780X0012FF703.50000000000000000X0012FF6842.10000000000000018.900000000000000435000000000000000Context: mainQ 单击=(Go)按钮,输入a,b,c的值(2.1,8.9,3.5),则程序执行到第一个断点处,在观 察窗口输入变量名a,b,c的值。此时,这些变量的值与输入的值一致。 继续单击按钮,程序运行到第二个断点外,观察到变量d的值是49.81,说明方程有实 根。N

9、ameValued49.810000000000002Context: mainQNameValuea2.10000000000000018.90000000000000043.500000000000000049.810000000000002ca C:DOCU1EHTS AHD SETEnter a,b,c :2.1,8.9,3.5 pci =-0.442=-3.80再次单击按钮,程序运行到最后一个断点处,运行窗口显示:符合题目要求。单击壬(Stop Debugging)按钮,程序调试结束。2改错题(1)改正下列程序中的错误,输入实数x,计算并输出下列分段函数f(x)的值,输出时保留1位1

10、小数。 y = f (x) = s x(x = 10)(x 丰 10)有错误的程序:#includemain() double x,y;printf(“Enter x:n”);scanf(“%f”,&x);scanf(“%lf”,&x);if(x=10)y=1/x; y=1.0/x;else(x!=10)f*1* *1* *1* *1* *1* /*T *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1*、t*、t*、t*、t*、t*、t*、t* *1* *1* /*found*/y=x;printf(“f(%.2f)=%.2fn”,x,y);(2) 以下程序

11、的功能是若ab,则交换a和b的值。 有错误的程序:main()#include int a,b,t;printf(Enter a,b:); scanf(%d,%d,&a,&b);if(ab)f K,t* k1* k1* k1* k1* k1* k1* k1* *1* *1* *1* *1* *1* /*T *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1*、t*、t*、t*、t*、t*、t*、t* *1* *1* /*found*/t=a; a=b; b=t; t=a; a=b; b=t;printf(%d,%dn,a,b);(3) 判断输入的正整数是否是5

12、的整数倍。若是,输出yes;否则输出no。 有错误的程序:#includemain() int x;printf(input x:);scanf(%d,&x);if(x%5=0)if(x%5=0)printf(yesn);elseprintf(non);(4) 改正下列程序中的错误,输入一个形式如“操作数运算符操作数”的表达式,对两个整 数进行乘、除或求余计算。有错误的程序:main() char sign;int x,y;printf(输入x运算符y:);scanf(%d%c%d,&x,&sign,&y);if(sign=x)if(sign =*)printf(%d*%d=%dn,x,y,x

13、*y);else if(sign=/)else if(sign=/)/ 1 /*found*/printf(%d/%d=%dn,x,y,x/y);else if(sign=%)else if(sign=%)/ 1 /*found*/printf(%dMod%d=%dn,x,y,x%y);elseprintf(运算符输入错误!n);3编程题1)P112-4#includeint main() int max(int x,int y);int a,b,c,d,e; scanf(%d%d%d,&a,&b,&c); d=max(a,b);e=max(c,d); printf(max=%dn,e);return 0;int max(int x,int y) int z;if(xy)z=x;else z=y; return z;(2)P113-8#includeint main()float x;printf

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号