邮政局计算寄往美国的国际物品快递资费,其计费规则如下:为首重1斤,基本资费240元;续重每斤75元;总重量超过20斤(包括20斤),运费有8折优惠。请编写一计算程序,输入重量,输出资费。
【实现提示】:
输入的重量以斤为单位,且允许有小数,不为整斤重量时,需取上整数计算资费。
【测试数据】
重量(斤) | 0.5 | 1 | 1.5 | 2 | 20 | 25 | 25.5 |
资费(元) | 240 | 240 | 315 | 315 | 1332 | 1632 | 1692 |
我的之前的答案:
#include<iostream>
using namespace std;
int main()
{
double weight=0,money=0;
cout<<"请输入您需要邮寄的物件重量(斤)"<<endl;
cin>>weight;
if(weight<=1)
{
money=240;
}
else if(weight>1&&weight<20)
{
money=240+(weight-1)*75;
}
else
{
money=(240+(weight-1)*75)*0.8;
cout<<"运费为:"<<money<<"元"<<endl;
return 0;
}
我修改后的答案:
#include<iostream>
using namespace std;
int main()
{
double weight=0,money=0;
cout<<"请输入您需要邮寄的物件重量(斤)"<<endl;
cin>>weight;
if(int(weight)!=weight)
{
weight=int(weight)+1.0;
}
if(weight<=1)
{
money=240;
}
else if(weight>1&&weight<20)
{
money=240+(weight-1)*75;
}
else
{
money=(240+(weight-1)*75)*0.8;
}
cout<<"运费为:"<<money<<"元"<<endl;
return 0;
}
我第一次写错的原因在于,不懂得如何处理当超出部分不满1斤时按1斤算。一直以为需要用到某个函数。。。
其实就是简单的,要是当整型的weight不等于双精度浮点型的weight时,就说明这时候的重量不是刚刚好是整数了,这时候就要加1.0了
输入25.5斤时的运行结果: