#include <stdio.h>

typedef struct { int id; int score; } Student;

void bubbleSort(Student arr[], int n) { for (int i = 0; i < n - 1; i++) { for (int j = 0; j < n - i - 1; j++) { if (arr[j].score < arr[j + 1].score) { // 交换两个学生的位置 Student temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } }

int main() { int n; printf("请输入学生人数:"); scanf("%d", &n);

Student students[n];
for (int i = 0; i < n; i++) {
    printf("请输入第%d个学生的学号和成绩:", i + 1);
    scanf("%d%d", &students[i].id, &students[i].score);
}

bubbleSort(students, n);

printf("按成绩从高到低排序的结果为:\n");
for (int i = 0; i < n; i++) {
    printf("学号:%d,成绩:%d\n", students[i].id, students[i].score);
}

return 0;

}

实验报告

实验目的:

  • 掌握结构体的使用方法;
  • 了解冒泡排序算法的原理和实现;
  • 实践使用结构体和冒泡排序算法对学生成绩进行排序。

实验步骤:

  1. 定义一个结构体类型Student,包含两个成员变量id和score,分别表示学生的学号和成绩。
  2. 实现冒泡排序函数bubbleSort,该函数接受一个Student类型的数组和数组长度n作为参数。
  3. 在bubbleSort函数中使用两层循环,外层循环控制比较的轮数,内层循环进行相邻元素的比较和交换。
  4. 在主函数main中,首先通过用户输入获取学生的人数n。
  5. 声明一个长度为n的Student类型数组students,用于存储学生的信息。
  6. 使用循环依次获取每个学生的学号和成绩,并存储到students数组中。
  7. 调用bubbleSort函数对students数组按成绩从高到低进行排序。
  8. 使用循环遍历排序后的students数组,输出每个学生的学号和成绩。

实验结果:

假设用户输入的学生人数为3,学生1的学号为1001,成绩为90,学生2的学号为1002,成绩为80,学生3的学号为1003,成绩为85。 按成绩从高到低排序的结果为: 学号:1001,成绩:90 学号:1003,成绩:85 学号:1002,成绩:80

实验总结:

通过本次实验,我学会了使用结构体来存储和操作多个相关的数据项,以及使用冒泡排序算法对结构体数组按指定字段进行排序。结构体能够更好地组织数据,使得代码更加清晰和可读。冒泡排序是一种简单但效率较低的排序算法,通过多次比较和交换相邻元素的方式实现排序。实验中,我成功地将学生按成绩从高到低进行了排序,并输出了排序结果。通过这次实验,我对结构体和冒泡排序算法有了更深入的理解和掌握。

C语言结构体与冒泡排序:学生成绩排序实验

原文地址: https://www.cveoy.top/t/topic/pNQ8 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录