《C语言程序设计》实验报告 学 号 160809223 姓 名 姜文奇 专业、班 计科16-2班 学 期 2016-2017 第1学期 指导教师 黄俊莲 吉吉老师 实验地点 C05 机 器 号 时 间 2016年 10 月 13 日 6 周 周四 1、2 节 截至日期 2016.10.13 11:50 实验任务清单 实验3-1 分别使用while循环、do while循环、for循环求(即求1+2+3+ ……+100) 实验3-2分别使用while循环、do while循环、for循环求n!,其中n由键盘输入。 实验3-3 求。 实验3-4输入一行字符,分别统计出其中的英文字母、空格、数字和其他字符的个数。 实验3-5输入两个正整数m和n,求其最大公约数和最小公倍数。 实验3-6输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字的立方和等于该数本身。例如:153是一个水仙花数,因为153=13+53+33。 教师评语 成绩 实验3 循环结构程序设计 实验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=i+1) { sum=sum+i; } i=1;sum=0;*/ /*while(i<=100) { i=i+1;sum=sum+i; }*/ i=1;sum=0; do{ sum=sum+i; i++; }while(i<=100); printf("sum=%d ",sum); return 0; } 运行结果抓图 实验3-2分别使用while循环、do while循环、for循环求n!,其中n由键盘输入。 提示: 依照实验3-1求n!,其中n!=1*2*3……*n 源码 #include<stdio.h> int main(){ //whlie循环求n!=1*2*...*n int i,n,jiec=1; printf("请输入一个整数:"); scanf("%d",&n) ; i=1; while(i<=n){ jiec=jiec*i; i++; } printf("%d=%d ",jiec); return 0; } 运行结果抓图: 实验3-3 求。 程序源码 #include<stdio.h> int main(){ //使用for循环完成1+2+3+...+100 int k;float sum=0; for(k=1;k<=100;k++) sum+=k; printf("sum=%f ",sum); for(k=1;k<=50;k++) sum+=k*k; printf("sum=%f ",sum); for(k=1;k<=10;k++) sum+=1.0/k; printf("sum=%f ",sum); 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>='0'&&c<='100') sz++; else qt++; } printf("字母个数:%d ",zm); printf("空格个数:%d ",kg); printf("数字个数:%d ",sz); printf("其他个数:%d ",qt); return 0; } 运行结果抓图 实验3-5输入两个正整数m和n,求其最大公约数和最小公倍数。 程序源码 #include<stdio.h> #include<math.h> int main(){ //m,n的最大公约数 能够同时整除m和n的最大数 int m,n,t,i,gys,gbs; printf("请输入两个整数:") ; scanf("%d%d",&m,&n); //m的位置放大的数 if(n>m){ t=m; m=n; n=t; } for(i=n;i>=1;i--) if(m%i==0&&n%i==0) break; if(i!=0){ gys ; printf("最大公约数为;%d ",gys); } gbs=m*n/gys; printf("最小公倍数为:%d ",gbs); return 0; } 运行结果抓图 实验3-6 输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字的立方和等于该数本身。例如:153是一个水仙花数,因为153=13+53+33。 程序源码 #include<stdio.h> int main(){ //水仙花数 int n,k1,k2,k3;//k1个位,k2十位,k3百位 for(k1=0;k1<9;k1++) for(k2=0;k2<9;k2++) for(k3=0;k3<9;k3++){ if(k3*100+k2*10+k1==k1*k1*k1+k2*k2*k2+k3*k3*k3) printf("%d ",k3*100+k2*10+k1);} return 0; } #include<stdio.h> int main(){ //水仙花数 int n,k1,k2,k3;//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); return 0; } } 运行结果抓图 实验心得 虽然这次试验大部分都是老师带着我们做的,但是我也在其中收获许多的知识,比如求最大公约数和最小公倍数,复习了for while和do while循环的用法,统计一些数字,字符等,还有水仙花数,C语言其实并不太难,只不过我没有好好的去记。