C语言循环实验报告.docx_第1页
C语言循环实验报告.docx_第2页
C语言循环实验报告.docx_第3页
C语言循环实验报告.docx_第4页
C语言循环实验报告.docx_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验名: 循环结构实验目的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”,&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,分别换成 ydetax,y=detax,ydetax,y=detax, 观察程序运行将会有什么变化。 假如不知道机器内的程序中的各语句实际上是什么,分别输入什么样的 detax 来测试出 while 语句的循环条件写错了。 (4)把原程序中 while 语句之前的 y=1/x 语句去掉,观察程序的运行将会发生什么样 的变化。 假如不知道机器内的程序实际上是怎么写的,输入什么样的 detax 就能测试出少了上述 这条语句。 (5)若把原程序中的+i 换成 i+,观察程序的运行发生了什么变化? 假如不知道这条语句到底是怎么写的,输入什么样的 detax 就能测试出这条语句写错了. (6)把原程序中的 while 结构改写成 dowhile 结构,再分别按上述的(2)、(3)两步进 行实验。2、输入和输出信息描述及数据类型确定;(1)、输入数据序号输入数据描述 数据类型1e,x,y,detaxdouble2iint(2)输出数据序号输出数据描述 数据类型1Edouble3、程序源代码(填写程序调试正确后的代码)#include int main() double e,x,y,detax; int i; e=1.0; x=1.0; i=1.0; printf(please input enter a error:n ); scanf(%lf,&detax); y=1/x; while(y=detax) x=x*i; y=1/x; e=e+y; +i; printf(%12.10lf,e); return 0;7、程序调试错误序号错误信息(列出出错语句以及出错提示)是否解决解决方法1格式不对是手动调整2warning: return type defaults to int -Wreturn-type|是在main()前加上int3error: stray 243 in program| error: stray 273 in program|是将double e=1.0,x=1.0,y,detax;int i=1; 改为double e,x,y,detax;int i;e=1.0;x=1.0;i=1.0;4D:程序e近似值main.c|In function mainerror: stray 241 in program|是将printf(“n please input enter a error:”);改为printf(please input enter a error:n );5error: stray 241 in program|是将scanf(“%lf”,&detax);改为6error: I undeclared (first use in this function)|是将I改为i7c|19|error: stray 241 in program|是将printf(“%12.10lf”,e);改为printf(%12.10lf,e);8c|20|warning: control reaches end of non-void function -Wreturn-type|是在后一个大括号前加上return 0;8、测试与结果分析(1)、测试数据与结果测试序号测试用例选取原因测试输入数据测试输出结果是否正确结果分析1不循环21.0000000000是2循环一次12.5000000000是3循环两次0.72.5000000000是死循环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,分别换成 ydetax,y=detax,ydetax,ydetax ,输入不小于1时不进行循环,输出1;输入小于1时则会进行循环。y=detax,当输入为0时,y被赋值为0,直接结束循环;当输入不为0,则进入死循环。ydetax,输入不大于1时不进行循环,输出为1;输入大于1时则进入死循环。y=detax,输入不小于1时进入死循环;输入小于1则不进行循环,输出1。分别输入3,0.5,1即可。(4)把原程序中 while 语句之前的 y=1/x 语句去掉,观察程序的运行将会发生什么样 的变化。 假如不知道机器内的程序实际上是怎么写的,输入什么样的 detax 就能测试出少了上述 这条语句。 答:输入1.(5)若把原程序中的+i 换成 i+,观察程序的运行发生了什么变化? 假如不知道这条语句到底是怎么写的,输入什么样的 detax 就能测试出这条语句写错了. (6)把原程序中的 while 结构改写成 dowhile 结构,再分别按上述的(2)、(3)两步进 行实验。答:(2)步与原来while相同。(3)步当有的输入条件不符合判断条件时,仍会先进行一次循环后结束,而while则直接结束。#include int main() double e,x,y,detax; /定义变量int i;e=1.0; /赋值 x=1.0; i=1.0; printf(n please input enter a error:); scanf(%lf,&detax); /输入detax y=1/x; do x=x*i; y=1/x; e=e+y; +i;while(y=detax); /执行dowhile循环 printf(%12.10lfn,e); /输出 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 次,内循环 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)将(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、输入和输出信息描述及数据类型确定;(1)、输入数据序号输入数据描述 数据类型1I,jint2sumlong int(2)输出数据序号输出数据描述 数据类型1sumLong 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 -Wunused-value|是将for(i=1;i=20;i+)改为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;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)的程序中,若将外循环控制表达式分别做如下修改: 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、 题目内容描述绘制等腰空心梯形,下底和高都为输入变量n,n=5时,打印图形如右: 2、程序源代码(填写程序调试正确后的代码)#include int main() 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); /换行 return 0;3、测试与结果分析(1)、测试数据与结果测试序号测试用例选取原因测试输入数据测试输出结果是否正确结果分析16正确28正确313正确(四)题目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;i=10;i+) printf(请输入你猜的数字:n); scanf (%d,&number); /输入numbe

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论