C语言中%.f打印具有四舍五入功能

在做题时,我们有时会遇到要求四舍五入,如下题

本题要求根据某城市普通出租车收费标准编写程序进行车费计算。具体标准如下:

  • 起步里程为3公里,起步费10元;
  • 超起步里程后10公里内,每公里2元;
  • 超过10公里以上的部分加收50%的回空补贴费,即每公里3元;
  • 营运过程中,因路阻及乘客要求临时停车的,按每5分钟2元计收(不足5分钟则不收费)。

输入格式:

输入在一行中给出输入行驶里程(单位为公里,精确到小数点后1位)与等待时间(整数,单位为分钟),其间以空格分隔。

输出格式:

在一行中输出乘客应支付的车费(单位为元),结果四舍五入,保留到元。

我们可以用加上0.5的方式来四舍五入,代码如下:

#include <stdio.h>
 
int main(){
    float lc;    //lc里程
    int min, cf;    //min分钟, cf车费
    
    scanf("%f %d", &lc, &min);
    
    //1.先根据里程数计算费用
    if( lc <= 3 )    //小于3公里
        cf = 10;
    else if( lc > 3 && lc <= 10 )    //大于3公里且小于10公里
        cf = 10 + (lc-3) * 2 + 0.5;
    else if( lc > 10 )    //大于10公里
        cf = 10 + (lc-3) * 2 + (lc-10) + 0.5; 
    
    //2.根据临时停车计算费用
    if( min >= 5 ){    //仅当超过5分钟时,才进行计费
        cf += (min/5) * 2;
    }
    
    printf("%d", cf);
    
    return 0;
}

这也是大多数人的选择,但我们可以将cf定义为float,同样可以实现:

#include <stdio.h>
 
int main(){
    float lc,cf;    //lc里程
    int min;    //min分钟, cf车费
    
    scanf("%f %d", &lc, &min);
    
    //1.先根据里程数计算费用
    if( lc <= 3 )    //小于3公里
        cf = 10;
    else if( lc > 3 && lc <= 10 )    //大于3公里且小于10公里
        cf = 10 + (lc-3) * 2 ;
    else if( lc > 10 )    //大于10公里
        cf = 10 + (lc-3) * 2 + (lc-10);
    
    //2.根据临时停车计算费用
    if( min >= 5 ){    //仅当超过5分钟时,才进行计费
        cf += (min/5) * 2;
    }
    
    printf("%.f", cf);
    
    return 0;
}

此时,在打印cf时,会自动将数值四舍五入四舍五入,采用此方式,虽然作用不大,但是可以减少一定的代码量,并防止因忘记加0.5出错。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值