实验六新.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验六新.doc

第九周上机课后上交实验报告 实验6 选择、循环结构的综合编程 一、目的和要求 1.熟练应用C语言的三种基本结构编程解决具体的问题。 2.掌握continue语句和break语句的使用方法。 3.掌握循环嵌套程序的设计。 4.掌握用循环的方法实现一些常用算法(如穷举、迭代、递推等)。 二、实验内容 1.穷举法编程 (1)编写程序,输入两个正整数m和n,求它们的最大公约数和最小公倍数。 ① 输入两组数据,分别使mn和mn,观察结果是否正确。 ② 分别用while语句、do-while语句和for语句实现。注意循环控制表达式的写法。 提示: ① 先求最大公约数,再用m和n的乘积除以最大公约数,结果即为最小公倍数。 ② 求最大公约数的算法: ???法一,穷举法。 ???法二,求差判定法:用大数减小数,如果差不为零,就用差继续减小数,直到差为零为止。最后这个差就是最大公约数。 ???法三,辗??相除法:用大数除以小数,如果不能整除,就用余数来除刚才的除数;依此类推,直到一个除法能够整除,这时作为除数的数就是所求的最大公约数。 法三 #include stdio.h void main () { int i,m,n,p,q,temp; printf(请输入要求最大公约数的两个整数\n); scanf(%d%d,m,n); p=m; q=n; if(nm) { temp=m; m=n; n=temp; } while(m%n!=0) { m=n; n=m%n; } printf(最大公约数为%d,n); i=(p*q)/n; printf(最小公倍数为:%d\n,i); } (2)输出所有的水仙花数。水仙花数是指一个3位数,各位数字的立方和等于该数本身,例如153=13+53+33。 提示: ① 法一:将问题转化为求的三个解,可以用穷举法。 ③ 法二:首先对100到999之间的每个数分别求出它的个位、十位和百位数,再判断是否满足水仙花数的条件。 #include stdio.h void main () { int i,x,y,z; printf(输出所有的水仙花数为:\n); for(i=100;i1000;i++) { x=i%10; y=i%100/10; z=i/100; if(x*x*x+y*y*y+z*z*z==i) printf(%6d,i); } printf(\n); } 2.递推问题 (1)国民生产总值(GDP)每年递增7.5%,编写程序计算并输出需要多少年国民生产总值才能翻一番。 #include stdio.h void main () { double m=1,x=1,count; for(count=0;xm*2;count++) x=1.075*x; printf(需要%.0lf年GDP才能翻一番.,count); printf(\n); } (2)有一分数序列: 求出这个数列的前20项之和。 #include stdio.h void main () { float sum=0,a,m,n,i; for(i=1;i=20;i++) { m=i; n=i+1; a=m*n; sum=sum+1/a; } printf(分数序列的前20项和为:%f\n,sum); } (3)下面是一个计算e的近似值的C程序。从键盘输入detax,使误差小于detax。 #include stdio.h void main( ) { double e=1.0,x=1.0,y,detax; int i=1; printf(Input a error:); scanf(%lf,detax); y=1/x; while (y=detax) { x=x*i; y=1/x; e=e+y; i+=1; } printf(e=%12.10lf\n,e); } 编译并运行,并分析结果。 ① 理解并运行程序,写出程序所依据的计算公式。e=1+1/1*1+1/1*2+1/1*3…… ② 当输入的detax各是什么值时,能分别使程序按下面的要求运行: ???不进入循环detax1 ???只循环两次detax=1 ???进入死循环(程序将永远循环下去)detax=0 如何才能知道程序循环了多少次?printf(“%d”,i);运行了i-1次 ③ 若把程序中while语句之前的语句“y=1/x”去掉,运行并分析结果。 ④ 把原程序中的while结构改为do-while结构,程序应作哪些修改?并运行修改后的程序,比较while语句和do-while语句的异同。 3.循环嵌套 (1)用循环语句编写程序,输

文档评论(0)

tangtianxu1 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档