【暑假自学C语言】 --8 练习题详解(分段函数)

目录

​​​

一、利润计算

       解题思路:

方法一代码如下:

      代码理解:

方法二代码如下:

      代码理解:

两种解法比较:

     优点:

     缺点:

二、成绩评定 

          解题思路:

方法一代码如下:

      代码理解:

方法二代码如下:

      代码理解:

一、利润计算

解题思路:

  1. 用判断语句 if () else if () else
  2. 用switch函数 switch(){case 1: //命令 break; default: //命令}

方法一代码如下:

#include <stdio.h>
int main()
{
        double a,p;
        scanf("%lf",&a);
        if (a>=0 && a<=100000)
            p=a*0.1;
        else if(a>100000 && a<=200000)
            p=100000*0.1+(a-100000)*0.075;    
        else if(a>200000 && a<=400000)
            p=100000*0.175+(a-200000)*0.05;
        else if(a>400000 && a<=600000)
            p=100000*0.175+200000*0.05+(a-400000)*0.03;
        else if(a>600000 && a<=1000000)
            p=100000*0.175+200000*0.05+200000*0.03+(a-600000)*0.015;
        else
            p=100000*0.175+200000*0.05+200000*0.03+400000*0.015+(a-1000000)*0.01;
        printf("%.0lf\n",p);
        return 0;
}

代码理解:

    首先可以根据题意判断出像分段函数一样来进行分类,这时就可以运用“if 、else if、else”结构,这样就可以将情况分开计算,剩下就是简单的输入输出函数,将所需对应的值进行打印出来。

方法二代码如下:

#include<stdio.h>
int main()
{
    int a,p;
    scanf("%d",&a);
    switch(a/100000)
  {
        case 0:
            p=a*0.1;
            break;
        case 1:
            p=100000*0.1+(a-100000)*0.075;
            break;
        case 2:
        case 3:
            p=100000*0.1+100000*0.075+(a-200000)*0.05;
            break;
        case 4:
        case 5:
            p=100000*0.1+100000*0.075+200000*0.05+(a-400000)*0.03;
            break;
        case 6:
        case 7:
        case 8:
        case 9:
            p=100000*0.1+100000*0.075+200000*0.05+200000*0.03+(a-600000)*0.015;
        default:
            p=100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015+(a-1000000)*0.01;
    }
    printf("%d",p);
    return 0;
}

代码理解:

运用了switch分支语句,这样我们应该先对输入值进行判断一下属于“case 几”然后直接输入很短的数字即可,可以节省时间以及便于理解。我们可以对于非常大的基数来进行预处理一下,就比如我都是先除十万然后再进行属于哪种情况,最后也是一样的输入输出函数,打印所需值。

两种解法比较:

第一种方法

     优点:更加通俗易懂,可以直接进行分类,再进行表达式的运行

     缺点:数字较大,容易造成用户输入错误,编写代码时也更加麻烦。

第二种方法

     优点:

                      更加快捷简便,对于输入数值方面都更加的方便

     缺点:

                      运用不好容易出错,有可能会导致整个程序都错误,应该熟练运用break等

二、成绩评定 

解题思路:

仍是类似分段函数样式,只不过是符合某个条件就直接进行下面字母的打印,所以只需要写出“if 、else if、else”结构和printf打印函数即可

方法一代码如下:

#include<stdio.h>
 int main() 
{
    int a; 
    scanf_s("%d", &a); 
    if (a >= 90)  
        if (a <= 100)  
            printf("A\n");
    if (a >= 80)
        if (a <= 89)
            printf("B\n");
    if (a >= 70)
        if (a <= 79) 
            printf("C\n"); 
    if (a >= 60) 
        if (a <= 69)
            printf("D\n");
    if (a < 60) 
        printf("E\n");
    return 0;
}

代码理解:

对于输入不同数值,让系统通过if语句来判断执行哪个语句,两个if语句是我第一次做这个程序时候用的,可以使用&&来省略一下,使代码变得更加简化,更加直观。

方法二代码如下:

#include<stdio.h>
int main()
{
    int a;
    scanf("%d",&a); 
    switch(a/10)
   {
        case 10:
        case 9:
            putchar('A');
            break;
        case 8:
            putchar('B');
            break;
        case 7:
            putchar('C');
            break;
        case 6:
            putchar('D');
            break;
        default:
            putchar('E');      
    }
}

代码理解:

和上一道题原理基本相似,通过满分百分的分数除以十通过判断结果所在范围,从而确定分数所在范围,进而打印相应的等级。

猜你喜欢

转载自blog.csdn.net/weixin_73125509/article/details/126357020
今日推荐