用c语言写:要求输入一个班级10名同学的信息,每个学生都有学号、姓名和三门课程的成绩。请编写程序输入全班同学的信息,并且按第一门课程的成绩从小到大排序后输出
时间: 2023-11-27 09:49:34 浏览: 129
以下是用C语言实现输入一个班级10名同学信息,并按第一门课程成绩从小到大排序后输出的示例代码:
```
#include<stdio.h>
#include<string.h>
#define MAX_STUDENT_NUM 10
#define MAX_NAME_LEN 20
struct student {
char id[10];
char name[MAX_NAME_LEN];
int score[3];
};
void sort_by_first_score(struct student *stu_list, int num);
int main() {
struct student stu_list[MAX_STUDENT_NUM];
int i;
// 输入学生信息
for (i = 0; i < MAX_STUDENT_NUM; i++) {
printf("请输入第%d名同学的信息:\n", i+1);
printf("学号:");
scanf("%s", stu_list[i].id);
printf("姓名:");
scanf("%s", stu_list[i].name);
printf("三门课程的成绩:");
scanf("%d %d %d", &stu_list[i].score[0], &stu_list[i].score[1], &stu_list[i].score[2]);
}
// 按第一门课程成绩从小到大排序
sort_by_first_score(stu_list, MAX_STUDENT_NUM);
// 输出排序结果
printf("按第一门课程成绩从小到大排序的结果:\n");
for (i = 0; i < MAX_STUDENT_NUM; i++) {
printf("%s %s %d %d %d\n", stu_list[i].id, stu_list[i].name, stu_list[i].score[0], stu_list[i].score[1], stu_list[i].score[2]);
}
return 0;
}
void sort_by_first_score(struct student *stu_list, int num) {
int i, j;
struct student temp;
for (i = 0; i < num - 1; i++) {
for (j = i + 1; j < num; j++) {
if (stu_list[j].score[0] < stu_list[i].score[0]) {
temp = stu_list[i];
stu_list[i] = stu_list[j];
stu_list[j] = temp;
}
}
}
}
```
该程序使用了结构体来存储学生信息,使用一个数组来存储班级中所有学生的信息。输入学生信息时,使用循环多次输入,最终得到一个完整的班级的学生信息。排序函数使用双重循环来实现简单的选择排序算法,按第一门课程成绩从小到大排序。最后输出排序结果。