定义一个包含5个教师成员的结构体数组,教师信息包括职工号、姓名和工资。要求从键盘输入所有教师的信息,并设计一个sort函数实现结构体数组按教师工资由少到多排序。目前,已编辑完成main函数,请编程实现input函数、output函数和sort函数,分别实现教师信息的录入、输出与排序。c语言
时间: 2023-12-06 16:45:29 浏览: 102
下面是一个示例代码,实现了输入、输出和排序功能:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct Teacher {
int id; // 教师职工号
char name[20]; // 教师姓名
float salary; // 教师工资
};
void input(struct Teacher *teachers, int n) {
for (int i = 0; i < n; i++) {
printf("请输入第%d个教师的职工号、姓名和工资:", i + 1);
scanf("%d %s %f", &teachers[i].id, teachers[i].name, &teachers[i].salary);
}
}
void output(struct Teacher *teachers, int n) {
for (int i = 0; i < n; i++) {
printf("第%d个教师的职工号、姓名和工资分别为:%d %s %.2f\n",
i + 1, teachers[i].id, teachers[i].name, teachers[i].salary);
}
}
int cmp(const void *a, const void *b) {
// 比较函数,按工资由少到多排序
struct Teacher *t1 = (struct Teacher *)a;
struct Teacher *t2 = (struct Teacher *)b;
if (t1->salary < t2->salary) {
return -1;
} else if (t1->salary > t2->salary) {
return 1;
} else {
return 0;
}
}
void sort(struct Teacher *teachers, int n) {
// 使用标准库函数qsort进行排序
qsort(teachers, n, sizeof(struct Teacher), cmp);
}
int main() {
struct Teacher teachers[5];
input(teachers, 5);
sort(teachers, 5);
output(teachers, 5);
return 0;
}
```
在示例代码中,定义了一个`struct Teacher`的结构体,包含了教师的职工号、姓名和工资三个字段。`input`函数通过循环调用`scanf`函数,从键盘输入所有教师的信息。`output`函数遍历数组,并使用`printf`函数输出教师的信息。`cmp`函数是一个比较函数,用于在`sort`函数中进行排序。`sort`函数使用标准库函数`qsort`进行排序。在`main`函数中,首先定义了一个包含5个教师成员的结构体数组,然后依次调用`input`、`sort`和`output`函数,完成输入、排序和输出操作。
阅读全文