格式控制符有问题,%f是float的格式控制符,%d是int的格式控制符,double的格式控制符是%lf,你改成int可以运行是因为你的格式控制符是float的,int型可以向float转换,而double类型的变量不能向float转换,所以会出错。转换规则:只能窄域向宽域转换,反过来则不行
int main(int argc, char* argv[])
{
double n,cost;
scanf("%lf",&n);
printf("%f\n",n);
if(n>500) cost=0.15;
else if(n>300.0&&n<500.0) cost=0.10;
else if(n>100.0&&n<300.0) cost=0.075;
else if(n>50.0&&n<100.0) cost=0.05;
else cost=0;
printf("%f\n",cost);
return 0;
}
将%f 改为%lf 因为你输入的是双精度的数
神贴-_-||,具体点啊!