第5章 循环结构程序设计作业参考答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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;
}