M0005 分段计价
Posted 海岛Blog
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了M0005 分段计价相关的知识,希望对你有一定的参考价值。
问题描述:
某城市出租车收费标准规定如下:
4千米以内(含4千米)按起步价收费10元,超过4千米至25千米按每千米2元收费,超过25千米的部分每千米按3元收费。距离不足1千米(1km)按1千米计算。
输入行驶路程,计算付费金额。路程有可能是带小数点的数。
输入:
若干个小数,表示行驶里程数即千米数。(0<x<=500)
输出:
对于每个行驶里程,输出一行整数的付费金额。
样例输入:
3
4.9
30
样例输出
10
12
67
问题分析:
分段计价是常见的问题。明确分段计算函数关系是第一步。
有了分段计算函数,用嵌套条件语句来实现是常见的做法。然而,还有更为通用的程序来解这个问题。
这里需要用到数学函数库中函数ceil()来实现向上取整。函数floor()用于向下取整,函数round()用于四舍五入。
OJ做题,对于数学上的实数,程序中通常用double类型的浮点数来表示,而不用float来表示。
解题C语言程序如下:
/* M0005 分段计价 */
#include <stdio.h>
#include <math.h>
int main()
double x;
while (~scanf("%lf", &x))
int x1 = ceil(x), y;
if (x1 <= 4) y = 10;
else if (x1 <= 25)
y = 10 + (x1 - 4) * 2;
else
y = 10 + (25 - 4) * 2 + (x1 - 25) * 3;
printf("%d\\n", y);
return 0;
以上是关于M0005 分段计价的主要内容,如果未能解决你的问题,请参考以下文章