定义一个包含5个教师成员的结构体数组,教师信息包括职工号、姓名和工资。要求从键盘输入所有教师的信息,并设计一个sort函数实现结构体数组按教师工资由少到多排序。目前,已编辑完成main函数,请编程实现input函数、output函数和sort函数,分别实现教师信息的录入、输出与排序。 /* @Filename: ex701.c @Author: Ju Chengdong @Version: 1.0 @Date: 2021-03-18 @Description: Salary Management System */ #include <stdio.h> #include <string.h> typedef struct teacher{ int id; // 职工号 char name[100]; // 姓名 int salary; // 工资 }teacher; const int NUM = 5; int main(){ void input(teacher *t, int n); void output(teacher *t, int n); void sort(teacher *t, int n); teacher t[NUM]; //教师数组 teacher *pt = t; input(pt, NUM); //为教师数组元素赋值 printf("Before sorting:\n"); output(pt, NUM); //排序前输出 sort(pt, NUM); //按工资排序 printf("After sorting:\n"); output(pt, NUM); //排序后输出 return 0; }
时间: 2024-01-30 14:04:18 浏览: 78
好的,以下是实现代码:
```c
#include <stdio.h>
#include <string.h>
typedef struct teacher {
int id; // 职工号
char name[100]; // 姓名
int salary; // 工资
} teacher;
void input(teacher *t, int n) {
for(int i = 0; i < n; i++) {
printf("请输入第%d个教师的职工号、姓名和工资(用空格分开):", i+1);
scanf("%d %s %d", &(t+i)->id, (t+i)->name, &(t+i)->salary);
}
}
void output(teacher *t, int n) {
printf("职工号\t姓名\t工资\n");
for(int i = 0; i < n; i++) {
printf("%d\t%s\t%d\n", (t+i)->id, (t+i)->name, (t+i)->salary);
}
}
void sort(teacher *t, int n) {
teacher temp;
for(int i = 0; i < n-1; i++) {
for(int j = 0; j < n-i-1; j++) {
if((t+j)->salary > (t+j+1)->salary) {
temp = *(t+j);
*(t+j) = *(t+j+1);
*(t+j+1) = temp;
}
}
}
}
int main() {
teacher t[NUM]; //教师数组
teacher *pt = t;
input(pt, NUM); //为教师数组元素赋值
printf("Before sorting:\n");
output(pt, NUM); //排序前输出
sort(pt, NUM); //按工资排序
printf("After sorting:\n");
output(pt, NUM); //排序后输出
return 0;
}
```
在这个代码中,我们同样定义了一个结构体`teacher`,包含了三个成员变量:职工号、姓名和工资。然后我们输入了所有教师的信息,并将其存储在一个结构体数组中。最后,我们使用冒泡排序对结构体数组进行排序,排序的方式是按照教师工资由少到多排序。最后,我们输出排序后的结果。
阅读全文