hdu ACM Steps 1.2.2 Biker's Trip Odometer

一道模拟题。

谈double的输入输出(遇见double心里一惊)

以下两段为网上热门博文节选。

注意scanf函数和printf函数是不同寻常的函数,因为它们都没有将函数的参数限制为固定数量。scanf函数和printf函数又可变长度的参数列表。当调用带可变长度参数列表的函数时,编译器会安排float参数自动转换成为double类型,其结果是printf函数无法区分float型和double型的参数。因此在printf函数调用中%f既可以表示float型又表示double型的参数。

      另一方面,scanf函数是通过指针指向变量的。%f告诉scanf函数在所传地址位置上存储一个float型值,而%lf告诉scanf函数在所传地址位置上存储一个double型值。这里float和double的区别是非常重用的。如果给出了错误的转换说明,那么scanf函数将可能存储错误的字节数量

个人理解 float用 f 和 lf 输入输出

double 用 f 和 lf 输入输出(也可以用 f 输出)。

如果您发现我的理解不对,请告诉我,我将十分感谢。

#include<cstdio>

double D = 3.1415927/(5280*12); 
double T = 3600;

double d,t;
int r,kase=0;
double dis,v;

int main() {
    while(scanf("%lf%d%lf",&d,&r,&t) && r) {
        dis=d*r*D;
        v=dis*T/t;
        printf("Trip #%d: %.2lf %.2lf\n",++kase,dis,v);
    }
    return 0;
}
posted @ 2017-06-08 21:42  invoid  阅读(123)  评论(0编辑  收藏  举报