c语言使用结构体和共用体编写程序,输入n个学生的学号和成绩(有1位小数),按成绩从高到低排序输出,n小于50,学号小于10位。
时间: 2023-06-03 08:04:03 浏览: 155
好的,这是一个关于 C 语言编程的问题。我可以回答这个问题。下面是代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 50
#define MAX_ID_LEN 10
struct Student {
char id[MAX_ID_LEN + 1];
float score;
};
union Data {
struct Student student;
char buffer[sizeof(struct Student)];
};
int cmp(const void *a, const void *b) {
struct Student *s1 = (struct Student *)a;
struct Student *s2 = (struct Student *)b;
if (s1->score > s2->score) {
return -1;
} else if (s1->score < s2->score) {
return 1;
} else {
return strcmp(s1->id, s2->id);
}
}
int main() {
int n;
union Data data[N];
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%s %f", data[i].student.id, &data[i].student.score);
}
qsort(data, n, sizeof(union Data), cmp);
for (int i = 0; i < n; i++) {
printf("%s %.1f\n", data[i].student.id, data[i].student.score);
}
return 0;
}
```
这个程序使用结构体和共用体来存储学生的信息,然后使用快速排序算法按成绩从高到低排序,最后输出成绩排名。
阅读全文