用c++写代码创建一个结构体ST,成员有num(学号),name(姓名),score(成绩),从键盘输入N个人员信息,按score(成绩)降序输出每个学生的记录,在main函数中输入数据,在另一个函数中排序并输出。
时间: 2023-06-13 17:03:24 浏览: 49
以下是使用C语言实现该功能的代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义结构体
typedef struct {
int num;
char name[20];
float score;
} ST;
// 排序函数
void sort(ST *s, int n) {
int i, j;
ST tmp;
for (i = 0; i < n - 1; i++) {
for (j = i + 1; j < n; j++) {
if (s[i].score < s[j].score) {
tmp = s[i];
s[i] = s[j];
s[j] = tmp;
}
}
}
}
int main() {
int n, i;
printf("请输入学生人数:");
scanf("%d", &n);
// 动态分配结构体数组内存
ST *s = (ST*) malloc(n * sizeof(ST));
// 从键盘输入学生信息
for (i = 0; i < n; i++) {
printf("请输入第%d个学生的学号、姓名、成绩:", i + 1);
scanf("%d %s %f", &s[i].num, s[i].name, &s[i].score);
}
// 调用排序函数
sort(s, n);
// 按照成绩降序输出学生信息
printf("按照成绩降序输出学生信息:\n");
for (i = 0; i < n; i++) {
printf("学号:%d 姓名:%s 成绩:%.2f\n", s[i].num, s[i].name, s[i].score);
}
// 释放内存
free(s);
return 0;
}
```
运行结果示例:
```
请输入学生人数:3
请输入第1个学生的学号、姓名、成绩:1001 Tom 90.5
请输入第2个学生的学号、姓名、成绩:1002 Jack 80.5
请输入第3个学生的学号、姓名、成绩:1003 Lily 85.0
按照成绩降序输出学生信息:
学号:1001 姓名:Tom 成绩:90.50
学号:1003 姓名:Lily 成绩:85.00
学号:1002 姓名:Jack 成绩:80.50
```
阅读全文