用c语言定义一个包含5个教师成员的结构体数组,教师信息包括职工号、姓名和工资。要求从键盘输入所有教师的信息,并设计一个sort函数实现结构体数组按教师工资由少到多排序。目前,已编辑完成main函数,请编程实现input函数、output函数和sort函数,分别实现教师信息的录入、输出与排序。
时间: 2024-02-11 15:04:17 浏览: 27
好的,下面是用C语言实现这个程序的代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义教师结构体
struct Teacher {
int id;
char name[20];
int salary;
};
// 输入教师信息
void input(struct Teacher* teachers, int n) {
for (int i = 0; i < n; i++) {
printf("请输入第%d位教师的职工号、姓名和工资:", i + 1);
scanf("%d %s %d", &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,姓名:%s,工资:%d\n", teachers[i].id, teachers[i].name, teachers[i].salary);
}
}
// 比较函数,按工资从低到高排序
int cmp(const void* a, const void* b) {
struct Teacher* pa = (struct Teacher*)a;
struct Teacher* pb = (struct Teacher*)b;
return pa->salary - pb->salary;
}
// 对教师数组进行排序
void sort(struct Teacher* teachers, int n) {
qsort(teachers, n, sizeof(struct Teacher), cmp);
}
int main() {
const int N = 5; // 教师人数
struct Teacher teachers[N]; // 定义教师结构体数组
input(teachers, N); // 输入教师信息
sort(teachers, N); // 对教师结构体数组排序
output(teachers, N); // 输出教师信息
return 0;
}
```
示例输入:
```
请输入第1位教师的职工号、姓名和工资:101 张三 5000
请输入第2位教师的职工号、姓名和工资:102 李四 4800
请输入第3位教师的职工号、姓名和工资:103 王五 5500
请输入第4位教师的职工号、姓名和工资:104 赵六 4300
请输入第5位教师的职工号、姓名和工资:105 钱七 6000
```
示例输出:
```
职工号:104,姓名:赵六,工资:4300
职工号:102,姓名:李四,工资:4800
职工号:101,姓名:张三,工资:5000
职工号:103,姓名:王五,工资:5500
职工号:105,姓名:钱七,工资:6000
```