看看我写错了没有,算出来的结果好象不对!

来源:百度知道 编辑:UC知道 时间:2024/06/17 01:12:30
企业年底发放的奖金根据当年的利润提成,利润低于或等于10万元时,奖金可提成10%;[u]利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时,高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,输入当年的利润,求应发放奖金总数。
考虑使用万元为单位

#include<stdio.h>

void main()
{
int x,y;
printf("请输入利润:");
scanf("%d",&x);

if(x<=10)
printf("应发的奖金为%d",y=x*0.1);
else if(x>10&&x<=20)
printf("应发的奖金为%d",y=(x-10)*0.075+10*0.1);
else if(x>20&&x<=40)
printf("应发的奖金为%d",y=(x-20)*0.05+10*0.075+10*0.1);
else if(x>40&&x<=60)
printf("应发的奖金为%d",y=(x-40)*0.03+20*0.05+10*0.075+10*0.1);
else if(x>60&&x<=100)
printf("应发的奖金为%d",y=(x-60)*0.015+20*0.03+20*0.05+10*0.075+10*0.1);
else if(x>100)
printf("应发的奖金为%d",y=(x-100)*0.01+40*0.015+20*0.03+20*0.05+10*0.075+10*0.1);
printf(&

把x,y改成float或double类型就行了,你用的是int型,强制取整了,比如你输入8,那么y=int(0.8)=0,当然不正确了。

另外if(x<=10)的else已经隐含了x>10,所以只要写else if(x<=20)就行了,其他的也同样如此。
if(x<=10)
printf("应发的奖金为%d",y=x*0.1);
else if(x<=20)
printf("应发的奖金为%d",y=(x-10)*0.075+10*0.1);
else if(x<=40)
printf("应发的奖金为%d",y=(x-20)*0.05+10*0.075+10*0.1);
else if(x<=60)
printf("应发的奖金为%d",y=(x-40)*0.03+20*0.05+10*0.075+10*0.1);
else if(x<=100)
printf("应发的奖金为%d",y=(x-60)*0.015+20*0.03+20*0.05+10*0.075+10*0.1);
else
printf("应发的奖金为%d",y=(x-100)*0.01+40*0.015+20*0.03+20*0.05+10*0.075+10*0.1);

else if(x>60&&x<=100)
printf("应发的奖金为%d",y=(x-60)*0.015+20*0.03+20*0.05+10*0.075+10*0.1);
else if(x>100)
printf("应发的奖金为%d",y=(x-100)*0.01+40*0.015+20*0.03+20*0.05+10*0.075+10*0.1);

--------------这两个地方写错了
应该是
else if(x>60&&x<=1