《C语言程序设计》实验报告 学 号 160809229 姓 名 马寅武 专业、班 计科16-2班 学 期 2016-2017 第1学期 指导教师 黄俊莲 吉吉老师 实验地点 C05 机 器 号 时 间 2016年 10 月 13 日 6 周 周四 1、2 节 截至日期 2016.10.13 11:50 实验任务清单 1.实验3-1 分别使用while循环、do while循环、for循环求(即求1+2+3+ ……+100) 2.实验3-2分别使用while循环、do while循环、for循环求n!,其中n由键盘输入。 3.实验3-3 求。 4.实验3-4输入一行字符,分别统计出其中的英文字母、空格、数字和其他字符的个数。 5.实验3-5输入两个正整数m和n,求其最大公约数和最小公倍数。 6.实验3-6输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字的立方和等于该数本身。例如:153是一个水仙花数,因为153=13+53+33。 教师评语 成绩 实验3 循环结构程序设计 实验3-1 分别使用while循环、do while循环、for循环求(即求1+2+3+ ……+100)。 参考: 源码: #include <stdio.h> int main(){ //使用for循环完成1+2+......+100 int i,sum = 0; for(i=1;i<=100;i++) sum +=i; //sum = sum + i; printf("sum=%d ",sum); //使用do while循环完成,,, i = 1; sum = 0; do{ sum += i; i++; } while (i<=100); printf("sum = %d ",sum); //使用while完成,,,, i = 1; while(i<=100){ sum += i; i++; } printf("sum = %d ",sum); return 0 ; } 运行结果抓图
实验3-2分别使用while循环、do while循环、for循环求n!,其中n由键盘输入。 提示: 1.依照实验3-1求n!,其中n!=1*2*3……*n 源码 #include <stdio.h> int main(){ //while循环求n!=n*(n-1)*(n-2)*.....*1 int n,i,jiec=1; //n:从键盘输入 scanf("%d",&n); i = n; while(i>=1){ jiec = jiec * i; i--; } printf("%d!=%d ",n,jiec); return 0; } 运行结果抓图:
实验3-3 求。 程序源码 #include <stdio.h> int main(){ int k,sum = 0; 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); return 0; } 运行结果抓图
实验3-4输入一行字符,分别统计出其中的英文字母、空格、数字和其他字符的个数。 实验提示: 程序源码 #include <stdio.h> int main(){ //41 asd 324 2 ssd?! char c; int zm=0,sz=0,kg=0,qt=0; while((c=getchar())!=' '){ if(c>='a'&&c<='z'||c>='A') zm++; else if(c==' ') kg++; else if(c>='0'&&c<='9') sz++; else qt++; } printf("字母个数:%d ",zm); printf("空格个数:%d ",kg); printf("数字个数:%d ",sz); printf("其他个数:%d ",qt); return 0; } 运行结果抓图
实验3-5输入两个正整数m和n,求其最大公约数和最小公倍数。 程序源码 #include<stdio.h> int main(){ int m,n,min,i,t; scanf("%d%d",&m,&n); min=(m<n)?m:n; for(i=min;i>=1;i--) if(m%i==0&&n%i==0){t=i;break;}; printf("最大公约数是:%d",t); printf("最小公倍数是:%d ",m*n/t); return 0; } 运行结果抓图
实验3-6 输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字的立方和等于该数本身。例如:153是一个水仙花数,因为153=13+53+33。 程序源码 #include<stdio.h> #include<math.h> int main(){ int a1,a2,a3,a4,a5,a6,a,b,i; for(i=100;i<=10000;i++) { a=i; a1=a%10; a2=(a/10)%10; a3=(a/100)%10; a4=(a/1000)%10; a5=(a/10000)%10; a6=(a/100000)%10; b=(a1*a1*a1)+(a2*a2*a2)+(a3*a3*a3)+(a4*a4*a4)+(a5*a5*a5)+(a6*a6*a6); if(b==i) printf("%d ",i); } } 运行结果抓图
实验心得 这次的作业是课上作业,是在老师的指导下完成的,比以往的作业要简单一些,第一题的最后一个方法虽然是按照给的源码输入的,但是输出的数值不是正确数值,不知道是因为什么,然后就是第二题要求按照第一题那个样子弄,有点蒙,希望可以学到更多的知识。