注册 登录
编程论坛 C语言论坛

为啥%lf可以,%.1lf不行?

黑暗骑士5D 发布于 2019-11-14 22:45, 2639 次点击
本题要求根据某城市普通出租车收费标准编写程序进行车费计算。具体标准如下:

起步里程为3公里,起步费10元;
超起步里程后10公里内,每公里2元;
超过10公里以上的部分加收50%的回空补贴费,即每公里3元;
营运过程中,因路阻及乘客要求临时停车的,按每5分钟2元计收(不足5分钟则不收费)。
输入格式:
输入在一行中给出输入行驶里程(单位为公里,精确到小数点后1位)与等待时间(整数,单位为分钟),其间以空格分隔。

输出格式:
在一行中输出乘客应支付的车费(单位为元),结果四舍五入,保留到元。
输入样例1:
2.6 2
输出样例1:
10
输入样例2:
5.1 4
输出样例2:
14
输入样例3:
12.5 9
输出样例3:
34

int main()
 {
   double s;
   int t,m;
   scanf("%lf %d",&s,&t);
   if(s<=3.0)
   {m=10;}
   else if(s>3.0&&s<=10.0)
   {m=(int)10+(s-3)*2+0.5;}
   else
   {m=(int)10+7*2+(s-10)*3+0.5;}
   printf("%d",m+t/5*2);
   return 0;
 }
为什么把%lf换成%.1lf不行?

[此贴子已经被作者于2019-11-14 22:47编辑过]

7 回复
#2
rjsp2019-11-15 09:21
那你从哪本书上看到 scanf 中可以用 %.1lf 的呢?
#3
三尺冰2019-11-15 12:34
不加小数点是可以的

#4
c鳌白2019-11-15 13:28
回复 2楼 rjsp
我认为可以
#5
Ly_轮回2019-11-15 17:57
scanf只能控制长度不能控制精度
#6
自学的数学2019-11-15 20:52
用来定义格式化输出的,但这么写不正确。
%f是定义输出浮点数,并没有%1f这种格式。
数字1呢是指定所占列宽,但是一个浮点数怎么都不会只有1个列宽,所以定义没有意义。
#7
黑暗骑士5D2019-11-15 23:24
回复 2楼 rjsp
不是要保留1位小数吗?%lf是保留6位啊
#8
rjsp2019-11-16 00:58
回复 7楼 黑暗骑士5D
你说的是printf,这里是scanf
1