实验5循环结构参考答案.docx
《实验5循环结构参考答案.docx》由会员分享,可在线阅读,更多相关《实验5循环结构参考答案.docx(14页珍藏版)》请在冰豆网上搜索。
![实验5循环结构参考答案.docx](https://file1.bdocx.com/fileroot1/2022-10/29/817d687b-12ce-41ce-95c7-fc870a64eacd/817d687b-12ce-41ce-95c7-fc870a64eacd1.gif)
实验5循环结构参考答案
C语言程序设计实验教学(5)
【实验目的】通过程序设计实现,掌握while结构、do-while结构和for结构各种类型的循环结构,完成各种循环程序的设计和实现。
【实验要求】同一个题目尝试使用多种循环控制结构来实现,并分析其设计和实现的差别和难易程度。
【实验课时】6.0
【实验内容】
一、以下程序使用while结构实现。
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);
}
请输入数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);
}
输出所有的水仙花数。
(范围型)
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");
}
判断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);
}
输入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);
}
输出以下图形
(1):
输出以下图形
(2):
输出以下图形(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");
}
}
输入一批字符,计算大写字母的个数,输入‘#’结束。
(个数未知型)
#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");
}