实验八 循环结构程序设计(1)

实验八 循环结构程序设计(1)

 

一、实验目的和要求:

1. 掌握循环结构程序的设计思想,以及程序执行过程;

2. 掌握whiledowhilefor结构程序设计方法。

3. 掌握循环嵌套程序设计方法。

 

二、实验内容:

1.输入两个正整数,求其最大公约数和最小公倍数。

2. 输入一行字符分别统计出英文字母数字空格和其它字符的个数

3. 求三位数中的“水仙花数”个数。

4. 编程找出1000以内的所有完数。完数是指一个数恰好等于它的因子之和,例如,6=1+2+36是完数。

5.

6. 求数列的前20项之和:

 

三、实验步骤与结果

1输入两个正整数,求其最大公约数和最小公倍数。

1)设计思路

理解好最小公因数,最大公倍数的含义
运用数学里面的辗转相除法

2)程序源码(加注释)

#include<stdio.h>

int main()

{

    int a,b,t,r;           //定义数据类型

    printf("请输入两个数字:\n");            //提醒输入

    scanf("%d %d",&a,&b);           //键盘输入

     if(a<b)           //判断输入的数的大小

    {

        t=b;               //进行除数和被除数的换位

        b=a;

        a=t;

    }

     r=a%b;           //大的数  模  小的数

     int n=a*b;           //计算两数之积,整型

     while(r!=0)           //当模的结果一直不等于0就一直模下去

    {

        a=b;

        b=r;           //一直把最小的数和商进行除法运算

        r=a%b;

    }

    printf("这两个数的最大公约数为%d,最小公倍数为%d\n",b,n/b);           //两数之积除以最大公约数就是最小公倍数

    return 0;

}

3)运行结果与分析

 

2输入一行字符分别统计出英文字母数字空格和其它字符的个数

1)设计思路

针对输入的字符串进行if判断,并统计个数,只判断自己知道的数据,剩下的都定义为其他

2)程序源码(加注释)

#include<stdio.h>

int main()

{

    char c;           //定义数据类型为字符型,接收的字符串只能是定义为char

    int letters=0,spaces=0,digits=0,others=0;           //定义数据类型为整型

    printf("请输入一串任意的字符:\n");            //提醒输入

    while((c=getchar())!='\n')           //循环获取键盘输入的字符串,不等于换行符就继续获取

    {

        if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))           //判断获取的字符串里大小写字母的个数

        letters++;

        else if(c>='0'&&c<='9')           //判断获取的字符串里的数字的个数

        digits++;

        else if(c==' ')           //判断获取的字符串里的空格的个数

        spaces++;

        else

        others++;            //剩下的就都是其他字符的个数

    }

    printf("字母有%d个,数字有%d个,空格有%d个,其他有%d",letters,digits,spaces,others);

    return 0;

}

3)运行结果与分析

 

 

 

3求三位数中的“水仙花数”个数。

1)设计思路

水仙花数是指一个三位数其各位数字的立方和等于该数本身,例如153水仙花数,因为:153 = 13 + 53 + 33

2)程序源码(加注释)

#include<stdio.h>           //标准输入输出头文件

#include<stdlib.h>           // stdlib.h 里的函数包含到程序里面

int main() {

int a = 0;           //定义数据,并赋值0

int b = 0;

int c = 0;

int sum ;           //定义一个变量来承载和

for (sum = 100; sum < 1000; sum++) {           //三位数的水仙花个数限制,并统计个数

if (sum % 100 > 1)           //当满足取模之后的余数大于1 之后

{

 a = sum / 100;           //求百位

 b = sum %100/10;           //求十位

 c = sum % 10;           //求个位

}

if (sum == a*a*a + b*b*b + c*c*c) {           //三位数每位数的立方和等于本身就是水仙花数

printf("%d\n", sum);

system("pause");           //程序暂停

}

}

 

return 0;

}

 

3)运行结果与分析

 

 

4编程找出1000以内的所有完数。完数是指一个数恰好等于它的因子之和,例如,6=1+2+36是完数。

1)设计思路

运用数组去承载需要比对的数据,让数据能快速的取出比对,求和之后与每一个数进行比对,再数组取出打印每个和的组成

2)程序源码(加注释)

#include<stdio.h>           //标准输入输出头文件

#define N 1000           //定义一个常数为1000

int main()

{

    int i,j,k,n,sum;           //定义数据类型,都为整型

    int a[256];           //定义一个数组

    for(i=2;i<=N;i++)           //循环语句去求出1000以内的符合条件的数

    {

        sum=a[0]=1;

        k=0;

        for(j=2;j<=(i/2);j++)           //循环统计每一个数的和

        {

            if(i%j==0)

            {

                sum+=j;

                a[++k]=j;

            }   

        }

        if(i==sum)           //统计的和与每一个数判断

        {

            printf("%d=%d",i,a[0]);           //如果相等直接输出

            for(n=1;n<=k;n++)          //并把统计好的每一个数的和的组成数打印

                printf("+%d",a[n]);

            printf("\n");

        }

    }

    return 0;

}

3)运行结果与分析

 

 

 

5

1)设计思路

运用循环对数据进行运算

2)程序源码(加注释)

#include <stdio.h>           //标准输入输出头文件

int main()

{

   float s=0,t=1;           //定义数据类型,怕数据长度过大

   int n;

   for (n=1;n<=20;n++)           //循环判断并跳出

   {   

   t=t*n;           //n!

       s=s+t;       //将各项累加

   }

   printf("%f\n",s);

  return 0;

}

3)运行结果与分析

 

 

 

6求数列的前20项之和:

1)设计思路

 

2)程序源码(加注释)

 

#include <stdio.h>           //标准输入输出头文件

void main()

{

int n,t,number=20;           //定义数据类型

float a=2,b=1,s=0;           //数据类型为浮点数是为了满足分子的要求

for(n=1;n<=number;n++)           //循环判断,并跳出

{

s=s+a/b;           //计算

t=a;

a=a+b;

b=t;                  //t来更换分子分母位置

}

printf("sum is %9.6f\n",s);           //打印的时候需要注意数据的长度的选择

}

3)运行结果与分析

 

四、实验总结与心得

总结:

审题是关键,对题意理解了,然后就是设计程序。

心得:

自己一定要记住一些模型,才能更快的编辑程序。

posted @ 2020-12-16 08:38  刘磊i  阅读(314)  评论(0编辑  收藏  举报