C语言经典算法100例-002-数轴的使用

题目如下:

企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高 于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提 成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于 40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于 100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?

知识点:对if else结构的熟练应用,可以模仿数轴,将各个区间的利润分别计算。

代码:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    long int profit;
    int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;
    printf("Please input the profit!
");
    scanf("%ld",&profit);

    bonus1=100000*0.1;
    bonus2=bonus1+100000*0.075;
    bonus4=bonus2+200000*0.05;
    bonus6=bonus4+200000*0.03;
    bonus10=bonus6+400000*0.015;
    if(profit<=100000) bonus=profit*0.1;
    else if(profit<200000) bonus=bonus1+(profit-100000)*0.075;
    else if(profit<400000) bonus=bonus2+(profit-200000)*0.05;
    else if(profit<600000) bonus=bonus4+(profit-400000)*0.03;
    else if(profit<1000000) bonus=bonus6+(profit-600000)*0.015;
    else bonus=bonus10+(profit-1000000)*0.001;

    printf("Bonus is %d
",bonus);
    return 0;
}


易错点:1.10W到20W的利润率可能按0.75算。

                2.注意输入长整型要使用 %ld.

                3.将不变量bonus1等提前计算出来,不要在计算bonus时计算,会降低程序可读性,其实这里最好使用常量。

by 庄孝义


原文地址:https://www.cnblogs.com/mrbourne/p/9959520.html