首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

关于float输出格式的有关问题

2012-02-10 
关于float输出格式的问题有这样一道题:很简单的./*停车场计费*/#includestdio.h#includemath.hdoublec

关于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()不能在输入时进行类型转换。

热点排行