在做谭浩强写的那本C语言的一道题,是让根据利润提成奖金,
写了第一个不对,给改成第二个,发现对了,可是老是想不明白第一个为啥错。
第一个:
main()
{
int x;
long t;
float I,bonus,I1,I2,I3,I4,I5;
printf("I=");
scanf("%f",&I);
t=100000;
I1=t*(10/100);
I2=t*(7.5/100);
I3=2*t*(5/100);
I4=2*t*(3/100);
I5=4*t*(1.5/100);
if(I>=10*t) x=10;
else x=I/100000;
switch(x)
{
case 0 : bonus=I*(10/100);break;
case 1 : bonus=(I-t)*(7.5/100)+I1;break;
case 2 :
case 3 : bonus=(I-2*t)*(5/100)+I2+I1;break;
case 4 :
case 5 : bonus=(I-4*t)*(3/100)+I3+I2+I1;break;
case 6 :
case 7 :
case 8 :
case 9 : bonus=(I-6*t)*(1.5/100)+I4+I3+I2+I1;break;
case 10: bonus=(I-10*t)*(1/100)+I5+I4+I3+I2+I1;break;
}
printf("The bonus is %f.\n",bonus);
}
第二个:
main()
{
int x;
long t;
float I,bonus,I1,I2,I3,I4,I5;
printf("I=");
scanf("%f",&I);
t=100000;
I1=100000*0.1;
I2=100000*0.075;
I3=200000*0.05;
I4=200000*0.03;
I5=400000*0.015;
if(I>=10*t) x=10;
else x=I/100000;
switch(x)
{
case 0 : bonus=I*(10/100);break;
case 1 : bonus=(I-t)*(7.5/100)+I1;break;
case 2 :
case 3 : bonus=(I-2*t)*(5/100)+I2+I1;break;
case 4 :
case 5 : bonus=(I-4*t)*(3/100)+I3+I2+I1;break;
case 6 :
case 7 :
case 8 :
case 9 : bonus=(I-6*t)*(1.5/100)+I4+I3+I2+I1;break;
case 10: bonus=(I-10*t)*(1/100)+I5+I4+I3+I2+I1;break;
}
printf("The bonus is %f.\n",bonus);
}
就是把红字的部分给改了。其他地方一点没变。。
为啥呢?
[求助]大家帮忙看下这两个程序到底有什么不同?