C++ 计算邮费

这是一个用于计算邮件邮费的C++程序。它根据邮件的重量和是否选择加急服务来确定费用。当重量不超过1000克时,基本费用为8元;超过1000克,每增加500克收取4元超重费。如果选择加急,会额外收取5元。例如,1200克的邮件加急邮费为17元。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

计算邮费

题目描述

根据邮件的重量和是否选择加急计算邮费。 计算规则:重量在 1000 克以内(包括 1000克),基本费 8 元。

超过 1000 克的部分,每 500 克加收超重费 4 元,不足 500 克部分按 500 克计算;

如果选择加急,多收 5 元

输入格式

输入一行,包含一个正整数和一个字符,以一个空格分开,分别表示重量(和是否加急。如果字符是y,说明选择加急;如果字符是n,说明不加急。

输出格式

输出一行,包含一个整数,表示邮费。

样例组输入#1

1200 y

样例组输出#1

17

#include<bits/stdc++.h>
using namespace std;
int main(){
  int a;
  char b;
  int c;
  cin>>a>>b;
  if(a > 1000){
    c = 8 + ceil((a - 1000) / 500.0) * 4;
  }else{
    cout<<8;
  }
  if(b == 'y'){
    c = c + 5;
    cout<<c;
  }else if(b == 'n'){
    cout<<c;
  }
  return 0;
}

### 使用C++编写程序计算邮资 为了实现一个能够根据给定条件自动计算邮资的程序,可以采用结构化的方式处理不同情况下的费用变化。下面是一个基于特定规则计算邮资的例子: 当物品重量不超过1000克时,基础邮费设定为8元;对于超出的部分,则按照每增加500克加收4元的标准累加额外费用。此外,如果用户选择了保险服务(标记为'y'),则还需在此基础上追加固定金额5元作为保险费。 下面是具体的代码实现方式[^1]: ```cpp #include <iostream> using namespace std; int main() { int weight, postage; char insurance; cin >> weight >> insurance; if(weight <= 1000){ postage = 8; } else{ if((weight - 1000) % 500 == 0) postage = 8 + (weight - 1000) / 500 * 4; else postage = 8 + ((weight - 1000) / 500 + 1) * 4; } if(insurance == 'y') cout << postage + 5 << endl; else if(insurance == 'n') cout << postage << endl; return 0; } ``` 此段代码首先读取输入数据——即包裹的重量以及是否需要附加保险的信息。接着通过一系列`if-else`逻辑判断来决定最终应收取多少邮资,并将结果输出到屏幕上。这里特别注意的是,在处理超重部分计价时考虑到了可能存在的不足一档的情况,确保了收费更加合理公正。 另一个例子展示了更复杂的场景下如何调整算法以适应不同的定价策略[^4]。在这个版本中,起始价格设定了更高的门槛,并且针对超过初始限额后的增量采用了线性的增长模式: ```cpp #include <iostream> #include<iomanip> //用于控制浮点数精度 using namespace std; int main(){ double weight, cost; const double BASE_WEIGHT = 1.0; // 基础重量单位(公斤) const double BASE_COST = 15.0; // 起步价 const double ADDITIONAL_COST_PER_KG = 8.0; // 每多出1kg的价格 cin>>weight; if(weight<=BASE_WEIGHT){ cost=BASE_COST; }else{ cost=BASE_COST+(weight-BASE_WEIGHT)*ADDITIONAL_COST_PER_KG; } cout<<fixed<<setprecision(1)<<cost<<endl;//设置输出格式为一位小数 return 0; } ``` 这段代码同样接收用户的输入并据此计算总成本,但是它引入了一个新的概念:每当货物重量超过了预定义的基础值之后,就会依据实际超出量按比例增收相应的费用。同时为了避免不必要的舍入误差影响用户体验,还特意设置了输出的小数位数限制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值