用C语言作答顺丰目前从郑州寄往北京、上海的快递资费标准是首重(1.0kg)18.0元,续重5.0元/kg,每200克增加一元,不足200克按200计算,输入快件公斤数,输出快递费。 输入样例:2.3 输出:25
时间: 2024-03-02 13:49:59 浏览: 26
好的,请看下面的 C 语言代码:
```c
#include <stdio.h>
#include <math.h>
int main() {
float weight, fee;
int unit;
printf("请输入快件重量(单位:千克):");
scanf("%f", &weight);
// 计算费用
if (weight <= 1.0) {
fee = 18.0;
} else {
unit = ceil((weight - 1.0) / 0.2);
fee = 18.0 + unit * 5.0;
}
printf("快递费用为:%.2f 元\n", fee);
return 0;
}
```
代码中使用了 `scanf` 函数获取用户输入的快递重量,然后根据题目中给出的资费标准计算快递费用,最后输出结果。需要注意的是,使用 `ceil` 函数向上取整计算续重部分的费用。
相关问题
2、设计一个快递费按邮件重量计算, 由起重费用、续重费用两部分构成: (1)起重(首重)1公斤按起重资费计算(不足1公斤, 按1公斤计算),超过首重的重量,按公斤(不足1公斤, 按1公斤计算)收取续重费; (2)同城起重资费10元,续重3元/公斤; (3) 寄往1区(江浙两省)的邮件,起重资费10元,续重4元; (4) 寄往其他地区的邮件,起重资费统一为15元。而续重部分, 不同区域价格不同:2区的续重5元/公斤,3区的续重6.5元/公斤, 4区的续重10元/公斤。C语言怎么实现?
可以使用C语言中的if语句和switch语句实现快递费的计算,示例代码如下:
```c
#include <stdio.h>
int main() {
int weight, zone;
double price, cost;
printf("请输入邮件重量(单位:公斤):");
scanf("%d", &weight);
printf("请输入邮寄区域(1-4):");
scanf("%d", &zone);
if (weight <= 0) {
printf("邮件重量必须大于0!\n");
return 0;
}
// 计算起重费用
if (weight <= 1) {
if (zone == 1) {
price = 10;
} else {
price = 15;
}
} else {
if (zone == 1) {
price = 10 + 4 * (weight - 1);
} else {
price = 15 + 3 * (weight - 1);
}
}
// 计算续重费用
switch (zone) {
case 1:
cost = 4;
break;
case 2:
cost = 5;
break;
case 3:
cost = 6.5;
break;
case 4:
cost = 10;
break;
default:
printf("邮寄区域选择错误!\n");
return 0;
}
cost *= weight - 1;
// 计算总费用
double total = price + cost;
printf("您需要支付 %.2lf 元快递费。\n", total);
return 0;
}
```
该代码中先通过scanf函数获取邮件重量和邮寄区域,然后根据公式计算起重费用和续重费用,最后将二者相加得到总费用,并输出。注意要对用户输入的数据进行合法性判断,例如邮件重量必须大于0,邮寄区域必须在1-4之间等。
本关任务:编写一个计算机快递费的程序。 上海市的某快递公司根据投送目的地距离公司的远近,将全国划分成5个区域: 快递费按邮件重量计算,由起重费用、续重费用两部分构成: (1) 起重(首重)1公斤按起重资费计算(不足1公斤,按1公斤计算),超过首重的重量,按公斤(不足1公斤,按1公斤计算)收取续重费; (2) 同城起重资费10元,续重3元/公斤; (3) 寄往1区(江浙两省)的邮件,起重资费10元,续重4元; (4) 寄往其他地区的邮件,起重资费统一为15元。而续重部分,不同区域价格不同:2区的续重5元/公斤,3区的续重6.5元/公斤,4区的续重10元/公斤。c语言
实现如下:
#include <stdio.h>
int main() {
int weight, distance, zone;
float fee;
printf("请输入邮件重量(单位:公斤):");
scanf("%d", &weight);
printf("请输入投送目的地距离公司的远近(单位:公里):");
scanf("%d", &distance);
if (distance <= 50) {
zone = 1;
} else if (distance <= 100) {
zone = 2;
} else if (distance <= 300) {
zone = 3;
} else if (distance <= 500) {
zone = 4;
} else {
zone = 5;
}
if (zone == 1) {
fee = 10 + (weight - 1) * 4;
} else {
fee = 15 + (weight - 1) * (zone == 2 ? 5 : (zone == 3 ? 6.5 : 10));
}
printf("快递费为:%.2f元\n", fee);
return ;
}