- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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)