1. 一个班有10名同学,每名同学都有如下信息:学号,姓名,三门课程的成绩。请编写程序输入全班同学的信息,并且按第一门课程的成绩从小到大排序后输出。使用C语言,不用C++
时间: 2024-03-03 16:48:33 浏览: 89
以下是一个简单的 C 语言程序,可以实现你的需求:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_STUDENTS 10
#define MAX_NAME_LENGTH 20
struct Student {
int id;
char name[MAX_NAME_LENGTH];
int grades[3];
};
int compare(const void *s1, const void *s2) {
struct Student *a = (struct Student *) s1;
struct Student *b = (struct Student *) s2;
return a->grades[0] - b->grades[0];
}
int main() {
struct Student students[MAX_STUDENTS];
// 输入学生信息
for (int i = 0; i < MAX_STUDENTS; i++) {
printf("请输入第%d个学生的学号、姓名和三门课程的成绩(空格隔开):\n", i + 1);
scanf("%d %s %d %d %d", &students[i].id, students[i].name, &students[i].grades[0], &students[i].grades[1], &students[i].grades[2]);
}
// 按照第一门课程成绩排序
qsort(students, MAX_STUDENTS, sizeof(struct Student), compare);
// 输出排序后的学生信息
printf("按照第一门课程成绩从小到大排序后的学生信息如下:\n");
for (int i = 0; i < MAX_STUDENTS; i++) {
printf("%d %s %d %d %d\n", students[i].id, students[i].name, students[i].grades[0], students[i].grades[1], students[i].grades[2]);
}
return 0;
}
```
程序的逻辑比较简单,首先定义了一个 `struct Student` 结构体来存储每个学生的信息,包括学号、姓名和三门课程的成绩。然后使用一个数组 `students` 来存储全班同学的信息,数组大小为 `MAX_STUDENTS`。在主函数中,使用一个循环来依次输入每个学生的信息,输入完毕后调用 `qsort` 函数对学生信息按照第一门课程成绩从小到大排序。最后再次使用循环输出排序后的学生信息。
阅读全文