C语言循环实验报告.docx

上传人(卖家):最好的沉淀 文档编号:5794324 上传时间:2023-05-09 格式:DOCX 页数:10 大小:71.69KB
下载 相关 举报
C语言循环实验报告.docx_第1页
第1页 / 共10页
C语言循环实验报告.docx_第2页
第2页 / 共10页
C语言循环实验报告.docx_第3页
第3页 / 共10页
C语言循环实验报告.docx_第4页
第4页 / 共10页
C语言循环实验报告.docx_第5页
第5页 / 共10页
点击查看更多>>
资源描述

1、C 语言循环实验报告实验名: 循环结构实验目的1、掌握在程序设计条件型循环结构时,如何正确地设定循环条件,以及如何控制循环 的次数。2、了解条件型循环结构的基本测试方法。3、掌握如何正确地控制计数型循环结构的次数4、了解对计数型循环结构进行测试的基本方法5、了解在嵌套循环结构中,提高程序效率的方法二、实验内容(一)) 题目 11、题目内容描述1、下面是一个计算 e 的近似值(使误差小于给定的)的程序。main()double e=1.0,x=1.0,y,detax; int i=1;printf(“n please input enter a error:”); scanf(“%lf”,&de

2、tax);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,分别换成 ydetax,y=detax,ydetax,y=detax, 观察程序运行将会有什么变化。 假如不知道机器内

3、的程序中的各语句实际上是什么,分别输入什么样的 detax 来测试出 while 语句的循环条件写错了。(4) 把原程序中 while 语句之前的 y=1/x 语句去掉,观察程序的运行将会发生什么样 的变化。 假如不知道机器内的程序实际上是怎么写的,输入什么样的 detax 就能测试出少了上述 这条语句。(5) 若把原程序中的+i 换成 i+,观察程序的运行发生了什么变化? 假如不知道这条语句到底是怎么3写的,输入什么样的 det ax 就能测试出这条语句写错了( 6 ) 把原程序中的 wh il e 结构 改写成 dowhi l e 结构,再分别按上述的(2) 、 ( 3) 两步进 行实验。

4、2、输入和输出信息描述及数据类型确定;( D输入数据序号输入数据描述e,x,y,detax2i( 2 ) 输出数据序号输出数据描述E数据类型double int数据类型double3、程序源代码(填 写程序调试正确后的代码)#include int main()double e,x,y,detax; inti;e=l. 0;x=l. 0;i =l. 0;printf(please input enter a error:n); scanf (%1f 气det ax) ;y=l/x;wh i l e (y=det ax)x=x*i; y=l/x; e=e+y;+i;printf (%12. lO

5、lf, e) ; return 0;7、程序调试否 决是 解 是 是错误错误信息(列出出错语句以及出错序号提示)1 格式不对32 warning: return type defaults toint-Wr et urn - t ype Ierror: stray243in program I 是error: stray273in program I4D :程序e 近似值m ai n. c l I In是functionmain5 6error: stray 241 i n program I3error: stray241in program I 是error:Iundeclared (f

6、i r st 是use in this funct i on) I解决方法手动调整在mai n ()前加上i nt将doubl e e=l. 0, x=l. 0, y, detax; int i =l ;改为double e, x, y, detax; int i ;e=l. O; x=l. O; i=l. O;将 rp i nt f ( n pl ease input enter a err or : ) ;改为pr i nt f (w please input enter a err or : n*) ;将scanf (%lf, &det ax) ; 改为将I改为i7c l 1 9 l e

7、r r or : stray241in是8pr ogram l将pr i nt ( %1 2. 101, e) ;改为print (%12. 101, e) ;10c l 20wlar ni ng: control reaches是在后一个大括号前加上r et ur n O;end of non-void function - Wr et ur n- t ype I8、测试与结果分析测试序号测试用例选取原因测试输入数据测试输出结果是否芷确结果分析1不循环21. 0000000000是2循环一次12.5000000000是3循环两次0. 72. 5000000000是(l 测试数据与结果死循环。

8、无是( 2; 相关问题回答(1 ) 阅读上面的程序, 写出程序所依据的计算公式。答: e =l +1/ 2+1/ 600+1 / i !( 2) 当输入的 det ax 各是什么值时 , 能分别使程序按下面的要求运行: 不进入循环; 只循环一次; 只循环两次;进入死循环(程序将永远循环下去)。为了能知道程序循环了多少次,应该在程序中增加 一条什么样的语句?答:大 于1不进入循环,等于 1只循环一次, 大于0. 5小于1只循环两次, 等于0进入死循环(程序将永远循环下去)。应增加pr i nt f ( i 书 d , i-1) ;( 3) 原程序中 whi l e 语句中的 y)= det ax

9、, 分别换成 y) det ax, y=det ax, y( det ax, y( =det ax,观察程序运行将会有什么变化。假如不知道机器内的程序中的各语句实际上是什么, 分别输入什么样的 det ax 来测试出 whil e 语句的循环条件 写错了。答: y) det ax , 输入不小千1时不进行循环,输出l ; 输入小千1时则会进行循环。y=det ax, 当输入为0时, y被赋值为 o, 直接结束循环; 当输入不为o, 则进入死循环。y( det ax, 输入不大于1时不进行循环, 输出为1; 输入大千1时则进入死循环。y(= det ax, 输入不小千1时进入死循环;输入小千1则

10、不进行循环,输出1。分别输入3, 0. 5, 1即可。( 4) 把原程序中w hi l e 语句之前的 y= l/ x 语句去掉,观 察程序的运行将会发生什么样 的变化。 假如不知道机器内的程序实际上是怎么写的,输 入什么样的 det ax 就能测试出少了上述 这条语句。答: 输入1.( 5) 若把原程序中的廿i 换成 i +,观察程序的运行发生了什么变化? 假如不知道这条语句到底是怎么写的,输入什么样的 de t ax 就能观试出这条语句写错了( 6 ) 把原程序中的 whil e 结构改写成 do一whi l e 结构,再分别按上述的(2) 、 ( 3) 两步进 行实验。答: ( 2) 步

11、与原来w hil e 相同。 ( 3) 步当有的输入条件不符合判断条件时, 仍会先进行一次循环后结束,而whil e 则直接结束。#i nc l ude int main()doub l e e,x,y,detax; int i ;e=l.O;x=l. 0;i=l. 0;4pr i nt f ( n pl eas e input enter a error:);定义变量/赋值scanf(%lf,&detax);/ 输入detax y=1/x;dox=x*i; y=1/x; e=e+y;+i;while(y=detax);/ 执行dowhile循环printf(%12.10lfn,e);/ 输出

12、printf(i=%dn,i-2);) 题目21、题目内容描述下面是一个用以计算 的 C 程序。main()int i ,j; long sum=0;for(i=1,i=20,i+) for(j=1;j=3;j+) sum=sum+(i+1)*(i+1)*(j+2) printf(“sum is :%dn”,sum);2、 实验步骤(1) 将上述程序中的和分别做什么样修改,能使程序按如下要求运行: .不循环; .外循环 1 次,不进入内循环; .外循环,内循环各 1 次; .外循环 1 次,内循环 2 次;外循环 2次, 内循环 1 次; . 外循环 19 次,内循环 3 次; .外循环 20

13、 次,内循环 2 次; .外循环 21 次,内循环 3 次。(2) 试修改程序,以便能知道控制表达式i=1;j=20;i+ 和 j=1;j3;j+= 各执行了多少次?(3) 内循环与外循环的控制表达式进行对换,观察程序的执行结果有无变化,并且观 察对换后的外循环与内循环控制表达式执行的总次数有无变化?(4) 将(3)中程序写为main()int i,j,k; long sum=0;for (j=1.j=3.j+)k=j+2; for(i=1;i=20;i+) sum=sum+(i+1)*(i+1)*k;printf(“sum is :%dn”,sum);观察程序的执行结果有无变化?(5) 将(

14、3)中程序改写为main()int I,j,m,n; long sum=0;for(j=1;j=3;j+)m=j+2; for(I=1;j=20;I+)n=I+1;sum=sum+m*m*k;printf(“sum is :%dn”,sum);观察程序的执行结果有无变化?(6) 在(5)的程序中,若将外循环控制表达式分别做如下修改: .j=1;j=3;j+ .j=1;j3;j+ .j=1;j3;j- .j=1;j3;j+ .j=0;j=3;j+= .j=0;j3;j+ j=1;j=3;j+ j=1;j3;+j 观察程序的执行结果有无变化2、输入和输出信息描述及数据类型确定;、输入数据序号输入数

15、据描述1 I,j2 sum数据类型intlong int(2)输出数据序号输出数据描述1sum数据类型Long int3、程序源代码(填写程序调试正确后的代码) #include main()int i ,j; long sum=0;for(i=1;i=20;i+) for(j=1;j=3;j+)sum=sum+(i+1)*(i+1)*(j+2); printf(sum is :%dn,sum);4、程序调试错误序号1错误信息(列出出错语句以及出错提示)|6|warning: value computed is not used是否解决是解决方法将for(i=1;i=20;i+) 改为-Wun

16、used-value|for(i=1;i3;j+).外循环,内循环各1次: 改为for(i=1;,i=1;i+)for(j=1;j=1;j+).外循环1次,内循环2次:改为for(i=1;i=1;i+)int j =1;for(;j=2;j+).外循环2次, 内循环1次: 改为for(i=1;i=2;i+)for(;j2;j+).外循环19次,内循环3次: 改为for(i=1;i=19;i+) int j=1; for(;j=3;j+).外循环20次,内循环2次:改为 for(i=1;i=20;i+) int j=1; for(;j=2;j+).外循环21次,内循环3次: 改为for(i=1;

17、i=21;i+) int j=1; for(;j=3;j+)(2) 试修改程序,以便能知道控制表达式i=1;j=20;i+ 和 j=1;j3;j+= 各执行了多少次? 答:添加printf(i=%d,j=%d,i,j); 分别执行60和20次。(3) 内循环与外循环的控制表达式进行对换,观察程序的执行结果有无变化,并且观 察对换后的外循环与内循环控制表达式执行的总次数有无变化?答:无,次数外循环3次,内循环60次,内循环不变,外循环次数改变(4) 将(3)中程序改写观察程序的执行结果有无变化? 无。(5) 将(3)中程序改写 观察程序的执行结果有无变化? 无。(6) 在(5)的程序中,若将外循

18、环控制表达式分别做如下修改:j=1;j=3;j+ .j=1;j3;j+ .j=1;j3;j- .j=1;j3;j+.j=0;j=3;j+= .j=0;j3;j+ j=1;j=3;j+ j=1;j3;+j 观察程序的执行结果有无变化答:(1).j=1;j=3;j+结果0.(4)j=1;j3;j+结果 0(5)j=1;j3;j 结果不运行(7)j=1;j3;j+ 结果23170(8)j=0;j=3;j+=结果有错(9)j=0;j3;j+结果29790(10)j=1;j=3;j+结果39720.(11)j=1;j3;+j结果23170。、题目31、 题目内容描述#include int main()

19、int i,x,n,j;/ 定义变量printf(please enter the n:);scanf (%d,&n);/ 输入格式for(i=n;i=1;i-)for(j=0;jn-i;j+)printf( );/ 当j小于n-i时循环输出空格for(x=1;x1&x2*i+n-2&(i!=n)&(i!=1)printf( );/ 若满足条件则打印空格if(x=1|x=2*i+n-2|i=1|i=n)printf(*);/ 若满足则打印* printf(n);/ 换行3、测试与结果分析、测试数据与结果测试测试用序号例选取原因测试输入数据测试输出结果是否结果分正确析绘制等腰空心梯形,下底和高都

20、为输入变量n,n=5时,打印图形如右:2、程序源代码(填写程序调试正确后的代码)1 6正确2 8正确3 13正确(四)题目41、题目内容描述想一个1100之间的数,猜对: right,猜错:wrong并提示大小。(1)最多猜10次猜多个数,(2)10次猜不对就猜下一个数6、程序源代码(填写程序调试正确后的代码) 猜十次:#include #include / 预处理magic#include / 时间函数int main()int magic,number,i;/ 定义变量i=1;srand(time(NULL);magic = rand() % 100 + 1;/ 产生随机数for (i=1

21、;i=10;i+)printf(请输入你猜的数字:n);scanf (%d,&number);/ 输入number if (numbermagic)printf(数字略大n);/若大于则输出该语句else if(number=magic)printf(你猜对了n);break;/ 正确则输出你猜对了,停止循环if(i=10)printf(“你已经猜错十次,游戏结束n”);/十次都猜错则输出该语句return 0;猜多个#include #include / 预处理magic#include / 时间函数int main()int magic,number,i;/ 定义变量i=0;char re

22、ply; dosrand(time(NULL);magic = rand() % 100 + 1;/ 产生随机数for (i=0;i=10;i+)/ 进入循环。猜十次printf(请输入你猜的数字:n);scanf (%d,&number);/ 输入number if (numbermagic)printf(数字略大n);/若大于则输出该语句else if(number=magic)printf(你猜对了n);break;/ 正确则输出你猜对了,停止循环printf(你要继续玩吗?(Y/N or y/n);getchar();/清除回车符while (reply = Y|reply = y);/ 用do while循环处理已知结束条件printf(游戏结束n);return 0;以上两个程序因数据过大,故没有写测试用例,但我已经试过无误。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公、行业 > 待归类文档
版权提示 | 免责声明

1,本文(C语言循环实验报告.docx)为本站会员(最好的沉淀)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|