请使用C语言
时间: 2024-02-28 08:57:20 浏览: 16
好的,以下是使用 C 语言的代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_N 10
#define MAX_NAME_LEN 20
struct Student {
char id[13]; // 学号,由12个数字组成的字符串,末尾为 '\0'
char name[MAX_NAME_LEN + 1]; // 姓名,长度小于20的非空字符串,末尾为 '\0'
int math; // 高等数学成绩,[0, 100] 区间内的整数
int c; // C语言程序设计成绩,[0, 100] 区间内的整数
};
int cmp(const struct Student *a, const struct Student *b) {
return (b->c - a->c); // 按照 C 语言成绩降序排列
}
int main() {
int n;
struct Student stu[MAX_N];
scanf("%d", &n);
for (int i = 0; i < n; ++i) {
scanf("%s %s %d %d", stu[i].id, stu[i].name, &stu[i].math, &stu[i].c);
}
qsort(stu, n, sizeof(struct Student), (int (*)(const void *, const void *))cmp);
for (int i = 0; i < n; ++i) {
printf("%s %s %d %d\n", stu[i].id, stu[i].name, stu[i].math, stu[i].c);
}
return 0;
}
```
与 C++ 版本的代码实现类似,我们也使用结构体 `Student` 来存储每个学生的信息,并使用 `qsort` 函数进行排序。
由于 C 语言的 `qsort` 函数需要传入一个比较函数指针,我们需要定义一个比较函数 `cmp`,用来按照 C 语言成绩降序排列。
最后,我们按照题目要求输出排序后的学生信息即可。
希望这个 C 语言版本的代码能够满足你的需求,如果还有其他问题,请继续提问。