我是一个C语言初学者,有一个程序百思不得其解,想请教高手指点!程序代码在下面:

2024-11-18 21:48:40
推荐回答(2个)
回答1:

这是你的源程序,但是有一个错误的地方,但不影响运行。
main()
{
long int i;
int bonus;
scanf("%ld",&i);
if(i<=100000)
bonus=i*0.1;
else if(i<=200000)
bonus=10000+(i-100000)*0.075;
else if(i<=400000)
bonus=17500+(i-200000)*0.05;
else if(i<=600000)
bonus=27500+(i-400000)*0.03;
else if(i<=100000) /*第一个if就是十万,这里有出现十万,程序永远不会执行这一步的if,而是直接跳到下面的else。我想这里应该是一百万的吧*/
bonus=33500+(i-600000)*0.015;
else
bonus=39500+(i-1000000)*0.01;
printf("bonus=%d",bonus);
}
我是郭你的程序了,没出现你说的第二个问题啊。至于第一个问题,那是因为你定义的bonus是整型,计算出的结果都有小数,那么计算出的结果赋给bonus时,会直接只取整数部分,而小数部分一概省去。
希望对你有帮助。

回答2:

后面的条件被前面的包含。。造成逻辑上的错误。。。