第5章 循环结构程序设计作业参考答案

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

第5章循环结构程序设计作业参考答案

班级学号姓名

【第140页】

5-1、请画出课本里5.6中给出的3个程序段的传统流程图。

(1)程序1:

#include

int main()

{

int i,j,n=0;

for (i=1;i<=4;i++)

for (j=1;j<=5;j++,n++)

{ if(n%5==0)printf("\n"); //控制在输出5个数据后换行

printf("%d\t",i*j);

}

printf("\n");

return 0;

}

(2)程序2:

#include

int main()

{

int i,j,n=0;

for (i=1;i<=4;i++)

for (j=1;j<=5;j++,n++)

{ if(n%5==0)printf("\n"); //控制在输出5个数据后换行

if (i==3 && j==1) break; //遇到第3行第1列,终止内循环

printf("%d\t",i*j);

}

printf("\n");

return 0;

}

(3)程序3:

#include

int main()

{

int i,j,n=0;

for (i=1;i<=4;i++)

for (j=1;j<=5;j++,n++)

{ if(n%5==0)printf("\n"); //控制在输出5个数据后换行

if (i==3 && j==1) continue; //遇到第3行第1列,提前结束执行本次内循环体

printf("%d\t",i*j);

}

printf("\n");

return 0;

}

(1)程序1流程图(2)程序2流程图(3)程序3流程图

5-3、输入两个正整数m和n,求其最大公约数和最小公倍数。

#include

int main()

{

long m,n,i=1,j,s;

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

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

{

if(m%i==0&&n%i==0) s=i;

}

if(m>=n) j=m;

else j=n;

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

printf("s=%ld,j=%ld\n",s,j);

return 0;

}

5-4、输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。 #include

int main()

{

char c;int i=0,j=0,k=0,l=0;

while((c=getchar())!='\n')

{

if(c>=65&&c<=90||c>=97&&c<=122) i++;

else if(c>=48&&c<=57) j++;

else if(c==32) k++;

else l++;

}

printf("i=%d,j=%d,k=%d,l=%d\n",i,j,k,l);

return 0;

}

5-6、求∑=201

!n n (即求!20!4!3!2!1+++++ )。

#include

int main()

{

double s=0,t=1;

int n;

for (n=1;n<=20;n++)

{

t=t*n;

s=s+t;

}

printf("1!+2!+...+20!=%22.15e\n",s);

return 0;

}

5-8、输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身,例如153是一个水仙花数,因为153=13+53+33)

#include

int main()

{

int i,j,k,n;

printf("parcissus numbers are ");

for (n=100;n<1000;n++)

{

i=n/100;

j=n/10-i*10;

k=n%10;

if (n==i*i*i + j*j*j + k*k*k)

printf("%d ",n);

}

printf("\n");

return 0;

}

5-14、一个球从100 米高度自由落下,每次落地后又反弹回原来高度的一半,再落下,再反弹,求它在第10 次落地时共经过多少米?第10次反弹多高?

#include

int main()

{

double sn=100,hn=sn/2;

int n;

for (n=2;n<=10;n++)

{

sn=sn+2*hn; /*第n次落地时共经过的米数*/

hn=hn/2; /*第n次反跳高度*/

}

printf("第10次落地时共经过%f米\n",sn);

printf("第10次反弹%f米\n",hn);

return 0;

}

5-16、输出以下图案:

*

* * *

* * * * *

* * * * * * *

* * * * *

* * *

*

解题思路:此类题目属于二维图形的输出,找到规律的行(此题前4 行有一样的规律,后3行一样的规律)

#include

int main()

{

int i,j,k;

for (i=0;i<=3;i++)

{

for (j=0;j<=2-i;j++)

printf(" ");

for (k=0;k<=2*i;k++)

printf("*");

printf("\n");

}

for (i=0;i<=2;i++)

{

for (j=0;j<=i;j++)

printf(" ");

for (k=0;k<=4-2*i;k++)

printf("*");

printf("\n");

}

return 0;

}

相关文档
最新文档