实验三 循环结构程序设计(答案).doc_第1页
实验三 循环结构程序设计(答案).doc_第2页
实验三 循环结构程序设计(答案).doc_第3页
实验三 循环结构程序设计(答案).doc_第4页
实验三 循环结构程序设计(答案).doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

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

文档简介

实 验 教 案课题(项目)名称: 实验三 循环结构程序设计计划学时: 2学时 实验类型: 1.演示性 2.验证性 3.综合性 4.设计性 5.其它授课日期: 年 月 日 第 周 星期 第 节一、实验目的 (1) 掌握while、dowhile、for语句的使用。 (2) 掌握循环体内使用break、continue语句的作用。 (3) 掌握循环及嵌套循环结构的程序设计方法。二、实验准备1C语言实现循环的方法 goto 和 if 构成的循环:由于goto是无条件转向,不符合结构化程序设计思想,所以不建议使用。 while循环:实现“当型”循环,首先判断循环条件,当条件为真,执行循环体,再判断循环条件 此种循环有可能一次也不执行循环体。(当条件成立的时候执行循环体。如果待解决的问题不知道循环的具体重复执行的次数,只知道循环的结束条件时,经常采用这种循环处理结构。)例如:从键盘输入若干个整数,当输入0时结束输入并求这些整数的和。#include void main()int num,total;total=0;scanf(“%d”,&num);while(num!=0)total+=num;scanf(“%d”,&num);printf(“%dn”,total); dowhile循环:实现“直到型”循环,与while循环的区别是先执行循环体,再判断循环条件,当循环条件为真,再执行循环体 此种循环至少执行一次循环体。例如:统计从键盘输入的一行非空字符的个数。#include void main() char c;int n=0;doc=getchar();n+;while(c!=n); for循环:与while循环类似,一般用于知道循环变量初值、终值及步长值的循环。2break 和continue 语句 break 语句: 可用在循环体或switch语句中,作用是跳出其所在的控制结构。若是在循环体中,则是跳出其所在的循环,使得循环不止一个出口。 continue语句:只能用在循环体中,其作用是结束本层本次循环,注意不是退出循环。(在循环体中的continue语句执行之后,其后的语句均不再执行。)例如:输出11000之间能被3、5、7同时整除的数。#include void main()int n;for(n=1;n=1000;n+)if(n%3!=0)continue;if(n%5!=0)continue;if(n%7!=0)continue;printf(“%8d”,n);printf(“n”);3阅读以下程序,并分析其功能,调试运行程序后再分析其运行结果。 掌握三种方法求1到100的累加和。文件名为 ex3-1-1.c ,内容如下:# include main() int sum=0,i=1; while(i=100) sum+=i+; / 等价于: sum=sum+i; i+; printf(sum is %dn,sum);文件名为 ex3-1-2.c ,内容如下:# include main() int sum=0,i=1; do sum+=i+; while(i=100); printf(sum is %dn,sum);文件名为 ex3-1-3.c ,内容如下:# include main() int sum=0,i; for(i=1;i=100;i+) sum+=i; printf(sum is %dn,sum); 程序二,程序文件名为ex3-2.c 。(掌握递推算法(求值)# include # include void main() int s=1; float n=1,t=1,pi=0; while(fabs(t)1e-6) /当前项实数t的绝对值大于1*10-6则执行循环体 pi=pi+t; /累加当前项 n=n+2; /推算下一项的分母 s=-s; /推算下一项的符号 t=s/n; /计算下一项的值 pi=pi*4; printf(pi= %fn,pi); 程序三,程序文件名为 ex3-3.c 。(掌握迭代算法(处理fibonacci数列前40项)# include void main() long f1=1,f2=1; int i; for(i=1;i=20;i+) printf(%12ld %12ld,f1,f2); /输出当前的两项 if(i%2=0) /循环2次后输出回车换行,即一行输出4个数 printf(n); f1=f1+f2; /推算之后的第一项 f2=f1+f2; /推算之后的第二项 程序四,程序文件名为ex3-4.c 。(掌握穷举算法(判素数)# include # include void main() int m,i,k; printf(Input m: ); scanf(%d,&m); k=sqrt(m); /可以改为:k=m-1; 或 k=m/2; for(i=2;i=k;i+) /穷举2k之间的数作为除数判断和m能否整除 if(m%i=0) /若其中之一能够整除,则确定m不是素数,不再循环,此时ik) /若ik则说明以上循环中m不能被所有的i整除则确定m是素数 printf(%d 是素数!n,m); else printf(%d 不是素数!n,m); 三、实验内容( 按要求设计以下程序,并调试分析运行结果 ,此部分完成在实验报告上)1、设计程序sy3-1.c ,要求打印小学九九乘法表。算法分析:根据九九乘法表可知,该表共有9行,第i行有i个表达式,而且表达式中的操作数和行、列数相关,因此可以用嵌套的双重循环来实现,外循环控制行数(循环变量从1到9),内循环控制每行的表达式个数(循环变量从1变到i)。参考答案:# include void main() int i,j; for(i=1;i=9;i+) for(j=1;j=i;j+) printf(%d*%d=%-5d,j,i,i*j); printf(n); 运行结果:2、设计程序sy3-2.c ,要求编程计算xn,其中x和n均由键盘输入。算法分析:要计算x的n次方,即是n次x相乘,其中x可以是整型或实型,而n必须是整型;另外要考虑结果的类型,若x和n比较大,一般的int型容易产生溢出。参考答案:# include void main() int i,n; float x,p=1; /*累乘器要赋初值1*/ printf(Input x,n: ); scanf(%f,%d,&x,&n); /*以逗号分隔输入的已知数据x和n的值*/ for(i=1;i=n;i+) p=p*x; printf(%g%d=%gn,x,n,p);运行结果:3、设计程序sy3-3.c,已知祖父年龄70岁,长孙20岁,次孙15岁,幼孙5岁,问要过多少年,三个孙子的年龄之和同祖父的年龄相等,试用单重循环结构编程实现。4、设计程序sy3-4.c ,有一数列:2/1,3/2,5/3,8/5,求出这个数列的前10项之和。算法分析:这是一个序列累加的算法,第一项的值是2/1,之后每一项的规律是:分母为前一项的分子,分子为前一项分子分母之和;另外注意在除运算中若分子分母都为整数则结果也为整数,显然在这道题中分子分母的类型应为实型。参考答案:# include void main() int i; float s=0,a=2,b=1,c,t; for(i=1;i=10;i+) t=a/b;/*计算确定分子分母后当前项的值*/ s=s+t;/*将当前项t的值累加到求和变量s当中*/ c=a;/*将前一项的分子暂存于c变量中*/ a=a+b;/*修改下一项的分子为前一项分子分母之和*/ b=c;/*修改下一项的分母为前一项的分子*/ printf(The sum is %fn,s);运行结果:5、设计程序sy3-5.c ,一球从200米高度自由落下,每次落地后反跳回原高度的四分之一,再落下。编程求它第10次落地时共经过的路程及第10次落地后反弹的高度。6、设计程序sy3-6.c ,要求求出满足“百位减去十位等于个位”的所有三位整数,并按一行5个数输出结果。7、设计程序sy3-7.c ,要求从键盘上输入整数m和k,输出大于且紧靠m的k个素数。8、中国古代数学家张丘建在他的算经中提出了著名的“百钱买百鸡问题”:鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问翁、母、雏各几何?请编程解决该问题。(文件名存为sy3-8.c)9、编写程序sy3-9.c ,输入一个正整数,计算并显示该整数的各位数字之和,例如,整型数1987的各位数字之和是1+9+8+7,等于25。10、编写程序sy3-10.c ,功能是找出1至99之间的全部同构数。所谓同构数是这样的一组数:它出现在它平方数的右边。(例如:5是25右边的数,25是625右边的数,5和25都是同构数。)11、编写程序sy3-11.c,在1-500中找出能同时满足用3除余2,用5除余3,用7余2的所有整数输出并计数。算法分析:穷举法解决。参考答案:# include void main() int i,n=0; for(i=1;i=500;i+) if( i%3=2 & i%5=3 & i%7=2) printf(%5d,i); n+; printf(ncount: %dn,n);运行结果:12、编写程序sy3-12.c试用单重循环结构编程实现,求出10个“韩信点兵数”。该数除以3余2,除以5余3,除以7余4(如53,158,263)。四、实验要求: 此次实验内容设置得比较多,请各位同学在课堂上至少选做其中5道题,其余的请在下次上课前利用课外时间完成。五、实验报告填写要求:1、第一页用攀枝花学院实验报告纸,其后用实验报告附页纸。2、第一页填写项目:实验课程:计算机基础2-C语言 实验项目:本次实验名称 实验日期:本次实验日期系:

温馨提示

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

评论

0/150

提交评论