华为18级员工薪资45k:一道简单的C语言问题

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/11 04:24:55
题目:企业发放的奖金根据利润提成。利润(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>
main( )
{
long i,a,b,c,d,e,gold;
scanf("%ld",&i);

a=100000*0.1;
b=a+100000*0.075;
c=b+200000*0.05;
d=c+200000*0.03;
e=d+400000*0.015;

if (i<=100000 && i>0) gold=i*0.1;
else if (i>100000 && i<=200000) gold=a+(i-100000)*0.075;
else if (i>200000 && i<=400000) gold=b+(i-200000)*0.05;
else if (i>400000 && i<=600000) gold=c+(i-400000)*0.03;
else if (i>600000 && i<=1000000) gold=d+(i-600000)*0.015;
else if (i>1000000) gold=e+(i-1000000)*0.01;

printf ("gold=%ld",gold);
}
上面是用IF语句做的。希望能帮我用SWITCH语句重新做一遍,非常感谢。

#include <stdio.h>
main( )
{
long i,a,b,c,d,e,gold,j;
scanf("%ld",&i);

j = i/100000;
switch(j)
{
case 0:gold=i*0.1; break;
case 1:gold=a+(i-100000)*0.075;break;
case 2:
case 3:gold=b+(i-200000)*0.05; break;
case 4:
case 5:gold=c+(i-400000)*0.03; break;
case 6:
case 7:
case 8:
case 9:gold=d+(i-600000)*0.015; break;
default:gold=e+(i-1000000)*0.01;
}
printf("gold=%ld\n",gold);
}

int j =(int) i/100000;
switch (j)
{
case 0:gold=i*0.1; break;
case 1:gold=a+(i-100000)*0.075;break;
case 2:
case 3:gold=b+(i-200000)*0.05; break;
case 4:
case 5:gold=c+(i-400000)*0.03; break;
case 6:
case 7:
case 8:
case 9:gold=d+(i-600000)*0.015; break;
default:gold=e+(i-1000000)*0.01;
}

#include <stdio.h>
main( )
{
long i,a,b,c,d,e,gold;
scanf("%ld",&i);

int j =(int) i/100000;
switch j
case 0:gold=i*0.1; break;
case 1:gold=a+(i-100000)*0.075;break;
case 2:
case 3:gold=b+(i-200000)*0.05; break;
case 4:
case 5:gold=c+(i-400000)*0.03; break;
case 6:
case 7:
case 8:
case 9:gold=d+(i-600000)*0.015; break;
default:gold=e+(i-1000000)*0.01;

printf ("gold=%ld",gold);
}