




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实 验 名 : 循 环 结 构实验目的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 ” ,&deta
2、x);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+, 观察程序的运行发生了什么变化? 假如不知道这条语句到底是怎么写 的 ,输入什么样的 detax 就能测试出这条语句写错了 .6 )把原程序中的 while 结构改写成 do while结构 ,再分别按上述的 (2)、( 3)两步进 行实验。2、输入
4、和输出信息描述及数据类型确定; (1、) 序号1输入数据 输入数据描述 e,x,y,detax i数据类型doubleint输出数据 输出数据描述 E数据类型double(2) 序号 13、程序源代码(填写程序调试正确后的代码) #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);retur
5、n 0;7、程序调试错误错误信息 (列出出错语句以及出错是否解决方法序号提示)解决1格式不对是手动调整2warning: return type defaults是在 main() 前加上 intto int -Wreturn-type|3error: stray 243 in program|是将 double e=1.0,x=1.0,y,detax; int i=1;error: stray 273 in program|改为 double e,x,y,detax;inti;e=1.0;x=1.0;i=1.0;4程序 e 近似值 main.c|In是将 prin tf( “ n pleas
6、e input enter a error:function main改为 printf(please input enter a error:n );error: stray 241 in program|5error: stray 241 in program|是将scanf( “%lf ”,&detax); 改为6error: I undeclared (first是将I 改为 iuse in this function)|7c|19|error: stray 241 in是将printf( “%12.10lf ”,e); 改为program|printf(%12.10lf,e););8
7、 c|20|warning: control reaches 是 在后一个大括号前加上 return 0; end of non-void function-Wreturn-type|8、测试与结果分析(1)、测试数据与结果测试测试用例选取原测试输入测试输出结果是否结果分析序号因数据正确1不循环21.0000000000是2循环一次1是3循环两次0.7是死循环0无是(2)、相关问题回答(1)阅读上面的程序,写出程序所依据的计算公式。答: e=1+1/2+1/6 +1/i!(2)当输入的 detax 各是什么值时,能分别使程序按下面的要求运行:.不进入循环; .只循环一次;只循环两次; .进入死
8、循环 (程序将永远循环下去 )。 为了能知道程序循环了多少次,应该在程序中增加一 条什么样的语句? 答:大于 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时不进
9、行循环, 输出为 1; 输入大于 1时则进入死循环。 y=detax,输入不小于 1时进入死循环;输入小于 1则不进行循环,输出 1。分 别输入 3,0.5, 1即可。( 4 )把原程序中 while 语句之前的 y=1/x 语句去掉,观察程序的运行将会发生什么样 的变化。 假如不 知道机器内的程序实际上是怎么写的,输入什么样的 detax 就能测试出少了上述 这条语句。答:输入 1.(5)若把原程序中的 +i 换成 i+, 观察程序的运行发生了什么变化?假如不知道这条语句到底是怎么写的 ,输入什么样的 detax 就能测试出这条语句写错了 .( 6 )把原程序中的 while 结构改写成 d
10、o while 结构 ,再分别按上述的 (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); / 输入 detaxy=1/x;dox=x*i;y=1/x;e=e+y;+i;while(y=detax); /执行 do
11、while 循环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 :%d n”,sum);2、实验步骤( 1 )将上述程序中的和分别做什么样修改,能使程序按如下要求运行:. 不循环; . 外循环 1 次,不进入内循环; . 外循环,内循环各 1 次; . 外循环 1 次,内循环 2 次;外循环
12、 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
13、( “sum is :%d n”,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 :%d n”,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
14、;+j2、输入和输出信息描述及数据类型确定;(1)、输入数据 序号 输入数据描述1 I ,j2 sum(2)输出数据 序号 输出数据描述1 sum3、程序源代码(填写程序调试正确后的代码) #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|2|2|
15、warning: return type defaults toint -Wreturn-type|3 |9|error: expected ; before printf|4 |9|error: stray 241 in program|观察程序的执行结果有无变化数据类型int long int数据类型 Long int是否 解决方法解决是 将 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
16、 =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+= 各执行了多少次?答:添加 print
17、f(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+
18、 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、 题目内容描述 绘制等腰空心梯形,下底和高都为输入变量 右: 2、程序源代码(填写程序调试正确后的代码) #include int main() int i,x,n,j;/n,n=5时
19、,打印图形如定义变量scanf (%d,&n);/输入格式printf(please enter the 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)、 测试测试数据与结果测试用例测试输入数据测试输出结果序号选取原因13是否 正确 正确 正确 正确
20、结果分析( 四 ) 题目 41、题目内容描述想一个 1100之间的数,猜对 : right ,猜错 :wrong 并提示大小。( 1)最多猜 10次猜多个数,2) 10次猜不对就猜下一个数6、程序源代码(填写程序调试正确后的代码) 猜十次:#include #include /#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); /预处理 magic时间函数定义变
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 跨区域输电线路及电站承包合同2025
- 软件公司装修合同范本版
- 平安医院建设合同范本
- 美国物业合同范本
- 酒水订货合同范本
- 卖房合同范本
- 购销合同范本中编号
- 水电劳务合同范本
- xx小学学生体质健康测试制度
- 中考语文记叙文阅读之标题理解
- 2025年福建省南平事业单位招考笔试高频重点提升(共500题)附带答案详解
- DB33 1121-2016 民用建筑电动汽车充电设施配置与设计规范
- 外墙保温及涂料施工组织设计方案
- 星际分子光谱分析学的研究方法探究系列如下-洞察分析
- 电力系统继电保护知到智慧树章节测试课后答案2024年秋福建水利电力职业技术学院
- IATF16949基础知识培训教材
- 儿童春季常见病及预防
- 中国慢性阻塞性肺疾病基层诊疗指南(2024年)解读
- 《中华人民共和国学前教育法》专题培训
- 2024年微生物在化妆品中的作用及其重要性
- 2024年视角下的地球形状教案创新探讨
评论
0/150
提交评论