实验5循环结构参考答案doc.docx
- 文档编号:6089874
- 上传时间:2023-01-03
- 格式:DOCX
- 页数:15
- 大小:31.52KB
实验5循环结构参考答案doc.docx
《实验5循环结构参考答案doc.docx》由会员分享,可在线阅读,更多相关《实验5循环结构参考答案doc.docx(15页珍藏版)》请在冰豆网上搜索。
实验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); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 循环 结构 参考答案 doc