帮我写c++代码,能过输出就行了: 【题目描述】 快递的重量可分为实际重量、体积重量和计费重量。 实际重量(AW):指包括包装在内的货物总重量。 体积重量(VW):指将货物体积转换成重量,目前国际快递体积重量的计算方法是:体积重量=长(CM)*宽(CM)*高(CM)/5000 (CM)。 计费重量(CW):将快递的实际重量与体积重量进行比较,以较大者为计费重量。 小T想寄一件未包装重 g kg,长宽高为a、b、h(CM)的快递,快递需打包后才能进行运输,已知快递站快递的计费规则和5种包装箱大小,想请你帮忙计算一下快递费用需要多少? 计费规则:快递首重10元,超重每续重单位加收2元(续重以0.5KG为计重单位,不足0.5kg,按0.5kg计) 包装箱型号: Snipaste_2023-02-27_20-41-47.png 型号 长(Xa) 宽(Xb ) 高(Xh ) 纸箱重量(Xg ) 1号 20cm 18cm 10cm 0.1kg 2号 25cm 20cm 18cm 0.15kg 3号 30cm 25cm 20cm 0.2kg 4号 36cm 30cm 25cm 0.25kg 5号 53cm 32cm 23cm 0.3kg 【输入】 第一行 一个实数 g,表示所要寄送快递的重量 第二行 三个整数a , b h ,分别表示所要寄送快递的长、宽、高。 【输出】 输出一个整数,表示快递费用 【输入样例1】 0.9 20 18 10 【输出样例1】 10 【输入样例2】 1 25 20 18 【输出样例2】 14
时间: 2023-03-25 20:04:04 浏览: 76
以下是 CSDN 开发的 C 知道的回答:
这是一道计算题,可以用 C 语言编写程序来解决。下面是一份可能的代码实现:
```c
#include <stdio.h>
#include <math.h>
int main() {
double g, a, b, h;
scanf("%lf %lf %lf %lf", &g, &a, &b, &h);
double vw = a * b * h / 500;
double cw = fmax(g, vw);
double fee = 10 + ceil((cw - 1) / .5) * 2;
double xg;
if (a <= 20 && b <= 18 && h <= 10) {
xg = .1;
} else if (a <= 25 && b <= 20 && h <= 18) {
xg = .15;
} else if (a <= 30 && b <= 25 && h <= 20) {
xg = .2;
} else if (a <= 36 && b <= 30 && h <= 25) {
xg = .25;
} else if (a <= 53 && b <= 32 && h <= 23) {
xg = .3;
} else {
printf("无法寄送\n");
return ;
}
fee += xg * ceil(cw - 1);
printf("%d\n", (int)fee);
return ;
}
```
这个程序首先读入快递的重量和长宽高,然后计算出体积重量和计费重量。接着根据计费重量和计费规则计算出快递费用。最后根据包装箱的大小和数量计算出打包费用,并输出总费用。
注意,这个程序中使用了 `math.h` 库中的 `fmax` 函数来计算两个数中的较大值,使用了 `ceil` 函数来向上取整。