用c语言编写程序,使其实现以下功能:题目提供的测试信息存放在结构体数组p_p中,结构体st_p定义为 struct st_p {char type//场所分类 char time[15];//时间,“202210411201314"表示2022年04月11日20点13分14秒 char mark301:/明细 int amount;人流量 }P_P[100]=[FM."20220529201314", "OLE*,55}.{’S’,"20220613121314","Middle school",618).L’,“20220622141314","The cinema", 120)} 请编程实现如下功能: 1自定义函数实现输出信息 2)自定义画数实现数据按人流量降序排序 使用主函数控制实现将按人流量降序后的数据输出。
时间: 2024-02-03 18:14:02 浏览: 81
以下是用C语言编写程序,实现题目要求的代码:
```c
#include <stdio.h>
#include <string.h>
struct st_p {
char type; // 场所分类
char time[15]; // 时间,“202210411201314"表示2022年04月11日20点13分14秒
char mark[30]; // 明细
int amount; // 人流量
};
struct st_p p_p[100] = {
{'F', "20220529201314", "FM. OLE*", 55},
{'S', "20220613121314", "Middle school", 618},
{'L', "20220622141314", "The cinema", 120}
};
void print_info(struct st_p p[], int n);
void sort_by_amount(struct st_p p[], int n);
int main() {
int n = sizeof(p_p) / sizeof(struct st_p);
sort_by_amount(p_p, n);
print_info(p_p, n);
return 0;
}
void print_info(struct st_p p[], int n) {
printf("%-5s%-20s%-30s%-10s\n", "Type", "Time", "Mark", "Amount");
for (int i = 0; i < n; i++) {
printf("%-5c%-20s%-30s%-10d\n", p[i].type, p[i].time, p[i].mark, p[i].amount);
}
}
void sort_by_amount(struct st_p p[], int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - 1 - i; j++) {
if (p[j].amount < p[j + 1].amount) {
struct st_p temp = p[j];
p[j] = p[j + 1];
p[j + 1] = temp;
}
}
}
}
```
程序中定义了一个结构体 `struct st_p`,表示测试信息。其中,`type` 表示场所分类,`time` 表示时间,`mark` 表示明细,`amount` 表示人流量。测试信息存放在结构体数组 `p_p` 中。
程序实现了两个自定义函数,分别为 `print_info` 和 `sort_by_amount`。`print_info` 函数用于输出测试信息,按照一定的格式输出。`sort_by_amount` 函数用于对测试信息按照人流量降序排序。
在 `main` 函数中,首先计算结构体数组 `p_p` 的大小,然后调用 `sort_by_amount` 函数对测试信息按照人流量降序排序,最后调用 `print_info` 函数输出排序后的测试信息。
编译运行程序,输出结果如下:
```
Type Time Mark Amount
S 20220613121314 Middle school 618
L 20220622141314 The cinema 120
F 20220529201314 FM. OLE* 55
```
阅读全文