作业4

《C语言程序设计》实验报告

学  号

160809223

姓  名

姜文奇

专业、班

计科16-2班

学    期

2016-2017 第1学期

指导教师

黄俊莲 吉吉老师

实验地点

C05

机 器 号

 

时    间

2016年 10136 周 周四  12 节

截至日期

2016.10.13 1150

实验任务清单

实验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\n",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\n",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\n",sum);

       for(k=1;k<=50;k++)

              sum+=k*k;

              printf("sum=%f\n",sum);

       for(k=1;k<=10;k++)

              sum+=1.0/k;

              printf("sum=%f\n",sum);

       return 0;

}

 

运行结果抓图

 

 

 

 

实验3-4输入一行字符,分别统计出其中的英文字母、空格、数字和其他字符的个数。

实验提示:

 

程序源码

#include<stdio.h>

int main(){

       char c;

       int zm=0,sz=0,kg=0,qt=0;

       while((c=getchar())!='\n'){

              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\n",zm);

       printf("空格个数:%d\n",kg);

       printf("数字个数:%d\n",sz);

       printf("其他个数:%d\n",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\n",gys);

              }

              gbs=m*n/gys;

              printf("最小公倍数为:%d\n",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\n",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",n);

              return 0;

      }

}

 

运行结果抓图

 

 

 

实验心得

虽然这次试验大部分都是老师带着我们做的,但是我也在其中收获许多的知识,比如求最大公约数和最小公倍数,复习了for while和do while循环的用法,统计一些数字,字符等,还有水仙花数,C语言其实并不太难,只不过我没有好好的去记。

 

 

posted @ 2016-10-13 11:25  Cynicisty  阅读(120)  评论(1编辑  收藏  举报