为什么写的程序调试没有出现错误,但在执行程序时不能得到结果?

#include <stdio.h>
int main ()
{
int a,b;
printf ("请输入利润:\n");
scanf ("%d\n", &a);
if (a>1000000) b=(a-1000000)*0.01;
else if (a>600000) b=(a-600000)*0.015+33500;
else if (a>400000) b=(a-400000)*0.03+27500;
else if (a>200000) b=(a-200000)*0.05+17500;
else if (a>100000) b=(a-100000)*0.075+100000;
else b=a*0.1;
printf ("获得的利润为%d", b);
return 0;
}

scanf ("%d\n", &a);

改为
scanf ("%d", &a);追问

改后 为什么计算某些值时与结果差1?比如输入450000 结果为应该为29000而运算结果却为28999?这是为什么?

追答

C/C++里
浮点数转整形取浮点数的整数部分, 例:(int)1.999999999 = 1

追问

说的这个我知道,在上面程序中需要怎么改?

追答

#include
int main ()
{
int a=0;
double b=0.0;
printf ("请输入利润:\n");
scanf ("%d\n", &a);
if (a>1000000) b=(a-1000000)*0.01;
else if (a>600000) b=(a-600000)*0.015+33500;
else if (a>400000) b=(a-400000)*0.03+27500;
else if (a>200000) b=(a-200000)*0.05+17500;
else if (a>100000) b=(a-100000)*0.075+100000;
else b=a*0.1;
printf ("获得的利润为%0.2f", b);
return 0;
}

追问

谢谢!

温馨提示:答案为网友推荐,仅供参考
相似回答