实验5循环结构参考答案doc.docx

上传人:b****6 文档编号:6089874 上传时间:2023-01-03 格式:DOCX 页数:15 大小:31.52KB
下载 相关 举报
实验5循环结构参考答案doc.docx_第1页
第1页 / 共15页
实验5循环结构参考答案doc.docx_第2页
第2页 / 共15页
实验5循环结构参考答案doc.docx_第3页
第3页 / 共15页
实验5循环结构参考答案doc.docx_第4页
第4页 / 共15页
实验5循环结构参考答案doc.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

实验5循环结构参考答案doc.docx

《实验5循环结构参考答案doc.docx》由会员分享,可在线阅读,更多相关《实验5循环结构参考答案doc.docx(15页珍藏版)》请在冰豆网上搜索。

实验5循环结构参考答案doc.docx

实验5循环结构参考答案doc

C语言程序设计实验教学(5)

【实验目的】通过程序设计实现,掌握while结构、do-while结构和for结构各种类型的循环结构,完成各种循环程序的设计和实现。

【实验要求】同一个题目尝试使用多种循环控制结构来实现,并分析其设计和实现的差别和难易程度。

【实验课时】6.0

【实验内容】

一、以下程序使用while结构实现。

1、完成课堂实例的实现。

(1)计算s=1+2+…+100。

(累加型)

main()

{inti=1,sum=0;

while(i<=100)

{sum+=i;i++;}

printf("1+2+3+...+100=%d\n",sum);

}

main()

{inti,sum=0;

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

sum+=i;

printf("1+2+3+...+100=%d\n",sum);

}

(2)请输入数n,计算n!

(连乘型)

main()

{inti=1,n;longfac=1;

scanf("%d",&n);

while(i<=n)

{fac*=i;i++;}

printf("%d!

=%ld\n",n,fac);

}

main()

{inti,n;longfac=1;

scanf("%d",&n);

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

fac*=i;

printf("%d!

=%ld\n",n,fac);

}

(3)输出所有的水仙花数。

(范围型)

main()

{intn=100,a,b,c;

while(n<=999)

{a=n/100;

b=n/10%10;

c=n%10;

if(a*a*a+b*b*b+c*c*c==n)

printf("%6d",n);

n++;}

printf("\n");

}

main()

{intn,a,b,c;

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

{a=n/100;

b=n/10%10;

c=n%10;

if(a*a*a+b*b*b+c*c*c==n)

printf("%6d",n);}

printf("\n");

}

(4)判断n是否为素数。

(反向思维型)

main()

{intn,i=2;

scanf("%d",&n);

while(i<=n-1)

{if(n%i==0)break;

i++;}

if(i>=n)

printf("%disaprimenumber\n",n);

else

printf("%disnotaprimenumber\n",n);

}

main()

{intn,i;

scanf("%d",&n);

for(i=2;i<=n-1;i++)

{if(n%i==0)break;}

if(i>=n)

printf("%disaprimenumber\n",n);

else

printf("%disnotaprimenumber\n",n);

}

(5)输入n个数,计算其中偶数的个数。

main()

{intn,i=1,num,count=0;

scanf("%d",&n);

while(i<=n)

{scanf("%d",&num);

if(num%2==0)count++;

i++;}

printf("countis%d\n",count);

}

main()

{intn,i,num,count=0;

scanf("%d",&n);

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

{scanf("%d",&num);

if(num%2==0)count++;}

printf("countis%d\n",count);

}

(6)输出以下图形

(1):

(7)输出以下图形

(2):

(8)

输出以下图形(3):

图形

(1)图形

(2)图形(3)

main()

{inti,j;

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

{for(j=1;j<=4-i;j++)

printf("");

for(j=1;j<=2*i-1;j++)

printf("*");

printf("\n");

}

for(i=3;i>=1;i--)

{for(j=1;j<=4-i;j++)

printf("");

for(j=1;j<=2*i-1;j++)

printf("*");

printf("\n");

}

}

 

main()

{inti,j;

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

{for(j=1;j<=5-i;j++)

printf("");

for(j=1;j<=2*i-1;j++)

printf("%d",j);

printf("\n");

}

for(i=4;i>=1;i--)

{for(j=1;j<=5-i;j++)

printf("");

for(j=1;j<=2*i-1;j++)

printf("%d",j);

printf("\n");

}

}

 

main()

{inti,j;

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

{for(j=1;j<=5-i;j++)

printf("");

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

printf("%d",j);

for(j=i-1;j>=1;j--)

printf("%d",j);

printf("\n");

}

for(i=4;i>=1;i--)

{for(j=1;j<=5-i;j++)

printf("");

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

printf("%d",j);

for(j=i-1;j>=1;j--)

printf("%d",j);

printf("\n");

}

}

 

(9)输入一批字符,计算大写字母的个数,输入‘#’结束。

(个数未知型)

#include"stdio.h"

main()

{charch;intcount=0;

ch=getche();

while(ch!

='#')

{if(ch>='A'&&ch<='Z')

count++;

ch=getche();

}

printf("\ncountis%d\n",count);

}

2、计算s1=1*3*5*…*(2*n-1)。

main()

{inti=1,n;longs=1;

scanf("%d",&n);

while(i<=n)

{s=s*(2*i-1);i++;}

printf("s1=1*3*5*...*%d=%ld\n",2*n-1,s);

}

main()

{inti,n;longs=1;

scanf("%d",&n);

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

s=s*(2*i-1);

printf("s1=1*3*5*...*%d=%ld\n",2*n-1,s);

}

3、计算所有水仙花数的和。

main()

{inti=100,s=0;inta,b,c;

while(i<=999)

{a=i/100;

b=i/10%10;

c=i%10;

if(a*a*a+b*b*b+c*c*c==i)s+=i;

i++;

}

printf("sum=%d\n",s);

}

main()

{inti,s=0;inta,b,c;

for(i=100;i<=999;i++)

{a=i/100;

b=i/10%10;

c=i%10;

if(a*a*a+b*b*b+c*c*c==i)s+=i;

}

printf("sum=%d\n",s);

}

4、求100~200间的全部素数。

main()

{intn=101,k=0,i;

while(n<200)

{for(i=2;i<=n-1;i++)

if(n%i==0)break;

if(i>=n){printf("%6d",n);k+=1;}

if(k%10==0)printf("\n");

n=n+2;}

printf("\n");

}

main()

{intn,k=0,i;

for(n=101;n<200;n=n+2)

{for(i=2;i<=n-1;i++)

if(n%i==0)break;

if(i>=n){printf("%6d",n);k+=1;}

if(k%10==0)printf("\n");}

printf("\n");

}

5、一张纸厚度为0.3毫米,现有一张无限大的纸,并进行若干次对折,请问对折几次后,高度超过珠峰8848米?

main()

{intcount=0;

longh=3;/*long不能换int,因为数值较大*/

while(h<=88480000)

{count++;

h=h*2;};

printf("Theresultis:

%d\n",count);

}

6、输入2个正整数m,n,求其最大公约数和最小公倍数。

main()

{intm,n,t,p,r;

printf("pleaseinputtwonumbers:

\n");

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

if(n

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

p=n*m;

while(m!

=0)

{r=n%m;n=m;m=r;}

printf("gysis:

%d\n",n);

printf("gbsis:

%d\n",p/n);

}

main()

{intm,n,t,p,i;

printf("pleaseinputtwonumbers:

\n");

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

if(n

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

p=n*m;

for(i=m;i>1;i--)

{if(n%i==0&&m%i==0)break;}

printf("gysis:

%d\n",i);

printf("gbsis:

%d\n",p/i);

}

7、求

(即求1!

+2!

+3!

+……+20!

main()

{inti;doublet=1,s=0;

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

{t=t*i;s=s+t;}

printf("1!

+2!

+...+20!

=%lf\n",s);

}

8、请编程序打印出以下数列:

1、1、2、3、5、8、13、…的前40项。

每行输出4个数。

(斐波那契数列)

方法一:

main()

{inti;

longf1=1,f2=1,f;

printf("%12ld%12ld",f1,f2);

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

{f=f1+f2;

printf("%12ld",f);

if(i%4==0)printf("\n");

f1=f2;f2=f;

}

printf("\n");

}

方法二:

main()

{inti;

longf1=1,f2=1;

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

{printf("%12ld%12ld",f1,f2);

f1=f1+f2;

f2=f2+f1;

if(i%2==0)printf("\n");

}

printf("\n");

}

9、求下列分数序列的前20项之和。

,……

main()

{inti;

floatfz=2,fm=1,s=0;

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

{s=s+fz/fm;

fz=fz+fm;

fm=fz-fm;

}

printf("sum=%9.6f\n",s);

}

10、找出1000之内的所有完数,一个数如果恰好等于它的因子之和,这个数就称为“完数”。

例如,6的因子为1、2、3,而6=1+2+3,因此6是“完数”。

输出时按下面的格式输出其因子:

6itsfactorsare1,2,3

main()

{inti,n,s;

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

{s=0;

for(i=1;i

if(n%i==0)s=s+i;

if(s==n)

{printf("%d,itsfactorsare:

",n);

for(i=1;i

if(n%i==0)printf("%d,",i);

printf("\n");

}

}

}

补充作业:

(以下题目任选2题)

1、若一个球从100m高度自由落下,每次落地后反跳回原高度的一半,再落下。

求它在第10次落地时,共经过多少m?

第10次反弹多高?

main()

{inti;

floatsn=100,hn=sn/2;

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

{sn=sn+2*hn;

hn=hn/2;

}

printf("sn=%fm.\n",sn);

printf("hn=%fm.\n",hn);

}

2、猴子吃桃问题。

猴子第一天摘下若干桃子,当即吃了一半,还不过瘾,又多吃了一个。

第二天早上又将剩下的桃子吃掉一半,又多吃了一个。

以后每天早上都吃了前一天剩下的一半零一个。

到第10天早上再想吃时,就只剩一个桃子了。

求第一天猴子共摘了多少桃子。

main()

{inti,x1,x2=1;

for(i=9;i>=1;i--)

{x1=(x2+1)*2;

x2=x1;

}

printf("total=%d\n",x1);

}

3、输入m个字符,分别统计出其中英文字母、空格、数字和其他字符的个数。

#include"stdio.h"

main()

{charch;

intletters=0,space=0,digit=0,other=0;

while((ch=getchar())!

='\n')

{if(ch>='a'&&ch<='z'||ch>='A'&&ch<='Z')

letters++;

elseif(ch=='')

space++;

elseif(ch>='0'&&ch<='9')

digit++;

else

other++;

}

printf("lettersis:

%d\n",letters);

printf("spaceis:

%d\n",space);

printf("digitis:

%d\n",digit);

printf("otheris:

%d\n",other);

}

4、输入一个自然数,计算各数位上数字之和。

如:

5246对应和为5+2+4+6=17。

main()

{intn,s=0;

scanf("%d",&n);

while(n>0)

{s=s+n%10;

n=n/10;}

printf("sumis:

%d\n",s);

}

5、对输入的一正整数a(a在1到9之间),求Sn=a+aa+aaa+..+aaa..a,(10个a),例a=3,则S=3+33+333+..+333..3

voidmain()

{inta,i=1;doublesn=0,tn;

scanf("%d",&a);

printf("\na=%d\n",a);

tn=a;

while(i<=10)

{sn=sn+tn;tn=tn*10+a;++i;}

printf("sn=%lf\n",sn);}

voidmain()

{inta,i;doublesn=0,tn;

scanf("%d",&a);

printf("\na=%d\n",a);

tn=a;

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

{sn=sn+tn;tn=tn*10+a;}

printf("sn=%lf\n",sn);}

6、求S=1+12+123+1234+12345

main()

{inti,t=1,s=1;

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

{t=t*10+i;s=s+t;}

printf("s=%d\n",s);

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1