float money,cost,price;
printf("输入花费多少钱:\n");
scanf("%lf",&money);
if(money>=500)
{
cost=0.8;
price=money*cost;
printf("%.2lf",price);
}
else if(money<=500 && money>=300)
{
cost=0.85;
price=money*cost;
printf("%.2lf",price);
}
else if(money<=300 && money>=100)
{
cost=0.9;
price=money*cost;
printf("%.2lf",price);
}
else if(money<=100 && money>=50)
{
cost=0.95;
price=money*cost;
printf("%.2lf",price);
}
else
printf("实际花费%.2lf",money);
}
%f对应float
%lf对应 double
不要混用
学编程先学调试,断点跟,看输入之后money到底是多少,print出来也行,不要全靠猜
%lf是double
%f才是float
其实有两个问题,一个是浮点类型问题,float必须用%f输入,不能用%lf,否则变量值就会是0
另一个问题是,你的if...else条件有交叉,比如money为300时,到底是85折还是90折?第10行和16行,money=300时都满足啊。