C语言循环实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验名:循环结构实验目的
1、掌握在程序设计条件型循环结构时,如何正确地设定循环条件,以及如何控制循环的次数。
2、了解条件型循环结构的基本测试方法。
3、掌握如何正确地控制计数型循环结构的次数
4、了解对计数型循环结构进行测试的基本方法
5、了解在嵌套循环结构中,提高程序效率的方法
二、实验内容
(一))题目1
1、题目内容描述
1、下面是一个计算e的近似值(使误差小于给定的δ)的程序。
main()
{
doublee=1.0,x=1.0,y,detax;
inti=1;
printf(“\npleaseinputenteraerror:”);
scanf(“%lf”,&detax);
y=1/x;
while(y>=detax)
{
x=x*I;
y=1/x;
e=e+y;
++i;
}
printf(“%12.10lf”,e);
}
2、实验步骤
(1)阅读上面的程序,写出程序所依据的计算公式。
(2)当输入的detax各是什么值时,能分别使程序按下面的要求运行:.不进入循环;.只循环一次;.只循环两次;.进入死循环(程序将永远循环下去)。为了能知道程序循环了多少次,应该在程序中增加一条什么样的语句?
(3)原程序中while语句中的y>=detax,分别换成y>detax,y=detax,y (5)若把原程序中的++i换成i++,观察程序的运行发生了什么变化?假如不知道这条语句到底是怎么写的,输入什么样的detax就能测试出这条语句写错了. (6)把原程序中的while结构改写成do—while结构,再分别按上述的(2)、(3)两步进行实验。 2、输入和输出信息描述及数据类型确定; (1) 、输入数据 序号输入数据描述数据类型 1 e,x,y,detax double 2 i int (2)输出数据 序号输出数据描述数据类型1 E double 3、程序源代码(填写程序调试正确后的代码) #include intmain() { doublee,x,y,detax; inti; e=1.0; x=1.0; i=1.0; printf("pleaseinputenteraerror:\n"); scanf("%lf",&detax); y=1/x; while(y>=detax) { x=x*i; y=1/x; e=e+y; ++i; } printf("%12.10lf",e); return0; } 7、程序调试 错误序号错误信息(列出出错语句以及出错提示)是 否 解 决 解决方法 1 格式不对是手动调整 2 warning:returntypedefaultsto'int'[-Wreturn-type]| 是在main()前加上int 3 error:stray'\243'inprogram|error:stray'\273'inprogram| 是将doublee=1.0,x=1.0,y,detax;inti=1; 改为 doublee,x,y,detax;inti;e=1.0;x=1.0 ;i=1.0; 4 D:\程序\e近似值\main.c||Infunction'main' error:stray'\241'inprogram| 是将 printf(“\npleaseinputenteraerror: ”);改为 printf("pleaseinputenteraerror:\n" ); 5 error:stray'\241'inprogram| 是将scanf(“%lf”,&detax);改为 6 error:'I'undeclared(firstuseinthisfunction)| 是将I改为i 7 c|19|error:stray'\241'inprogram| 是将printf(“%12.10lf”,e);改为 printf("%12.10lf",e); 8 c|20|warning:controlreachesendofnon-voidfunction[-Wret urn-type]| 是在后一个大括号前加上return0; 8、测试与结果分析 (1) 、测试数据与结果 测试序号测试用例选取原 因 测试输入 数据 测试输出结果是否 正确 结果分析 1 不循环 2 1.0000000000 是 2 循环一次 1 是 3 循环两次0.7 是 死循环0 无是 (2) 、相关问题回答 (1)阅读上面的程序,写出程序所依据的计算公式。 答:e=1+1/2+1/6…+1/i! (2)当输入的detax各是什么值时,能分别使程序按下面的要求运行:.不进入循环;.只循环一次;.只循环两次;.进入死循环(程序将永远循环下去)。为了能知道程序循环了多少次,应该在程序中增加一条什么样的语句? 答:大于1不进入循环,等于1只循环一次,大于0.5小于1只循环两次,等于0进入死循环(程序将永远循环下去)。应增加printf(“i=%d”,i-1); (3)原程序中while语句中的y>=detax,分别换成y>detax,y=detax,y 答:输入1. (5)若把原程序中的++i换成i++,观察程序的运行发生了什么变化?假如不知道这条语句到底是怎么写的,输入什么样的detax就能测试出这条语句写错了. (6)把原程序中的while结构改写成do—while结构,再分别按上述的(2)、(3)两步进行实验。 答:(2)步与原来while相同。(3)步当有的输入条件不符合判断条件时,仍会先进行一次循环后结束,而while 则直接结束。 #include intmain() { doublee,x,y,detax;//定义变量 inti; e=1.0;//赋值 x=1.0; i=1.0; printf("\npleaseinputenteraerror:"); scanf("%lf",&detax);//输入detax y=1/x; do { x=x*i; y=1/x; e=e+y; ++i; } while(y>=detax);//执行do…while循环 printf("%12.10lf\n",e);//输出