实验一C调试程序基础及顺序结构程序设计一、实验目的(1)熟悉在VisualC++6.0环境中调试C程序的步骤和方法。(2)熟悉C程序调试的一般方法。(3)掌握C语言中各种运算符的运算规则和表达式的求值规则。(4)掌握格式化输入/输出函数和字符输入/输出函数的使用方法。(5)熟悉顺序结构程序设计的方法。二、实验准备1、C语言程序的上机操作C是编译型语言,设计好一个C源程序后,需要经过编译生成目标文件(扩展名.obj)、连接生成可执行文件(扩展名.exe),然后执行。一个C程序的具体开发步骤如下:(1)启动VC++6.0:“开始”“程序”“MicrosoftVisualC++6.0”(2)新建文件:“文件”“新建”在“新建”对话框中选择“文件”标签列表框中选“C++SourceFile”,在右边指定文件名和保存位置。(3)编辑:录入或修改源程序并保存(Ctrl+S)(4)调试运行:编译(Ctrl+F7)连接(F7)运行(Ctrl+F5),若有错需修改源程序后再调试程序(5)关闭工作区:“文件”“关闭工作空间”,一个程序调试结束后需关闭当前工作空间,再从第(2)步开始下一个程序的调试2、C程序的调试调试即是在源程序中查找错误并修改错误的过程。程序的错误一般分为两类:语法错误和逻辑错误。①语法错误:指不符合C语言语法规则而产生的错误。语法错误系统能检测出来并告之原因及位置,设计者可参考修改。②逻辑错误:指程序的运行结果与预期的结果不符而产生的错误。这类错误拔除难度较大,一般需祥细分析算法或在程序运行过程中设置断点、追踪程序的运行来纠错。(1)语法错误调试案例(建立程序名为ex1-1.c)#includestdio.hvoidmain(){inti=0printf(i=%d\n,i);}调试并查找以上程序的语法错误并分析原因并改正。(2)逻辑错误调试案例(建立程序名为ex1-2.c)#includestdio.hvoidmain(){intn;doublesum=0;for(n=1;sum10;n++)sum=sum+1/n;printf(n=%d\n,n);}该程序无语法错误,但运行后便进入死循环,即有逻辑错误。方法一:使程序执行到光标所在行暂停,步骤如下:①在需要暂停的行“sum=sum+1/n;”上单击,定位光标②“组建”“开始调试”“RuntoCursor”,或按Ctrl+F10。③在底部左窗格内观察程序中相关变量的当前值④在底部右窗格中输入观察对象1/n,观察其当前值⑤“调试”“StepInto”,或按F11,单步跟踪执行,并观察变量及表达式的变化情况,从而判断是否存在错误并纠正⑥结束调试:“调试”“StopDebugging”方法二:设置断点跟踪程序,步骤如下:①在需要暂停的行“sum=sum+1/n;”上定位光标②F9或单击“编译微型条”工具栏中的手形按钮,设置断点(断点行左侧有红色圆点标志)③F5或“组建”“开始调试”“Go”,使程序运行到断点处④在底部窗格中输入观察对象⑤F5或“调试”“Go”,使程序执行到下一断点处,并观察变量及表达式的变化⑥“调试”“StopDebugging”,结束调试⑦光标定位在断点行按F9或单击“编译微型条”工具栏上的手形按钮,取消断点(3)其他调试技术如在程序中循环语句中添加输出观察变量的语句和暂停语句如“getch();”观察变量的变化过程,待结果正确后再将其删除。三、实验内容1、数据类型、运算符和表达式的应用(1)整型数据的溢出(建立程序文件名为sy1-1.c)#includestdio.hvoidmain(){shortinta,b;a=32767;b=a+1;printf(a=%d,b=%d\n,a,b);}任务:记录以上程序的运行结果并分析原因(2)浮点型数据的舍入误差(建立程序文件名为sy1-2.c)#includestdio.hvoidmain(){floata,b;a=123456.789e5;b=a+20;printf(a=%f\tb=%f\n,a,b);}任务:记录以上程序的运行结果并分析原因(3)字符型数据和整型数据的混合使用(建立程序文件名为sy1-3.c)#includestdio.hvoidmain(){charc1,c2;c1=65;c2=66;printf(%c%c\n,c1,c2);}任务:记录以上程序的运行结果并分析原因扩展思考:①在上面程序的printf语句后增加语句“printf(%d%d\n,c1,c2);”,程序的运行结果是什么?②在上面程序的printf语句后增加语句“printf(%d%d\n,c1+32,c2+32);”,程序的运行结果是什么?③若将“charc1,c2;”改为“intc1,c2;”,程序的运行结果是什么?为什么?④若将“c1=65;c2=66;”改为“c1=’A’;c2=’B’;”,程序的运行结果是什么?为什么?⑤若将“c1=65;c2=66;”改为“c1=A;c2=B;”,结果会怎么样?⑥若将“c1=65;c2=66;”改为“c1=321;c2=322;”,程序的运行结果是什么?为什么?(4)算术表达式的求值(建立程序文件名为sy1-4.c)#includestdio.hvoidmain(){inta,b;floatx,y,r,s;a=7;x=2.5;y=4.7;r=x+a%3*(int)(x+y)%2/4;a=2;b=3;x=3.5;y=2.5;s=(float)(a+b)/2+(int)x%(int)y;printf(r=%.2fs=%.2f\n,r,s);}任务:记录以上程序的运行结果并分析原因(5)复合赋值表达式的求值((建立程序文件名为sy1-5.c))#includestdio.hvoidmain(){intx,y,z,t;x=1,y=2,z=3,t=4;printf(%d\n,x+=y+=z*z);printf(%d\n,t+=t-=t*t);}任务:记录以上程序的运行结果并分析原因(6)自增、自减运算求值(建立程序文件名为sy1-6.c)#includestdio.hvoidmain(){inti,j,m,n;i=8,j=10;printf(%d%d\n,i++,++j);printf(%d%d\n,i,j);printf(%d%d\n,-i++,-++j);printf(%d%d\n,i,j);}任务:记录以上程序的运行结果并分析原因2、顺序结构程序设计(1)编写程序sy1-7.c,要求从键盘输入一个字符,输出其前后相邻的两个字符,并另起一行在对应位置输出相应的ASCII码值。(2)编写程序sy1-8.c,设圆半径r=1.5,圆柱高h=3,计算圆周长(l=2*3.14*r)、圆面积(s=3.14*r*r)、圆球表面积(sq=4*3.14*r*r)、圆球体积(vq=4.0/3*3.14*r*r*r)、圆柱体积(vz=3.14*r*r*h)。用scanf函数输入半径和高的数据,输出计算结果。输入有提示,输出要有文字说明,结果取2位小数。(3)编写程序sy1-9.c,要求输入一个华氏温度,要求输出摄氏温度。其计算公式为59(32)cF,输入有提示,输出有文字说明,结果取2位小数。四、实验要求:“实验内容”中的任务要求在实验课上完成,若未完成请在下次上课前利用课外时间完成。五、实验报告填写要求:1、第一页用《攀枝花学院实验报告》纸,其后用《实验报告附页》纸。2、第一页填写项目:实验课程:计算机基础2-C语言实验项目:[本次实验名称]实验日期:[本次实验日期]系:班级:姓名:学号:指导教师:3、实验报告正文要求:实验目的:(抄写本次实验目的)实验仪器设备:PC机一套实验步骤(内容):(要求完成以上第三部分内容,分析结果项目要求抄录原题及程序,并在每道题的下方记录程序运行结果及分析原因;编程题要求抄写题目并写出程序源代码,并记录程序的运行结果)实验结论:(分析通过本次实验掌握的知识或是还有什么遗留问题)4、实验报告写好后将完成的实验报告纸订(或粘)在一起,于下一次上课前交给指导老师。