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; }