用C语言中结构体按下面要求写一段代码:有4名学生,每个学生包括学号、姓名、成绩、编写一个C程序,要求按学生成绩由高到低进行排序。
时间: 2024-03-12 17:45:16 浏览: 96
好的,以下是用C语言中结构体实现按学生成绩由高到低排序的代码:
```c
#include <stdio.h>
#include <string.h>
#define MAX_STUDENT_NUM 4 // 最大学生数
#define MAX_NAME_LEN 20 // 最大姓名长度
// 定义学生结构体
struct Student {
int id; // 学生学号
char name[MAX_NAME_LEN + 1]; // 学生姓名
float score; // 学生成绩
};
// 主函数
int main() {
struct Student students[MAX_STUDENT_NUM] = {
{101, "Tom", 87.5},
{102, "Jerry", 92.0},
{103, "Mike", 78.5},
{104, "Amy", 95.0}
}; // 定义学生数组并初始化
// 冒泡排序,按学生成绩由高到低排序
for (int i = 0; i < MAX_STUDENT_NUM - 1; i++) {
for (int j = 0; j < MAX_STUDENT_NUM - i - 1; j++) {
if (students[j].score < students[j + 1].score) {
// 交换两个学生的位置
struct Student temp = students[j];
students[j] = students[j + 1];
students[j + 1] = temp;
}
}
}
// 输出排序后的学生信息
printf("按学生成绩由高到低排序后的学生信息如下:\n");
for (int i = 0; i < MAX_STUDENT_NUM; i++) {
printf("学号:%d,姓名:%s,成绩:%.2f\n",
students[i].id, students[i].name, students[i].score);
}
return 0;
}
```
在上述代码中,我们首先定义了一个结构体 `Student`,用来存储每个学生的学号、姓名和成绩。然后定义了一个学生数组 `students`,并初始化了4个学生的信息。在主函数中,我们使用冒泡排序算法,按学生成绩由高到低排序。最后,输出排序后的学生信息。
阅读全文