实验七 分支结构程序设计(4)

实验七 分支结构程序设计(4)

 

一、实验目的和要求:

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

2.掌握关系运算符、逻辑运算符和条件运算符;

3.掌握if嵌套程序设计;

4.掌握switch分支程序设计方法。

 

二、实验内容:

1输入年月,求该月的天数。

2. 从键盘上输入两个整数ab,求a/b的值。(精确到小数点后第9位)

3. 如果一个三位数的各位数字之和等于该数本身,则称为水仙花数。判断从键盘输入的一个数是否为水仙花数。

4. [1,550]之间同时满足除32和除53条件的数之和。

5. 从键盘输入一个小于20000的整数,判断该数是否为回文数。

回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。

6. 一个箱子里有n个苹果和一条虫子,虫子每x小时吃掉一个苹果。假设虫子在吃完一个苹果之前不会吃另一个,那么经过y小时还有多少个完整的苹果?要求:nxy从键盘输入,均为整数,且y<=n*x

 

三、实验步骤与结果

1输入年月,求该月的天数。

1)设计思路

有针对的分析二月,闰年平年的判断,然后用switch,就能分类的判断

2)程序源码(加注释)

#include<stdio.h>

int main()

{

    int year, month;          //定义变量

    printf("输入年和月(用,分隔):\n");

    scanf_s("%d %d", &year, &month);          //键盘输入变量

    switch (month)          //switch来接收月份的类型并判断

    {

    case 2:if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0))

        printf("这个月是29天!\n");          //针对二月的特殊分析

    else

        printf("这个月是28天!\n");

    break;          //满足就跳出

    case 4:

    case 6:

    case 9:

    case 11:printf("这个月是30天!\n"); break;          //满足30天的情况输出

    default:printf("这个月是31天!\n"); break;          //默认满足31天的输入

    }

    return 0;

}

(3)运行结果与分析

 

2. 从键盘上输入两个整数ab,求a/b的值。(精确到小数点后第9位)

 

1)设计思路

根据输入的数据进行小数点位数限制输出

2)程序源码(加注释)

 

#include<stdio.h>

int main()

{

int a,b;

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

printf("%.*lf",10,1.0*a/b);            //主要是精确到小数点后九位的输出格式

 

}

3)运行结果与分析

 

 

 

 

3. 如果一个三位数的各位数字之和等于该数本身,则称为水仙花数。判断从键盘输入的一个数是否为水仙花数。 

1)设计思路

对数的位数的拆分,然后进行运行判断

2)程序源码(加注释)

#include <stdio.h>

 

int main()

{

     int num;

 int a;

 int b;

 int c;          //输入三个变量

     

     printf("输入一个三位整数:\n");

 scanf("%d", &num);

 

 a=num%10;    //num的个位数

 b=num/10%10;   // num的十位数

 c=num/100;    //num百位数            //每一位数的取出

 

 if(num== a*a*a+ b*b*b+ c*c*c)   //检验是否为水仙花数

 {

     printf("%d是水仙花数!\n", num);

 }

 else

 {

     printf("%d不是水仙花数!\n", num);

 }

 

 return 0;

}

3)运行结果与分析

 

 

 

4. [1,550]之间同时满足除32和除53条件的数之和。

1)设计思路

 

在限制的范围内的数的运算,运算符的灵活运用

 

2)程序源码(加注释)

# include <conio.h>

# include <stdio.h>

# include <math.h>

main()

{

int sum;

int i;          //定义两个两个变量

sum=0;

for(i=1;i<=550;i++)          //条件判断1-500之间

{

if(i%3==2&&i%5 ==3)          //同时满足%32%53

sum+=i;          //求满足的数的和

}

printf("%ld\n",sum);          //输出定义类型为长整型

}

 

3)运行结果与分析

 

 

 

5. 从键盘输入一个小于20000的整数,判断该数是否为回文数。

1)设计思路

主要是对回文数的理解,然后就是进行一个数据的倒置输出

2)程序源码(加注释)

#include <stdio.h>

int main()

{

    int num, temp;

    int sum=0;          //定义数据类型

    printf("请输入一个数(小于等于20000):");          //提示输入的数

    scanf("%d", &num);

    if(num>20000)          //判断是否大于20000

printf("超出范围!!!\n");

 

else{                    //满足条件之后进行回文数判断

    temp=num;

     while(num)

     {

          sum = sum*10 + num%10;

         num /= 10;

    }

   if(temp == sum)        //回文数,就是从前往后读和从后往前读是同一个数的数

         printf("是回文数\n");

     else

         printf("不是回文数\n");

}

    return 0;

}//就是把它倒过来,比如12325; 它反过来是52321; 你比较这两个是否相等就行; 然后你就要想怎么通过12325得到52321; 就用到这个sum = sum*10 + num%10; num /= 10; 这个是核心,得到52321

3)运行结果与分析

 

 

6. 一个箱子里有n个苹果和一条虫子,虫子每x小时吃掉一个苹果。假设虫子在吃完一个苹果之前不会吃另一个,那么经过y小时还有多少个完整的苹果?要求:nxy从键盘输入,均为整数,且y<=n*x

1)设计思路

对输入数据进行判断,苹果的完整性的考虑,然后就是考虑全面

2)程序源码(加注释)

#include <stdio.h>

int main()

{

    int n,x,y,a;

    printf("分别输入nxy的值(均为整数,且y<=n*x");

    scanf("%d %d %d",&n,&x,&y);

    if(y>n*x)

printf("输入超出范围!!!\n");

 

else{

    if(n>y/x&&y%x==0)        //对虫子吃苹果的速度和经过多少小时进行运算和苹果数判定,主要要考虑到是否取整

    {

        a=n-y/x;

        printf("%d个苹果",a);

    }

    else if(n>y/x&&y%x!=0)

    {

        a=n-y/x-1;          //不是一个整的苹果就要减去

        printf("%d个完整苹果",a);

    }

    else

    {

        printf("没有剩完整的苹果");

    }

}

    return 0;

}

3)运行结果与分析

 

 

 

 

 

四、实验总结与心得

 

总结:

1,不会的一定要尽量弄懂

2,不会的记清楚一点

心得:

1,很多地方都记不住

2,需要自己花时间多敲

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