C语言编写某公司有四个销售员(编号:1-4),负责销售五种产品(编号:1-5)。每个销售员都将当天出售的每种产品各写一张便条交上来。每张便条包含内容:(1)销售员的代号 (2)产品的代号 (3)这种产品的当天的销售额 每位销售员每天可能上缴 0-5张便条。假设,收集到了上个月的所有便条,编写一个处理系统,读取上个月的销售情况,进行如下处理。" (1)计算上个月每个人每种产品的销售额。 (2)按销售额对销售员进行排序,输出排序结果(销售员代号)及每个销售员的销售排名。 (3)统计每种产品的总销售额,对这些产品按从高到底的顺序,输出排序结果(需输出产品的代号和销售额) (4)输出统计报表
时间: 2024-02-20 12:02:15 浏览: 21
好的,下面是一个C语言的程序示例,可以实现上述要求:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义销售便条结构体
typedef struct {
int salesman_id; // 销售员编号
int product_id; // 产品编号
float sales; // 销售额
} SalesNote;
// 定义二维数组保存每个销售员每种产品的销售额
float sales[4][5] = {0.0f};
// 定义一维数组保存每种产品的总销售额
float total_sales[5] = {0.0f};
// 定义销售员结构体
typedef struct {
int salesman_id; // 销售员编号
float sales; // 销售额
int rank; // 排名
} Salesman;
// 定义销售员数组
Salesman salesman[4];
// 比较函数,用于排序
int cmp(const void* a, const void* b) {
Salesman *sa = (Salesman*)a;
Salesman *sb = (Salesman*)b;
if (sa->sales < sb->sales) {
return 1;
}
else if (sa->sales > sb->sales) {
return -1;
}
else {
return 0;
}
}
int main() {
SalesNote notes[20]; // 定义销售便条数组
int count = 0; // 销售便条数量
// 读入销售便条信息
while (scanf("%d%d%f", ¬es[count].salesman_id, ¬es[count].product_id, ¬es[count].sales) == 3) {
sales[notes[count].salesman_id - 1][notes[count].product_id - 1] += notes[count].sales;
total_sales[notes[count].product_id - 1] += notes[count].sales;
count++;
}
// 计算每个销售员的销售总额
for (int i = 0; i < 4; i++) {
salesman[i].salesman_id = i + 1;
for (int j = 0; j < 5; j++) {
salesman[i].sales += sales[i][j];
}
}
// 对销售员按销售额进行排序,并输出排名
qsort(salesman, 4, sizeof(Salesman), cmp);
for (int i = 0; i < 4; i++) {
salesman[i].rank = i + 1;
printf("销售员%d 销售额:%.2f 排名:%d\n", salesman[i].salesman_id, salesman[i].sales, salesman[i].rank);
}
// 对产品按销售额进行排序,并输出销售额和排名
for (int i = 0; i < 5; i++) {
for (int j = i + 1; j < 5; j++) {
if (total_sales[i] < total_sales[j]) {
float temp = total_sales[i];
total_sales[i] = total_sales[j];
total_sales[j] = temp;
int temp_id = i + 1;
i = j + 1;
j = temp_id - 1;
}
}
}
for (int i = 0; i < 5; i++) {
printf("产品%d 销售额:%.2f 排名:%d\n", i + 1, total_sales[i], i + 1);
}
// 输出统计报表
printf("销售员/产品\t1\t2\t3\t4\t5\t总计\n");
for (int i = 0; i < 4; i++) {
printf("销售员%d\t", i + 1);
float total = 0.0f;
for (int j = 0; j < 5; j++) {
printf("%.2f\t", sales[i][j]);
total += sales[i][j];
}
printf("%.2f\n", total);
}
printf("总计\t");
for (int i = 0; i < 5; i++) {
printf("%.2f\t", total_sales[i]);
}
printf("\n");
return 0;
}
```
这个程序首先定义了一个销售便条结构体,用于存储每个销售员每种产品的销售额。定义了两个数组,一个二维数组用于保存每个销售员每种产品的销售额,一个一维数组用于保存每种产品的总销售额。然后读入所有的销售便条信息,计算每个销售员每种产品的销售额和每种产品的总销售额。接着,对每个销售员按销售额进行排序,并输出排名。对每种产品按销售额进行排序,并输出排名。最后,输出统计报表,包括每个销售员每种产品的销售额和每种产品的总销售额。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)