Problem E: 邮费计算(保留小数位数,选择结构,向上取整)
Memory Limit:128 MB
Time Limit:1.000 S
Judge Style:Text Compare
Creator:
Submit:59
Solved:21
Description
假设邮局规定寄邮件时若每件重量在1公斤以内(含1公斤),按1.0元计算邮费,如果超过1公斤时,其超出部分每公斤加收0.8元,不满一公斤也按一公斤算。请编程计算邮件收费。
注意:邮件的重量是个大于0的数。
注意:邮件的重量是个大于0的数。
Input
输入邮件重量:一个实数W公斤
Output
输出邮件收费,结果保留2位小数。
Sample Input Copy
1.01
Sample Output Copy
1.80
HINT
分3种情况:
当w等于0时,邮费是0.00元;
当w>0并且w<=1时,邮费是1.00元;
当w>1时,邮费是(w向上取整-1)*0.8+1
向上取整函数使用方法如下:
#include<bits/stdc++.h>
using namespace std;
int main()
{
double a;
a=1.2;
cout<<ceil(a); //输出结果是2
}
向下取整函数使用方法如下:
#include<bits/stdc++.h>
using namespace std;
int main()
{
double a;
a=1.2;
cout<<floor(a); //输出结果是1
}
如何处理不满一公斤也按一公斤算,当w>1时,可以通过判断重量是否是整数处理(采用强制转换):
当w=1.01时,邮费应当是1.8元,即1+0.8,计算过程如下,可将1.01这个数强制转换为整型数,如果转换后的这个数小于它本身,强制转换(int)w是将w转换为整型数,当w=1.01时,int(w)的结果是1,则1<1.01,说明此时的w不是整数。
当w=2时,邮费应当是1.8元,计算过程同上,对其进行强制转换,int(w)的结果还是2,(int)w=w,说明此时的w是整数。
当w等于0时,邮费是0.00元;
当w>0并且w<=1时,邮费是1.00元;
当w>1时,邮费是(w向上取整-1)*0.8+1
向上取整函数使用方法如下:
#include<bits/stdc++.h>
using namespace std;
int main()
{
double a;
a=1.2;
cout<<ceil(a); //输出结果是2
}
向下取整函数使用方法如下:
#include<bits/stdc++.h>
using namespace std;
int main()
{
double a;
a=1.2;
cout<<floor(a); //输出结果是1
}
如何处理不满一公斤也按一公斤算,当w>1时,可以通过判断重量是否是整数处理(采用强制转换):
当w=1.01时,邮费应当是1.8元,即1+0.8,计算过程如下,可将1.01这个数强制转换为整型数,如果转换后的这个数小于它本身,强制转换(int)w是将w转换为整型数,当w=1.01时,int(w)的结果是1,则1<1.01,说明此时的w不是整数。
当w=2时,邮费应当是1.8元,计算过程同上,对其进行强制转换,int(w)的结果还是2,(int)w=w,说明此时的w是整数。