用c语言编写程序,有学生(姓名,班级,性别,成绩)和老师(姓名,单位,年龄,职称)的信息,请输入十个学生和教师的信息,分别按照教师年龄和学生入学成绩从大到小进行排序,最后按排序过后的顺序进行输出
时间: 2024-01-04 21:02:20 浏览: 164
c++ 这个程序实现了学生的信息录入和输出,
以下是示例代码,实现了输入十个学生和教师的信息,并按照教师年龄和学生入学成绩从大到小进行排序,最后按排序过后的顺序进行输出:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 学生结构体
typedef struct {
char name[20];
char class[10];
char gender[5];
float score;
} Student;
// 教师结构体
typedef struct {
char name[20];
char unit[50];
int age;
char title[20];
} Teacher;
// 比较函数:按教师年龄从大到小排序
int cmp_teacher_age_desc(const void *a, const void *b) {
return ((Teacher *)b)->age - ((Teacher *)a)->age;
}
// 比较函数:按学生入学成绩从大到小排序
int cmp_student_score_desc(const void *a, const void *b) {
return ((Student *)b)->score - ((Student *)a)->score > 0 ? 1 : -1;
}
int main() {
Teacher teachers[10];
Student students[10];
// 输入教师信息
printf("请输入十个教师的信息:\n");
for (int i = 0; i < 10; i++) {
printf("请输入第%d个教师的姓名:", i + 1);
scanf("%s", teachers[i].name);
printf("请输入第%d个教师的单位:", i + 1);
scanf("%s", teachers[i].unit);
printf("请输入第%d个教师的年龄:", i + 1);
scanf("%d", &teachers[i].age);
printf("请输入第%d个教师的职称:", i + 1);
scanf("%s", teachers[i].title);
}
// 输入学生信息
printf("请输入十个学生的信息:\n");
for (int i = 0; i < 10; i++) {
printf("请输入第%d个学生的姓名:", i + 1);
scanf("%s", students[i].name);
printf("请输入第%d个学生的班级:", i + 1);
scanf("%s", students[i].class);
printf("请输入第%d个学生的性别:", i + 1);
scanf("%s", students[i].gender);
printf("请输入第%d个学生的成绩:", i + 1);
scanf("%f", &students[i].score);
}
// 按教师年龄从大到小排序
qsort(teachers, 10, sizeof(Teacher), cmp_teacher_age_desc);
// 按学生入学成绩从大到小排序
qsort(students, 10, sizeof(Student), cmp_student_score_desc);
// 输出排序后的教师信息
printf("\n按教师年龄从大到小排序后的教师信息如下:\n");
for (int i = 0; i < 10; i++) {
printf("姓名:%s,单位:%s,年龄:%d,职称:%s\n", teachers[i].name, teachers[i].unit, teachers[i].age, teachers[i].title);
}
// 输出排序后的学生信息
printf("\n按学生入学成绩从大到小排序后的学生信息如下:\n");
for (int i = 0; i < 10; i++) {
printf("姓名:%s,班级:%s,性别:%s,成绩:%.2f\n", students[i].name, students[i].class, students[i].gender, students[i].score);
}
return 0;
}
```
阅读全文