C语言循环实验报告 -
更新时间:2023-09-15 09:31:01 阅读量: 资格考试认证 文档下载
- c语言循环实验报告总结推荐度:
- 相关推荐
实验名: 循环结构 实验目的
1、掌握在程序设计条件型循环结构时,如何正确地设定循环条件,以及如何控制循环 的次数。 2、了解条件型循环结构的基本测试方法。 3、掌握如何正确地控制计数型循环结构的次数 4、了解对计数型循环结构进行测试的基本方法 5、了解在嵌套循环结构中,提高程序效率的方法
二、实验内容
(一)) 题目 1
1、题目内容描述
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(“.10lf”,e); }
2、实验步骤
(1)阅读上面的程序,写出程序所依据的计算公式。
(2)当输入的 detax 各是什么值时,能分别使程序按下面的要求运行: .不进入循环; .只循环一次; .只循环两次; .进入死循环(程序将永远循环下去)。 为了能知道程序循环了多少次,应该在程序中增加一条什么样的语句?
(3)原程序中 while 语句中的 y>=detax,分别换成 y>detax,y=detax,y (4)把原程序中 while 语句之前的 y=1/x 语句去掉,观察程序的运行将会发生什么样 的变化。 假如不知道机器内的程序实际上是怎么写的,输入什么样的 detax 就能测试出少了上述 这条语句。 (5)若把原程序中的++i 换成 i++,观察程序的运行发生了什么变化? 假如不知道这条语句到底是怎么写的,输入什么样的 detax 就能测试出这条语句写错了. 1 (6)把原程序中的 while 结构改写成 do—while 结构,再分别按上述的(2)、(3)两步进 行实验。 2、输入和输出信息描述及数据类型确定; (1)、输入数据 序号 输入数据描述 1 e,x,y,detax 2 i (2)输出数据 序号 输出数据描述 1 E 3、程序源代码(填写程序调试正确后的代码) #include double e,x,y,detax; int i; e=1.0; x=1.0; i=1.0; printf(\ scanf(\ y=1/x; while(y>=detax) { x=x*i; y=1/x; e=e+y; ++i; } printf(\ return 0; } 7、程序调试 错误错误信息(列出出错语句以及出错序号 提示) 1 2 3 格式不对 数据类型 double int 数据类型 double 是否解决 是 解决方法 手动调整 在main()前加上int 将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; 将printf(“\\n please input enter a error:”);改为printf(\ warning: return type defaults 是 to 'int' [-Wreturn-type]| error: stray '\\243' in program| 是 error: stray '\\273' in program| D:\\程序\\e近似值\\main.c||In function 'main' error: stray '\\241' in program| 是 4 5 6 7 error: stray '\\241' in program| 是 error: 'I' undeclared (first use in this function)| c|19|error: stray '\\241' in 是 是 2 将scanf(“%lf”,&detax);改为 将I改为i 将printf(“.10lf”,e);改为 program| 8 c|20|warning: control reaches 是 end of non-void function [-Wreturn-type]| printf(\在后一个大括号前加上return 0; 8、测试与结果分析 (1)、测试数据与结果 测试测试用例选取原序号 因 1 2 3 不循环 循环一次 循环两次 测试输入 数据 2 1 0.7 0 测试输出结果 1.0000000000 2.5000000000 2.5000000000 无 是否正确 是 是 是 是 结果分析 死循环 (2)、相关问题回答 答:e=1+1/2+1/6…+1/i! (1)阅读上面的程序,写出程序所依据的计算公式。 (2)当输入的 detax 各是什么值时,能分别使程序按下面的要求运行: .不进入循环; .只循环一次; .只循环两次; .进入死循环(程序将永远循环下去)。 为了能知道程序循环了多少次,应该在程序中增加一条什么样的语句? 答:大于1不进入循环,等于1只循环一次,大于0.5小于1只循环两次,等于0进入死循环(程序将永远循环下去)。应增加printf(“i=%d”,i-1); (3)原程序中 while 语句中的 y>=detax,分别换成 y>detax,y=detax,y 答:y>detax ,输入不小于1时不进行循环,输出1;输入小于1时则会进行循环。y=detax,当输入为0时,y被赋值为0,直接结束循环;当输入不为0,则进入死循环。y (4)把原程序中 while 语句之前的 y=1/x 语句去掉,观察程序的运行将会发生什么样 的变化。 假如不知道机器内的程序实际上是怎么写的,输入什么样的 detax 就能测试出少了上述 这条语句。 答:输入1. (5)若把原程序中的++i 换成 i++,观察程序的运行发生了什么变化? 假如不知道这条语句到底是怎么写的,输入什么样的 detax 就能测试出这条语句写错了. (6)把原程序中的 while 结构改写成 do—while 结构,再分别按上述的(2)、(3)两步进 行实验。 答:(2)步与原来while相同。(3)步当有的输入条件不符合判断条件时,仍会先进行一次循环后结束,而while则直接结束。 #include double e,x,y,detax; //定义变量 int i; e=1.0; //赋值 x=1.0; i=1.0; printf(\ scanf(\输入detax 3 y=1/x; do { x=x*i; y=1/x; e=e+y; ++i; } while(y>=detax); //执行do…while循环 printf(\输出 printf(\} (二)) 题目 2 1、题目内容描述 下面是一个用以计算 的 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 次;外循环 2次, 内循环 1 次; .外循环 19 次,内循环 3 次; .外循环 20 次,内循环 2 次; .外循环 21 次,内循环 3 次。 (2)试修改程序,以便能知道控制表达式 i=1;j<=20;i++ 和 j=1;j<3;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 :%d\\n”,sum); } 观察程序的执行结果有无变化? (5)将(3)中程序改写为 4 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;j=3;j++ .j=1;j>=3;j++ .j=1;j>3;j++ .j=1;j<=3;j-- .j=1;j>3;j-- .j=1;j<3;j++ .j=0;j<=3;j+= .j=0;j<3;j++ j=1;j<=3;j++ j=1;j<3;++j 观察程序的执行结果有无变化 2、输入和输出信息描述及数据类型确定; (1)、输入数据 序号 1 2 序号 1 3、程序源代码(填写程序调试正确后的代码) #include 4、程序调试 错误序号 错误信息(列出出错语句以及出错提示) 是否解决 5 解决方法 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); 输入数据描述 I,j sum 输出数据描述 sum 数据类型 int long int 数据类型 Long int (2)输出数据 printf(\ 1 2 3 4 5 6 |6|warning: value computed is not used 是 [-Wunused-value]| |2|warning: return type defaults to 'int' [-Wreturn-type]| |9|error: expected ';' before 'printf'| 是 |9|error: stray '\\241' in program| |10|warning: control reaches end of non-void function [-Wreturn-type]| |9|warning: format '%d' expects argument of type 'int', but argument 2 has type 'long int' [-Wformat=]| 否 是 是 是 将for(i=1;i<=20;i++)改为for(i=1;i<=20;i++) 在main()前加上int sum=sum+(i+1)*(i+1)*(j+2)后面加上分号 将printf(“sum is :%d\\n”,sum);改为printf(\加上return 0; (2)、相关问题回答 (1)将上述程序中的和分别做什么样修改,能使程序按如下要求运行: .不循环; .外循环 1 次,不进入内循环; .外循环,内循环各 1 次; .外循环 1 次,内循环 2 次;外循环 2次, 内循环 1 次; .外循环 19 次,内循环 3 次; .外循环 20 次,内循环 2 次; .外循环 21 次,内循环 3 次。 答:外循环1次,不进入内循环:改为for(i=1,i=1,i++) for(j=1;j>3;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(;j<2;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;j<3;j+= 各执行了多少次? 答:添加printf(\分别执行60和20次。 (3)内循环与外循环的控制表达式进行对换,观察程序的执行结果有无变化,并且观 察对换后的外循环与内循环控制表达式执行的总次数有无变化? 答:无,次数外循环3次,内循环60次,内循环不变,外循环次数改变 (4)将(3)中程序改写观察程序的执行结果有无变化? 无。 (5)将(3)中程序改写 观察程序的执行结果有无变化? 无。 (6)在(5)的程序中,若将外循环控制表达式分别做如下修改: j=1;j<3;j++ .j=1;j=3;j++ .j=1;j>=3;j++ .j=1;j>3;j++ .j=1;j<=3;j-- .j=1;j>3;j-- .j=1;j<3;j++ .j=0;j<=3;j+= .j=0;j<3;j++ j=1;j<=3;j++ j=1;j<3;++j 观察程序的执行结果有无变化 答:(1).j=1;j<3;j++ 结果23170(2)j=1;j=3;j++结果死循环(3)j=1;j>=3;j++结果0 .(4)j=1;j>3;j++结果 0(5)j=1;j<=3;j—结果死循环(6)j=1;j>3;j— 结果不运行(7)j=1;j<3;j++ 结果23170(8)j=0;j<=3;j+=结果有错(9)j=0;j<3;j++结果29790(10)j=1;j<=3;j++结果39720 .(11)j=1;j<3;++j结果23170。 (三)、题目 3 1、 题目内容描述 绘制等腰空心梯形,下底和高都为输入变量n,n=5时,打印图形如右: 6 2、程序源代码(填写程序调试正确后的代码) #include int main() { int i,x,n,j; //定义变量 printf(\ scanf (\输入格式 for(i=n;i>=1;i--) { for(j=0;j printf(\当j小于n-i时循环输出空格 for(x=1;x<=2*i+n-2;x++) { if(x>1&&x<2*i+n-2&&(i!=n)&&(i!=1)) printf(\若满足条件则打印空格 if(x==1||x==2*i+n-2||i==1||i==n) printf(\若满足则打印* } printf(\换行 } return 0; } 3、测试与结果分析 (1)、测试数据与结果 测试 测试用测试输入测试输出结果 是否 序号 例选取数据 正确原因 1 6 正确 2 8 正确 7 结果分 析 3 13 正确 (四)题目4 1、题目内容描述 想一个1~100之间的数,猜对: right,猜错:wrong并提示大小。(1)最多猜10次猜多个数,(不对就猜下一个数 6、程序源代码(填写程序调试正确后的代码) 猜十次: #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 (\输入number if (number printf(\数字略小\\n\若小于则输出该语句 else if(number>magic) printf(\数字略大\\n\若大于则输出该语句 else if(number==magic) { printf(\你猜对了\\n\ break; //正确则输出你猜对了,停止循环 } } if(i==10) printf(“你已经猜错十次,游戏结束\\n”); //十次都猜错则输出该语句 return 0; 8 2)10次猜} 猜多个 #include #include int main() { int magic,number,i; //定义变量 i=0; char reply; do { srand(time(NULL)); magic = rand() % 100 + 1; //产生随机数 for (i=0;i<=10;i++) //进入循环。猜十次 { printf(\请输入你猜的数字:\\n\ scanf (\输入number if (number printf(\数字略小\\n\若小于则输出该语句 else if(number>magic) 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; } 以上两个程序因数据过大,故没有写测试用例,但我已经试过无误。 9
正在阅读:
C语言循环实验报告 -09-15
中学综合素质讲义冲刺点睛12-05
2019年高考地理总复习区域地理 - 世界地理《世界的陆地和海洋》教案10-06
软件测试时间计划05-11
永大日立电梯调试说明 - 图文04-28
2018年二年级数学上册教学计划04-26
玉米堆角度12-31
液相色谱仪检测器最小检测浓度测量结果不确定度的评定03-02
咖啡相关的英文对照02-22
- 梳理《史记》素材,为作文添彩
- 2012呼和浩特驾照模拟考试B2车型试题
- 关于全面推进施工现场标准化管理实施的通知(红头文件)
- 江西省房屋建筑和市政基础设施工程施工招标文件范本
- 律师与公证制度第2阶段练习题
- 2019-2020年最新人教版PEP初三英语九年级上册精编单元练习unit6训练测试卷内含听力文件及听力原文
- 小升初数学模拟试卷(十四) 北京版 Word版,含答案
- 认识创新思维特点 探讨创新教育方法-精选教育文档
- 00266 自考 社会心理学一(复习题大全)
- 多媒体在语文教学中的运用效果
- 派出所派出所教导员述职报告
- 低压电工作业考试B
- 18秋福建师范大学《管理心理学》在线作业一4
- 中国铝业公司职工违规违纪处分暂行规定
- 13建筑力学复习题(答案)
- 2008年新密市师德征文获奖名单 - 图文
- 保安员培训考试题库(附答案)
- 银川市贺兰一中一模试卷
- 2011—2017年新课标全国卷2文科数学试题分类汇编 - 1.集合
- 湖北省襄阳市第五中学届高三生物五月模拟考试试题一
- 循环
- 语言
- 实验
- 报告
- 大学英语阅读教程3翻译
- 知识产权管理制度及流程
- 刑法诉讼浅谈法庭辩论的技巧
- 5.3 染色体变异练习题
- 有关肺炎的试题
- 第四章 场效应管(FET)及基本放大电路要点
- 使用USB EJTAG v1.0的详细步骤及遇到的几个问题和解决办法
- 2011年高考物理试题分类汇编选修3-3
- 2015技术指导员手册(油菜)
- 二年级下册语文生字组词1--10.doc
- 气液传质设备
- 2018-2019年初中生物江苏中考真题试卷含答案考点及解析
- 第三周,理解重点句子
- 以刚入职时的状态对待工作
- 统计学综合练习题
- 计算机网络试卷B及答案
- 烟台市小学教育学会专业研究委员会理事会人员名单
- 2016年杭州市西湖区一模试卷+答案科学
- 大工16秋《模拟电子线路实验》实验报告及要求
- 届高考物理一轮复习第三章牛顿运动定律第二节牛顿第二定律两类动力学问题随堂检测新人教版