关于float输出格式的问题
有这样一道题:很简单的.
/*停车场计费*/
#include <stdio.h>
#include <math.h>
double calculateCharges(double hours);
int main()
{
int i;
double h;
double currentCharge;
double totalHours=0.0;
double totalCharge=0.0;
int first=1;
printf( "Enter the hours for the car : ");
for(i=1;i <=3;i++){
scanf( "%lf ",&h);
totalHours+=h;
if (first){
printf( "%5s%15s%15s\n ", "Car ", "Hours ", "Charge ");
first=0;
}
totalCharge+=(currentCharge=calculateCharges(h));
printf( "%5d%15.1f%15.2f\n ",i,h,currentCharge);
}
printf( "%5s%15.1f%15.2f\n ", "TOTAL ",totalHours,totalCharge);
getch();
return 0;
}
double calculateCharges(double hours)
{
double charge;
if(hours <3.0){
charge=2.00;
}
else if(hours <19.0){
charge=2.00+.5*ceil(hours-3.0);
}
else{
charge=10.00;
}
return charge;
}
这个是我参考答案编的.归整了许多.
但是有一个问题想请教大家.就是for后面的 scanf( "%lf ",&h);
我用%f输出为什么得到的结果乱七八糟的呢?
还请各位老鸟赐教.谢谢了.
做完的时候怎么都得不到结果.郁闷至极.把答案拿过来挨行检验.才发现是这里的问题.有谁能给解释一下吗?谢谢了.
[解决办法]
类型不匹配。printf()函数要求不太严,对一个double型变量,可以用%f输出,但scanf()函数要求比较严格,对一个double型变量,一定要用%lf输入。因为printf()在输出前可以先进行类型转换,而scanf()不能在输入时进行类型转换。