实验3-1 分别使用while循环、do while循环、for循环求 (即求1+2+3+ ……+100)。 参考: 源码 方法一#include<stdio.h> int main(){ int i,sum=0; for(i=1;i<=100;i++) sum+=1; printf("sum=%d ",sum); return 0; } 运行结果抓图
方法二 #include<stdio.h> int main(){ int i,sum=0; i=1; while(i<=100){ sum+=i; i++; } printf("%d ",sum); return 0; } 方法三 #include<stdio.h> int main(){ int i,sum=0; i=1; do{ sum+=i; i++; }while(i<=100); printf("%d ",sum); return 0; } 实验3-2分别使用while循环、do while循环、for循环求n!,其中n由键盘输入。 提示: 1. 依照实验3-1求n!,其中n!=1*2*3……*n 源码 While方法: #include <stdio.h> int main(){ int i,sum=1,n; i=1; printf("请输入n的值:"); scanf("%d",&n); while(i<=n) { sum=sum*i; i++; } printf("sum=%d ",sum); return 0; } do while: include <stdio.h> int main(){ int i,sum=1,n; i=1; printf("请输入n的值:"); scanf("%d",&n); do{} sum=sum*i; i++; }while(i<=n); printf("sum=%d ",sum); return 0; } For循环 #include <stdio.h> int main(){ int i,sum=1,n; printf("请输入n的值:"); scanf("%d",&n); for(i=1;i<=n;i++) sum=sum*i; printf("sum=%d ",sum); return 0; } 运行结果抓图:
实验3-3 求 。 程序源码 #include<stdio.h> int main(){ int k,sum=0,Z; for(k=1;k<=100;k++) sum +=k; printf("sum=%d ",sum); for(k=1;k<=50;k++) sum= sum+k*k; printf("sum=%d ",sum); for(k=1;k<=10;k++) sum= sum+1/k; printf("sum=%d ",sum); Z=(sum +=k)+(sum= sum+k*k)+(sum= sum+1/k); printf("Z=%d ",Z); return 0; } 运行结果抓图
实验3-4输入一行字符,分别统计出其中的英文字母、空格、数字和其他字符的个数。 实验提示: 程序源码 #include<stdio.h> int main(){ char c; int zm=0,sz=0,kg=0,qt=0; while((c=getchar())!=' '){ if((c>='a'&&c<='z')||(c>='A'&&c<='Z')) zm++; else if(c==' ') kg++; else if(c<='9' && c>='0') sz++; else qt++; } printf("字母数:%d ",zm); printf("数字个数:%d ",sz); printf("空格个数:%d ",kg); printf("其他个数:%d ",qt); return 0; } 运行结果抓图
实验3-5输入两个正整数m和n,求其最大公约数和最小公倍数。 程序源码 #include<stdio.h> int main(){ int a,b,m,n; printf("请输入正整数m和n: "); scanf("%d%d",&a,&b); m=a; n=b; while(a!=b) if(a>b) a=a-b; else b=b-a; printf("最大公约数为:%d ",a); printf("最小公倍数为:%d ",m*n/a); } 运行结果抓图
实验3-6 输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字的立方和等于该数本身。例如:153是一个水仙花数,因为153=13+53+33。 程序源码 #include<stdio.h> int main(){ int n,k1,k2,k3; for(n=100;n<=999;n++){ k1=n%10; k2=n/10%10; k3=n/100; if(n==k1*k1*k1+k2*k2*k2+k3*k3*k3) printf("%d ",n);} } 运行结果抓图
实验心得:
还是有很多困难的地方,最大公倍数和最小公倍数用的时间最长,或许因为忘了所以耽误了很多的时间,sum*i这个语句一直没编辑正确,然后还要继续努力编辑,多写代码,目前写代码有一些思路,但是不是很明确以及准确还需要多多练习