天天都饱饱 发表于 2018-10-5 12:12:33

求解答 c语言经典一百题 第二题

题目
企业发放的奖金根据利润提成。利润(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,求应发放奖金总数?

我的代码:                  
        #include <stdio.h>
       
        void main()
        {
                int i;
                float profit;
                printf("enter i");
                scanf("%d",&i);
                if(i<=10)
                {
                profit=0.1*i;
                }
                else if(10 && i<=20)
                {
                profit=1+(i-10)*0.075;
                }       
                else if(i>20 && i<=40)
                {
                profit=1+0.75+(i-20)*0.05;
                }
                else if(i>40 && i<=60)
                {
                profit=1.75+0.1+(i-40)*0.03;
                }
                else if(i>60 && i<=100)
                {
                profit=1.85+0.6+(i-60)*0.015;
                }
                else if(i>=100)
                {
                profit=2.45+40*0.015+(i-100)*0.01;
                }
                printf("%f",profit);
        }

程序源代码:
#include "stdio.h"
int main()
{
long i;
float bonus,bon1,bon2,bon4,bon6,bon10;
bon1=100000*0.1;
bon2=bon1+100000*0.075;
bon4=bon2+200000*0.05;
bon6=bon4+200000*0.03;
bon10=bon6+400000*0.015;
printf("请输入利润i:");
scanf("%ld",&i);
if(i<=100000)
bonus=i*0.1;
else if(i<=200000)
bonus=bon1+(i-100000)*0.075;

为什么运行别人的程序,输入20是输出的是 2 呀?
不应该是1.75吗?
profit=10*0.1+(20-10)*0.075不是吗?
       

claws0n 发表于 2018-10-5 15:04:59

int main()
{
    double i, bonus;
    printf("请输入公司利润(万):\n");
    scanf("%lf", &i);
    if(i <= 10)
    {
            bonus = 0.1*i;
    }
    else if(i > 10 && i <= 20)
    {
            bonus = 1 + (i-10)*0.075;
    }      
    else if(i > 20 && i <= 40)
    {
            bonus = 1.75 + (i-20)*0.05;
    }
    else if(i > 40 && i <= 60)
    {
            bonus = 2.75 + (i-40)*0.03;
    }
    else if(i > 60 && i <= 100)
    {
            bonus = 3.35 + (i-60)*0.015;
    }
    else if(i > 100)
    {
            bonus = 3.95 + (i-100)*0.01;
    }
    printf("Bonus = %.2f万\n",bonus);
   
        return 0;
}加错了

天天都饱饱 发表于 2018-10-6 10:12:51

哦哦哦,好哒,谢谢啦

JuniorHu 发表于 2018-10-8 14:31:43

void main()//第2题
{
        int i;
        double d1, d2, d4, d6, d10, wage;
        d1 = 100000 * 0.1;
        d2 = d1 + 100000 * 0.075;
        d4 = d2 + 200000 * 0.05;
        d6 = d4 + 200000 * 0.03;
        d10 = d6 + 400000 * 0.015;
        printf("请输入利润i :\n\n");
        scanf_s("%d", &i);
        if (i <= 100000 && i > 0)
        {
                wage = i*0.1;
                printf("利润为 %d 时的奖金为 %f \n\n", i, wage);
        }
        else if (i >= 100000 && i < 200000)
        {
                wage = d1 + (i - 100000)*0.075;
                printf("利润为 %d 时的奖金为 %f \n\n", i, wage);
        }
        else if (i >= 200000 && i < 400000)
        {
                wage = d2 + (i - 200000)*0.05;
                printf("利润为 %d 时的奖金为 %f \n\n", i, wage);
        }
        else if (i >= 400000 && i < 600000)
        {
                wage = d4 + (i - 400000)*0.03;
                printf("利润为 %d 时的奖金为 %f \n\n", i, wage);
        }
        else if (i >= 600000 && i < 1000000)
        {
                wage = d6 + (i - 600000)*0.015;
                printf("利润为 %d 时的奖金为 %f \n\n", i, wage);
        }
        else if (i >= 1000000)
        {
                wage = d10 + (i - 1000000)*0.01;
                printf("利润为 %d 时的奖金为 %f \n\n", i, wage);
        }
        system("PAUSE");
}
页: [1]
查看完整版本: 求解答 c语言经典一百题 第二题