写一个 C 语言程序, 从键盘读入学生信息:学号、姓名、年龄、成绩,根据学生成绩从高到 低将学生信息输出。
时间: 2024-05-11 10:17:13 浏览: 13
好的,以下是一个简单的 C 语言程序,实现了从键盘读入学生信息,并根据学生成绩从高到低将学生信息输出:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义学生结构体
struct student {
char id[20]; // 学号
char name[20]; // 姓名
int age; // 年龄
float score; // 成绩
};
int main() {
int n, i, j;
struct student temp;
printf("请输入学生人数:");
scanf("%d", &n);
// 动态分配内存
struct student *stu = (struct student *)malloc(n * sizeof(struct student));
// 从键盘读入学生信息
for (i = 0; i < n; i++) {
printf("请输入第 %d 个学生的信息:\n", i + 1);
printf("学号:");
scanf("%s", stu[i].id);
printf("姓名:");
scanf("%s", stu[i].name);
printf("年龄:");
scanf("%d", &stu[i].age);
printf("成绩:");
scanf("%f", &stu[i].score);
}
// 对学生成绩进行排序
for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - i - 1; j++) {
if (stu[j].score < stu[j+1].score) {
temp = stu[j];
stu[j] = stu[j+1];
stu[j+1] = temp;
}
}
}
// 输出学生信息
printf("\n学生信息按成绩从高到低排序如下:\n");
for (i = 0; i < n; i++) {
printf("学号:%s\t姓名:%s\t年龄:%d\t成绩:%.2f\n", stu[i].id, stu[i].name, stu[i].age, stu[i].score);
}
// 释放内存
free(stu);
return 0;
}
```
程序运行结果如下:
```
请输入学生人数:3
请输入第 1 个学生的信息:
学号:1001
姓名:张三
年龄:18
成绩:88.5
请输入第 2 个学生的信息:
学号:1002
姓名:李四
年龄:19
成绩:92.0
请输入第 3 个学生的信息:
学号:1003
姓名:王五
年龄:20
成绩:85.0
学生信息按成绩从高到低排序如下:
学号:1002 姓名:李四 年龄:19 成绩:92.00
学号:1001 姓名:张三 年龄:18 成绩:88.50
学号:1003 姓名:王五 年龄:20 成绩:85.00
```