实验5 循环及其应用实验报告答案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验五循环及其应用

【实验类型】设计性

【实验学时】2学时

【实验目的】

1、熟悉掌握用while语句,do-while语句和for语句实现循环的方法。

2、掌握在程序设计中用循环语句实现一些常用算法(如穷举、迭代、递推等)。【实验内容】

编程序并上机调试运行。

1.输入两个正整数m和n,求它们的最大公约数和最小公倍数。

输入时,使m

再输入时使m>n,观察结果是否正确;

修改程序使对任何的整数都能得到正确的结果。

解:

(1)

#include

void main()

{int hcf(int,int);

int lcd(int,int,int);

int m,n,h,x;

printf("请输入两个整数m,n:\n");

scanf("%d,%d",&m,&n);

h=hcf(m,n);

x=lcd(m,n,h);

printf("最大公约数是%d,\n最小公倍数是%d。\n",h,x);

}

int hcf(int m,int n)

{int r;

if((r=m%n)!=0)

{m=n;n=r;}

return(r);

}

int lcd(int m,int n,int h)

{return (m*n/h);}

(2)

#include

void main()

{int hcf(int,int);

int lcd(int,int,int);

int m,n,h,x;

printf("请输入两个整数m,n:\n");

scanf("%d,%d",&m,&n);

h=hcf(m,n);

x=lcd(m,n,h);

printf("最大公约数是%d ,\n 最小公倍数是%d 。\n",h,x);

}

int hcf(int m,int n)

{

int t,r;

if(n>m)

{t=n;n=m;m=t;}

while((r=m%n)!=0)

{m=n;n=r;}

return(n);

}

int lcd(int m,int n,int h)

{

int j;

if(m>=n) j=m;

else j=n;

for(;!(j%m==0&&j%n==0);j++);

return j;

}

2.编写程序利用公式:!

n 1!21!111e ++++= 求e 的近似值,精确到小数后6位 解:

(1)

#include

void main()

{

int i=1;

double e=1,k=1;

do

{

e=e+1/k;

i++;

k=k*i;

}while(1/k>=1e-6);

printf("e 的近似值e=%f\n",e);

}

(2)

#include

void main()

{

int i;

double e=1,k=1;

for(i=1;1/k>=1e-6;i++)

{

k=k*i;

e=e+1/k;

}

printf("e的近似值e=%f\n",e);

}

3.编程求1到n中能被3或7整除的数之和。分别用for循环语句和while循环语句完成本题。

解:

(for循环语句)

#include

void main()

{ int i=1;

long int k=0,n;

printf("请输入n:\n");

scanf("%ld",&n);

for(;i<=n;i++)

if(i%3==0||i%7==0)

k=k+i;

else;

printf("1到n中能被3或7整除的数之和k=%ld。\n",k);

}

#include

void main()

{

int i=1;

long int k=0,n;

printf("请输入n:\n");

scanf("%ld",&n);

printf("1到n中能被3或7整除的数:\n");

for(;i<=n;i++)

if(i%3==0||i%7==0)

{

k+=i;

printf("%-7ld",i);

if(i%14==0)

printf("\n");

}

printf("\n1到n中能被3或7整除的数之和k=%ld。\n",k);

}

(用while循环实现)

#include

void main()

{ int i=1;

long int k=0,n;

printf("请输入n:\n");

scanf("%ld",&n);

while(i<=n)

{

{

if(i%3==0||i%7==0)

k=k+i;

}

i++;

}

printf("1到n中能被3或7整除的数之和k=%ld。\n",k);

}

#include

void main()

{

int i=1;

long int k=0,n;

printf("请输入n:\n");

scanf("%ld",&n);

printf("1到n中能被3或7整除的数:\n");

while(i<=n)

{if(i%3==0||i%7==0)

{k+=i;

printf("%-7ld",i);

if(i%14==0)

printf("\n");

}

i++;

}

printf("\n1到n中能被3或7整除的数之和k=%ld。\n",k);

}

4.上机完成习题6.10:猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉了一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少桃子。

在得到正确结果后,修改题目,改为每天早上都吃了前一天剩下的一半加二个,请修改程序,并运行,检查运行结果是否正确。

解:

#include

void main()

{int i,x,y;

相关文档
最新文档