初始C语言——运费问题

问题描述:
某快递公司根据投送目的第距离公司的远近,将全国划分为5个区域:

0区:同城
1区:临近两省
2区:1500公里(含)以内
3区:1500—2500公里
4区:2500公里以上
快递费按照邮件重量计算,由起重费用、续费费用两部分构成,具体计算方法如下:
(1)起重(首重)1公斤按起重资费计算(不足1公斤,按1公斤计算),超过首重的重量,按公斤(不足1公斤,按1公斤计算)收取续重费;
(2)同城起重资费10元,续重3元/公斤;
(3)寄往1区的邮件,起重资费10元,续重4元;
(4)寄往其他地区的邮件,起重资费统一为15元。续重:
2区:5元/公斤;3区:6.5元/公斤;4区:10/公斤。
输入:区域编码 重量
输出:运费
计算结果保留两位小数
邮件重量应大于0公斤,区域编码不能超过0–4的范围,否则输出:输入有误。
#define _CRT_SECURE_NO_WARNINGS 1
//防止visual studio2013以上版本scanf报错,vc6.0环境可忽略
#include<stdio.h>
int main()
{
int area, wt;
float weight, sum;
int b;
printf(“请输入要寄快递的 区域:\n”);
scanf(“%d”, &area);
if (area < 0 || area>4 ) {
printf(“您输入的区域不对哦!\n”);
printf(“请重新输入\n”);
}
printf(“请输入快递物品的重量\n”);
scanf(“%f”, &weight);
if (weight <= 0)
{
printf(“您所输入的重量不对\n”);
printf(“请重新输入”);
}
printf(“收费方式:\n”);
printf(“起重(首重)1公斤按起重资费计算(不足1公斤,按1公斤计算)。\n”);
printf(“超过首重的重量,按公斤(不足1公斤,按1公斤计算)收取续重费。\n”);
b = weight;
if (weight < 1)
wt = 1;
else if (weight - b > 0)
wt = b + 1;
else wt = b;
wt -= 1;
switch (area) {

case 0:
	printf("同城起重资费10元,续重3元/公斤\n");
	sum = 10 + wt * 3; break;
case 1:
	printf("寄往1区的邮件,起重资费10元,续重4元/公斤");
	sum = 10 + wt * 4; break;
case 2:
	printf("起重资费15元,续重5元/公斤");
	sum = 15 + wt * 5; break;
case 3:
	printf("起重资费15元,续重6.5元/公斤");
	sum = 15 + wt * 6.5; break;
case 4:
	printf("起重资费15元,续重10元/公斤");
	sum = 15 + wt * 10; break;
}
printf("您的快递费用为:%.2f元\n", sum);
return 0;

}
这里我说明一下为什么要int b和b=weight;
很简单,weight是float类型,b是int类型,假设weight=5.5,则赋值给b为5,这样可以很好的计算不足1公斤的续费问题。
在这里插入图片描述

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
无向带权图可以使用邻接矩阵来存储,邻接矩阵是一个二维数组,其中第i行第j列的元素表示第i个顶点到第j个顶点的边的权重(如果两个顶点之间没有边,则对应的元素为0)。以下是C语言中无向带权图邻接矩阵的建立代码: ```c #define MAX_VERTEX_NUM 100 // 最大顶点数 #define INF 65535 // 表示正无穷 typedef struct { int vertex[MAX_VERTEX_NUM]; // 存储顶点 int arcs[MAX_VERTEX_NUM][MAX_VERTEX_NUM]; // 存储边的权值 int vexnum, arcnum; // 存储图的顶点数和边数 } MGraph; void CreateMGraph(MGraph *G) { int i, j, k, w; printf("请输入顶点数和边数:\n"); scanf("%d%d", &(G->vexnum), &(G->arcnum)); printf("请输入顶点信息:\n"); for (i = 0; i < G->vexnum; i++) { scanf("%d", &(G->vertex[i])); } for (i = 0; i < G->vexnum; i++) { for (j = 0; j < G->vexnum; j++) { G->arcs[i][j] = INF; // 初始化为正无穷 } } printf("请输入边的信息:\n"); for (k = 0; k < G->arcnum; k++) { printf("请输入第%d条边的起点、终点和权值:\n", k+1); scanf("%d%d%d", &i, &j, &w); G->arcs[i-1][j-1] = w; G->arcs[j-1][i-1] = w; // 无向图需要对称存储 } } ``` 在上述代码中,我们首先定义了一个结构体MGraph,包含了一个顶点数组、一个邻接矩阵和图的顶点数和边数。然后,我们使用CreateMGraph函数来创建无向带权图的邻接矩阵。在函数中,我们首先输入图的顶点数和边数,然后输入每个顶点的信息,接着初始化邻接矩阵为正无穷,最后输入每条边的起点、终点和权值,并将其存储到邻接矩阵中。需要注意的是,无向图需要对称存储。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值