题解:
快递费 = 按千克算的钱+是否加急的钱。
如果快递<=1kg,ret = 20;
如果快递>1kg,ret = 20(1kg的钱)+剩余千克的价钱(难点)。
再判断是否加急。
难点:
关于快递剩余千克的价钱:
由题目可知,不超过1kg的按照1kg计算,所以要将剩余千克进行向上取整。
比如:1.5~2 2.4~3 2~2
方法一:利用库函数ceil(),包含于头文件#include<cmath>
方法二:将剩余千克强制类型转换为int类型,再用原来剩余千克减去已经强制类型转换的值,如果最终结果>0,则强制类型转换的值+1;
代码:
#include <iostream>
#include<cmath>
using namespace std;
int main() {
double a;
char b;
int ret = 20;
double c;
while(cin>>a>>b)
{
//按千克算的钱
if(a<=1)
{
;
}else {
c = a-1;
// c = ceil(c);//方法一
c=c-(int)c>0?(int)c+1:c;//方法二:
ret += c;
}
//是否加急的钱
if(b == 'y')
ret += 5;
cout<<ret<<endl;
}
}

京公网安备 11010502036488号