注册 登录
编程论坛 C语言论坛

C语言中经典的奖金利润分成问题,知道源代码,但是不能理解,求大神给详细的解析。

clb141914845 发布于 2020-12-08 23:30, 1623 次点击
题目:企业发放的奖金根据利润提成。利润(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,求应发放奖金总数?
3 回复
#2
风过无痕19892020-12-09 01:43
回复 楼主 clb141914845
程序代码:

#include<stdio.h>
int main()
{
    float I, jiangji;
    printf("输入当月利润:");
    scanf("%f", &I);
    if (I <= 100000)
        jiangji = 0.1 * I;
    else if (100000 < I && I <= 200000)
        jiangji = 0.1 * 100000 + 0.075 * (I - 100000); // 基准数是100000 * 10%
    else if (200000 < I && I <= 400000)
        jiangji = 0.1 * 200000 + 0.05 * (I - 200000);  // 基准数是200000 * 10%
    else if (400000 < I && I <= 600000)
        jiangji = 0.1 * 400000 + 0.03 * (I - 400000);  // 基准数是400000 * 10%
    else if (600000 < I && I <= 1000000)
        jiangji = 0.1 * 600000 + 0.015 * (I - 600000); // 基准数是600000 * 10%
    else if (1000000 < I)
        jiangji = 0.1 * 1000000 + 0.01 * (I - 1000000);// 基准数是1000000 * 10%

    printf("应发放奖金总数为:%.2f\n", jiangji);
}
#3
rjsp2020-12-09 09:22
知道源代码,但是不能理解
??? 先完完全全按照题意写出代码,语法不会的话去看教科书,应该没有任何难度
程序代码:
double foo( double i )
{
    double r = 0;
    if( i <= 100000 )
        r = i*0.100;
    else if( i <= 200000 )
        r = 100000*0.100 + (i-100000)*0.075;
    else if( i <= 400000 )
        r = 100000*0.100 + (200000-100000)*0.075 + (i-200000)*0.050;
    else if( i <= 600000 )
        r = 100000*0.100 + (200000-100000)*0.075 + (400000-200000)*0.050 + (i-400000)*0.030;
    else if( i <= 1000000 )
        r = 100000*0.100 + (200000-100000)*0.075 + (400000-200000)*0.050 + (600000-400000)*0.030 + (i-600000)*0.015;
    else
        r = 100000*0.100 + (200000-100000)*0.075 + (400000-200000)*0.050 + (600000-400000)*0.030 + (1000000-600000)*0.015 + (i-1000000)*0.010;
    return r;
}


然后,有空余时间,可以化简代码
程序代码:
double foo( double i )
{
    double r = 0;
    if( i <= 100000 )
        r = i*0.100 + 0;
    else if( i <= 200000 )
        r = i*0.075 + 2500;
    else if( i <= 400000 )
        r = i*0.050 + 7500;
    else if( i <= 600000 )
        r = i*0.030 + 15500;
    else if( i <= 1000000 )
        r = i*0.015 + 24500;
    else
        r = i*0.010 + 29500;
    return r;
}
#4
clb1419148452020-12-10 08:51
回复 2楼 风过无痕1989
感谢,完全理解了
1