预览加载中,请您耐心等待几秒...
1/7
2/7
3/7
4/7
5/7
6/7
7/7

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

实验三循环结构程序设计 一、实验学时 4学时。 二、实验目的 1.熟练掌握用while、do-while以及for语句实现循环程序设计的方法。 2.理解循环条件和循环体的含义。理解循环结构中语句的执行过程。 3.熟练掌握break和continue语句的功能及应用。 4.掌握应用嵌套循环结构进行程序设计的方法。 5.掌握应用循环结构及穷举算法解决有关问题。 6.掌握运行到光标位置、使用断点等程序调试方法。 三、实验内容 1.程序调试 【例1】改正下列程序中的错误,求S=1!+2!+3!+…+n!的值,n的值通过键盘输入(n≤10)。 输入样例: 请通过键盘输入具体数据给变量n赋值:5↙ 输出样例: 1!+2!+3!+…+5!=153程序: #include<stdio.h> voidmain() { intn,i; longints,sum; printf("请通过键盘输入具体数据给变量n赋值:"); scanf("%d",&n); for(i=1;i<=n;i++) { s=s*i sum+=s; } printf("1!+2!+3!+...+%d!=%ld\n",n,sum); } (1)按照前面章节实验中介绍的步骤,保存源程序代码。 (2)单击编译按钮(Compile),出现第一条编译错误信息是:missing';'beforeidentifier'sum',改正后,重新编译和连接,都正确。 (3)开始调试程序,鼠标单击第11行,光标在第11行闪烁,这就是当前光标的位置,单击,程序运行到光标位置。在变量窗口中,第一次循环时i的值为1,n的值为5,正确;而s的值为-858993460,不正确。请分析错误原因:s示未赋初值,longints,sum;改为longints=1,sum;,改正后,重新编译和连接,继续进行上述操作,这时s的值为1正确。 (4)鼠标单击第12行,光标在第12行闪烁,这就是当前光标的位置,单击,程序运行到光标位置。在变量窗口中,第一次循环时i的值为1,s的值为1,正确;而sum的值为-858993460,不正确。请分析错误原因:sum示未赋初值,longints,sum;改为longints=1,sum=0;,改正后,重新编译和连接,继续进行上述操作,这时sum的值为0正确。 (5)把光标定位到倒数第3行,单击(RuntoCursor)按钮,程序运行到光标位置。在变量窗口中,s的值为1,sum的值为1,显示信息正确。 (6)单击(StopDebugging)按钮,程序调试结束。 在程序调试的过程中,应用了“运行到光标位置”的程序调试方法:即单击按钮,程序运行到光标位置,观察变量窗口中所显示的变量信息内容,分析此时变量的值是否正确。同时,结合断点的使用,断点的使用就是让程序运行到断点处暂停,让用户可以观察当前变量或表达式的值。设置断点时,先将光标定位到要设置断点的位置,然后单击编译微型工具条的按钮,断点设置完毕。如果要取消已经设置的断点,只需要将光标移到要取消的断点处,再次单击按钮,该断点取消。 在循环结构的程序设计中,这种程序调试的方法经常使用,在具体进行程序调试时,设置程序运行断点处位置,注意变量窗口中显示变量的具体值信息(如果变量较多时,可以输入变量名查看),这些变量的值是否与循环第一次运行时一致。 2.编程练习 (1)读入一个正整数n,计算并输出前n项之和s的值(保留6位小数)。 S=1+1/4+1/7+1/10+1/13+1/16+… 程序运行结果输入/输出示例: 输入样例: 请输入n的值:3↙ 输出样例: S=1.392857参考程序如下: #include"stdio.h" voidmain() { inti,k,n; doublesum; printf("请输入n的值:"); scanf("%d",&n); sum=0; k=1; for(i=1;i<=n;++i) { sum+=1/(double)k; k+=3; } printf("S=%lf\n",sum); } 思考题1:读入一个正实数n,计算并s的值(保留6位小数),要求精确到最后一项的绝对值小于n(保留6位小数)。 S=1-1/4+1/7-1/10+1/13-1/16+… 输入样例: 请输入n的值:1E-4↙ 输出样例: S=0.835699参考程序如下: #include"stdio.h" #include"math.h" voidmain() { inti,k,t; doublen; doublesum; printf("请输入n的值:"); scanf("%lf",&n); sum=0; t=1; k=1; while(fabs(t/(dou