给定N个学生的基本信息,包括学号(由12个数字组成的字符串)、姓名(长度小于20的不包含空白字符的非空字符串)、高等数学成绩、C语言程序设计成绩,成绩均为[0,100]区间内的整数,要求根据C语言的成绩,对学生名单进行降序排列。用c预言
时间: 2023-12-30 20:14:22 浏览: 79
C语言程序设计-对长度为8个字符的字符串,将8个字符按降序排列;例如:原来的字符串为CEAedcab,排序后输出为edcbaE
5星 · 资源好评率100%
好的,针对你的问题,我来给你提供一个简单的解决方案。
首先,我们可以定义一个结构体来存储每个学生的基本信息,包括学号、姓名、高等数学成绩和C语言程序设计成绩:
```c
typedef struct {
char id[13]; // 学号
char name[20]; // 姓名
int math_score; // 高等数学成绩
int c_score; // C语言程序设计成绩
} Student;
```
接下来,我们可以定义一个比较函数,用来在排序时比较两个学生的C语言成绩:
```c
int cmp(const void *a, const void *b) {
Student *s1 = (Student *)a;
Student *s2 = (Student *)b;
return s2->c_score - s1->c_score;
}
```
最后,我们可以读入所有学生信息,然后调用`qsort`函数进行排序:
```c
int main() {
int n;
scanf("%d", &n); // 读入学生数量
Student students[n];
for (int i = 0; i < n; i++) {
scanf("%s %s %d %d", students[i].id, students[i].name, &students[i].math_score, &students[i].c_score);
}
qsort(students, n, sizeof(Student), cmp); // 排序
// 输出排序后的学生名单
for (int i = 0; i < n; i++) {
printf("%s %s %d %d\n", students[i].id, students[i].name, students[i].math_score, students[i].c_score);
}
return 0;
}
```
这样,我们就可以根据C语言成绩对学生名单进行降序排列了。
阅读全文