实验(5)-循环结构-参考答案

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1C语言程序设计实验教学(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++;}2printf(%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;3if(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);elseprintf(%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);elseprintf(%disnotaprimenumber\n,n);}(5)输入n个数,计算其中偶数的个数。4main(){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)5main(){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();6for(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)输入一批字符,计算大写字母的个数,输入‘#’结束。(个数未知型)7#includestdio.hmain(){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、计算所有水仙花数的和。8main(){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(n200){for(i=2;i=n-1;i++)if(n%i==0)break;if(i=n){printf(%6d,n);k+=1;}9if(k%10==0)printf(\n);n=n+2;}printf(\n);}main(){intn,k=0,i;for(n=101;n200;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);10scanf(%d,%d,&n,&m);if(nm){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(nm){t=n;n=m;m=t;}p=n*m;for(i=m;i1;i--){if(n%i==0&&m%i==0)break;}printf(gysis:%d\n,i);printf(gbsis:%d\n,p/i);}7、求201!nn(即求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);11}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);}129、求下列分数序列的前20项之和。12,23,35,58,813,1321,……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,3main(){inti,n,s;for(n=2;n1000;n++){s=0;for(i=1;in;i++)if(n%i==0)s=s+i;if(s==n){printf(%d,itsfactorsare:,n);for(i=1;in;i++)if(n%i==0)printf(%d,,i);printf(\n);}}}补充作业:(以下题目任选2题)131、若一个球从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个字符,分别统计出其中英文字母、空格、数字和其他字符的个数。#includestdio.h14main(){charch;intletters=0,space=0,digit=0,other=0;while((ch=getchar())!='\n'){if(ch='a'&&ch='z'||ch='A'&&ch='Z')letters++;el

1 / 15
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功