C语言结构体与冒泡排序:学生成绩排序实验
#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;
}
实验报告
实验目的:
- 掌握结构体的使用方法;
- 了解冒泡排序算法的原理和实现;
- 实践使用结构体和冒泡排序算法对学生成绩进行排序。
实验步骤:
- 定义一个结构体类型Student,包含两个成员变量id和score,分别表示学生的学号和成绩。
- 实现冒泡排序函数bubbleSort,该函数接受一个Student类型的数组和数组长度n作为参数。
- 在bubbleSort函数中使用两层循环,外层循环控制比较的轮数,内层循环进行相邻元素的比较和交换。
- 在主函数main中,首先通过用户输入获取学生的人数n。
- 声明一个长度为n的Student类型数组students,用于存储学生的信息。
- 使用循环依次获取每个学生的学号和成绩,并存储到students数组中。
- 调用bubbleSort函数对students数组按成绩从高到低进行排序。
- 使用循环遍历排序后的students数组,输出每个学生的学号和成绩。
实验结果:
假设用户输入的学生人数为3,学生1的学号为1001,成绩为90,学生2的学号为1002,成绩为80,学生3的学号为1003,成绩为85。 按成绩从高到低排序的结果为: 学号:1001,成绩:90 学号:1003,成绩:85 学号:1002,成绩:80
实验总结:
通过本次实验,我学会了使用结构体来存储和操作多个相关的数据项,以及使用冒泡排序算法对结构体数组按指定字段进行排序。结构体能够更好地组织数据,使得代码更加清晰和可读。冒泡排序是一种简单但效率较低的排序算法,通过多次比较和交换相邻元素的方式实现排序。实验中,我成功地将学生按成绩从高到低进行了排序,并输出了排序结果。通过这次实验,我对结构体和冒泡排序算法有了更深入的理解和掌握。
原文地址: https://www.cveoy.top/t/topic/pNQ8 著作权归作者所有。请勿转载和采集!