定义一个包含5个教师成员的结构体数组,教师信息包括职工号、姓名和工资。要求从键盘输入所有教师的信息,并设计一个sort函数实现结构体数组按教师工资由少到多排序。目前,已编辑完成main函数,请编程实现input函数、output函数和sort函数,分别实现教师信息的录入、输出与排序。
时间: 2024-01-22 19:20:26 浏览: 71
使用结构体数组,利用函数实现按学生学号和姓名的查询操作.c
下面是实现题目要求的代码:
```c
#include<stdio.h>
#include<string.h>
#define MAX 5
struct Teacher {
char id[10];
char name[20];
float salary;
};
void input(struct Teacher *teachers, int n);
void output(struct Teacher *teachers, int n);
void sort(struct Teacher *teachers, int n);
int main() {
struct Teacher teachers[MAX];
input(teachers, MAX);
sort(teachers, MAX);
output(teachers, MAX);
return 0;
}
void input(struct Teacher *teachers, int n) {
for (int i = 0; i < n; i++) {
printf("请输入第%d名教师的信息:\n", i+1);
printf("职工号:");
scanf("%s", teachers[i].id);
printf("姓名:");
scanf("%s", teachers[i].name);
printf("工资:");
scanf("%f", &teachers[i].salary);
}
}
void output(struct Teacher *teachers, int n) {
for (int i = 0; i < n; i++) {
printf("职工号:%s,姓名:%s,工资:%.2f\n", teachers[i].id, teachers[i].name, teachers[i].salary);
}
}
void sort(struct Teacher *teachers, int n) {
struct Teacher temp;
for (int i = 0; i < n-1; i++) {
for (int j = 0; j < n-i-1; j++) {
if (teachers[j].salary > teachers[j+1].salary) {
temp = teachers[j];
teachers[j] = teachers[j+1];
teachers[j+1] = temp;
}
}
}
}
```
在这个程序中,我们定义了一个结构体 `Teacher` 来表示每个教师的信息,包括职工号、姓名和工资。然后我们定义了三个函数 `input`、`output` 和 `sort` 分别实现输入、输出和排序功能。在 `main` 函数中,我们首先调用 `input` 函数输入所有教师的信息,然后调用 `sort` 函数按照工资从小到大排序,最后调用 `output` 函数输出排序后的教师信息。
在 `sort` 函数中,我们使用了冒泡排序算法,对工资进行比较,从而实现按照工资从小到大排序的功能。
阅读全文