实验(5)-循环结构-参考答案
- 格式:doc
- 大小:86.50 KB
- 文档页数:15
1 C语言程序设计 实验教学(5) 【实验目的】通过程序设计实现,掌握while结构、do-while结构和for结构各种类型的循环结构,完成各种循环程序的设计和实现。 【实验要求】同一个题目尝试使用多种循环控制结构来实现,并分析其设计和实现的差别和难易程度。 【实验课时】6.0 【实验内容】 一、以下程序使用while结构实现。 1、完成课堂实例的实现。 (1) 计算s=1+2+…+100。(累加型)
main() {int i=1,sum=0; while(i<=100) {sum+=i; i++;} printf("1+2+3+...+100=%d\n",sum); }
main() {int i,sum=0; for(i=1;i<=100;i++) sum+=i; printf("1+2+3+...+100=%d\n",sum); }
(2) 请输入数n,计算n!。(连乘型) main() {int i=1,n; long fac=1; scanf("%d",&n); while(i<=n) {fac*=i; i++;} 2
printf("%d!=%ld\n",n,fac); }
main() {int i,n; long fac=1; scanf("%d",&n); for(i=1;i<=n;i++) fac*=i; printf("%d!=%ld\n",n,fac); }
(3) 输出所有的水仙花数。(范围型) main() {int n=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() {int n,a,b,c; for(n=100;n<=999;n++) {a=n/100; b=n/10%10; c=n%10; 3
if(a*a*a+b*b*b+c*c*c==n) printf("%6d",n);} printf("\n"); }
(4) 判断n是否为素数。(反向思维型) main() {int n,i=2; scanf("%d",&n); while(i<=n-1) {if(n%i==0) break; i++;} if(i>=n) printf("%d is a prime number\n",n); else printf("%d is not a prime number\n",n); }
main() {int n,i; scanf("%d",&n); for(i=2;i<=n-1;i++) {if(n%i==0) break;} if(i>=n) printf("%d is a prime number\n",n); else printf("%d is not a prime number\n",n); }
(5) 输入n个数,计算其中偶数的个数。 4
main() {int n,i=1,num,count=0; scanf("%d",&n); while(i<=n) {scanf("%d",&num); if(num%2==0) count++; i++;} printf("count is %d\n",count); }
main() {int n,i,num,count=0; scanf("%d",&n); for(i=1;i<=n;i++) {scanf("%d",&num); if(num%2==0) count++;} printf("count is %d\n",count); }
(6) 输出以下图形(1): (7) 输出以下图形(2): (8) 输出以下图形(3):
图形(1) 图形(2) 图形(3) 5
main() {int i,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() {int i,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(" "); 6
for(j=1;j<=2*i-1;j++) printf("%d",j); printf("\n"); } }
main() {int i,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
#include "stdio.h" main() {char ch; int count=0; ch=getchar(); while(ch!='#') {if(ch>='A' && ch<='Z') count++; ch=getchar(); } printf("count is %d\n",count); }
2、计算s1=1*3*5*…*(2*n-1)。 main() {int i=1,n; long s=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() {int i,n; long s=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、计算所有水仙花数的和。 8
main() {int i=100,s=0; int a,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() {int i,s=0; int a,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() {int n=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;} 9
if(k%10==0) printf("\n"); n=n+2;} printf("\n"); }
main() {int n,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() {int count=0; long h=3; /* long 不能换int ,因为数值较大*/ while(h<=88480000) {count++; h=h*2;}; printf("The result is: %d \n",count); }
6、输入2个正整数m,n,求其最大公约数和最小公倍数。 main() {int m,n,t,p,r; printf("please input two numbers:\n ");