ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:72.01KB ,
资源ID:7607597      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7607597.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(湖北理工学院14本科C语言实验报告实验三循环控制.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

湖北理工学院14本科C语言实验报告实验三循环控制.docx

1、湖北理工学院14本科C语言实验报告实验三循环控制湖北理工学院14本科C语言实验报告实验三 循环控制实验三 循环控制 实验课程名:C语言程序设计 专业班级: 14电气工程2班 学号: 201440210237 姓名: 熊帆 实验时间: 4.28-5.5 实验地点: K4-207 指导教师: 祁文青 一、实验目的和要求 1. 熟悉掌握用for语句,while语句和do_while语句实现循环的方法。 2. 掌握在程序设计中用循环的方法实现一些常用算法(如穷举、迭代、递推等)。 二、实验内容 1. 下面程序求1+100,填空,实现该功能。 #include void main() int s,i;

2、s=0; /* 第5行 */ for( i=1;i=100;i+ ) s=s+i; printf(1+.+100=%dn,s); 解答: ,1,源代码: #include void main() int s,i; s=0; for(i=1;i=100;i+) s=s+i; printf(1+.+100=%dn,s); (2)运行结果: (3)运行结果分析:考察for循环语句的运用,i的初值为1,当满足i=100时就会执行for语句下面的一条语句,s的值一直累加,直到i=101跳出for循环,输出最终结果,为5050 2. 比较下列两个程序。(验证) #include void main() i

3、nt i,n,sum=0; scanf(%d,&i); n=i; while(i=10) sum+=i; i+; printf(%d+.+10=%d,n,sum); #include void main() int i,n,sum=0; scanf(%d,&i); n=i; do sum+=i; i+; while(i=10); printf(%d+.+10=%d,n,sum); 分别运行这两题,若输入7,这两个程序的结果分别是多少,若输入12,这两个程序的结果又分别是多少,比较为什么会有这样的区别, 解答: ,1,源代码: 程序1: #include void main() int i,n,

4、sum=0; scanf(%d,&i); n=i; while(i=10) sum+=i; i+; printf(%d+.+10=%d,n,sum); 程序2: #include void main() int i,n,sum=0; scanf(%d,&i); n=i; do sum+=i; i+; while(i=10); printf(%d+.+10=%d,n,sum); ,2,运行结果:输入7时,两个程序的运行结果分别如下图 输入12时,两个程序的运行结果分别如下图 (3)运行结果分析:程序1和程序2分别用到的分别是while型循环和do while循环。当输入7时,i=10对两个程序来

5、说都是成立的,但是程序1是先判断再执行,而程序2是先执行再判断,但不影响最后的结果,输出都是34。但是当输入12的时候,由于程序1是先判断再执行,由于i=10为假,故输出为0。而程序2是先执行再判断,不管输入是什么整数值,都至少会执行一遍,所以还是执行了一遍,最终输出和输入结果一样,都是12。 3. 下面程序,若输入12345,分析输出结果是多少,上机验证。 #include void main( ) long data; scanf(%ld,&data); while(data) printf(%ld,data%10); data=data/10; 解答: ,1,源代码: #include

6、void main() long data; scanf(%ld,&data); while(data) printf(%ld,data%10); data=data/10; (2)运行结果: (3)运行结果分析:data的定义为长整型,当输入12345时,while(data),则进入一个while循环,先输出12345除以10的余(加一个逗号),即输出12345的个位数。再令data等于12345除以10的模,从而data等于1234,再次,输出1234除以10的余(加一个逗号),即输出12345的十位数。接下来依次类推,最终实现输出5,4,3,2,1。 4. 下面程序实现求Fibonac

7、ci数列的前n个数。(验证、调试) ,1n1n2或,F ,nF,Fn,3n,1n,2,运行程序,写出运行结果;采用单步跟踪技术运行该程序,观察一下变量的变化。 #include void main( ) long int f1, f2; int i,n; printf(Input n:); /* 第5行 */ scanf(%d,&n); /* 第6行 */ f1=f2=1; for(i=1;in;i+) printf(%ldt%ldn,f1,f2); /* 第9行 */ f1=f1+f2; f2=f2+f1; 解答: ,1,源代码: #include void main() long int

8、f1, f2; int i,n; printf(Input n:); /* 第5行 */ scanf(%d,&n); /* 第6行 */ f1=f2=1; for(i=1;in;i+) printf(%ldt%ldn,f1,f2); /* 第9行 */ f1=f1+f2; f2=f2+f1; (2)运行结果: 调试过程 (3)运行结果分析:验证了2个值,分别为2和9。当输入n=2时,输出1行值,为1 1。 当输入n=9时,输出8行值,如上图所示。 【关于Fibonacci数列:斐波那契数列指的是这样一个数列 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 14

9、4, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368 特别指出:第0项是0,第1项是第一个1。 这个数列从第三项开始,每一项都等于前两项之和。】 5.下面程序,写出预习结果并上机验证。(验证) #include void main( ) int i,j,x; for(i=0,x=0;i2;i+) x+; for(j=0;j3;j+) if(j%2) continue; x+; x+; printf(x=%dn, x); 思考:用一句话概括if(j%2)语句的作用。 解答: (1)运行结果: (2)运行结果分析:if(j%2

10、)语句的作用实际上就是判断j是否为奇数。如果能整除2就执行,不能整除就不执行,通过continue跳出本次循环。即如果j%2=0就执行x+,j%2!=0就通过continue跳出本次循环。通过for循环的嵌套与continue语句的结合,使得最终输出结果为8。 6.下面程序输入一批考试分数,用,1作为结束标志,若输入大于100分,则提示重新输入,然后计算最高分、最低分与平均分。请调试、检查程序中的错误,并改正之。 #include void main( ) int mark; int n=0 ; sum=0 ; int max=100 ; min=0 ; for ( ; ; ) ; scanf

11、(%d, &mark); if ( mark 100 ) printf( Mark 100 , Please reinput n ); break; if ( mark=-1) break; n + ; sum=sum + mark ; if( mark max ) max = mark ; if( mark min ) min = mark ; sum=sum/ n ; printf(max =%d , min = %d, aver = %d n, max , min , sum); 解答: ,1,源代码: #include void main() int mark; int n=0,sum

12、=0 ; int max=100,min=0 ; for( ; ; ) scanf(%d, &mark); if(mark100) printf( Mark 100 , Please reinput n ); break; if(mark=-1) break; n + ; sum=sum + mark; if(markmax) max=mark; if(markmin) min=mark; sum=sum/ n ; printf(max =%d , min = %d, aver = %d n, max , min , sum); (2)运行结果: (3)运行结果分析:int语句有误,定义多个变

13、量的时候应该使用逗号隔开。还有一个错误是for语句后来不能要分号,应该去掉。 运行时输入了10个分数值,并以-1作为结束标志,计算出最高分,最低分和平均分,实验结果与预期一致。 7. 编程:输入20个1,90的整数,分类统计1,30、31,60、61,90的数各有多少个, 解答: ,1,源代码:#include void main() int count1=0,count2=0,count3=0; int i,x; printf(请输入20个数:n); for(i=0;i=1&x=31&x=61&x=90) count3+; printf(count1=%d,count2=%d,count3=

14、%dn,count1,count2,count3); ,2,运行结果: (3)运行结果分析:用三个if语句与for循环结合,输入了20个数字,验证结果与预期一致,如上图所示。 8.编程:素数是除了1和其本身以外,不能被其他自然数整除的自然数。从键盘输入一个数,判断该数是不是素数, 解答: ,1,源代码:#include void main() int a,b; printf(请输入一个数:); scanf(%d,&a); for(b=2;b=a-1;b+) if(a%b) ; else break; if(b=a) printf(它是一个素数n); else printf(它不是一个素数n);

15、 return 0; ,2,运行结果: (3)运行结果分析:运用for循环实现整除的过程,实验运行程序时分别输入了一个9和11,实验结果均与预期一致。 9.编程:显示所有的水仙花数。谓水仙花数,是指一个3位数,其各位数字立方和等于该数字333本身。例,153是水仙花数,因为153=1+5+3 。有两种解题思路,选择其中之一编程实现: (1) 利用三重循环,将这三个数通过一定的运算符连接成一个3位数,然后判断是否是水仙花数。 for(i=1;i=9;i+) for(j=0;j=9;j+) for(k=0;k=9;k+) 注意,因水仙花是一个三位数,百位i是从1开始,不能从0开始,十位j和个数位k

16、可以从0开始。 (2) 利用一个循环,对100,999范围内的每个3位数逐位分离后进行判断。 for(i=100;i999;i+) a=i/100; b=(i-a*100)/10; c=i%10; 解答: ,1,源代码: #include void main() int a,b,c; for(a=1;a=9;a+) for(b=0;b=9;b+) for(c=0;c=9;c+) if(a*100+b*10+c)=(a*a*a+b*b*b+c*c*c) printf(%d%d%dn,a,b,c); return 0; (2)运行结果: (3)运行结果分析:运用3个for循环语句,再判断是否满足水

17、仙花数的条件。实验结果如上图,与预期结果相符。 10.编程:输出下列图形。 * * * * * 解答: ,1,源代码: #include int main() int m,n; for(m=1;m=5;m+) for(n=1;n=5-m;n+) printf( ); for(n=1;n=2*m-1;n+) print(*); printf(n); return 0; (2)运行结果: (3)运行结果分析:通过for循环的嵌套,通过输出空格和星号来控制最终的图像,由星号组成的三角形。 三、结论 本次实验主要考察的是for循环的嵌套的使用要学会用单步执行来观察程序的每一步的运行情况这样非常有利于理解for循环的嵌套。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1