C语言结构体应用:学生成绩排序实战教程
C语言结构体应用:学生成绩排序
本教程将使用C语言结构体实现学生成绩排序功能,通过键盘输入学生姓名和成绩,并按成绩由高到低排序输出。我们将使用冒泡排序算法来完成排序操作。本教程将提供完整的代码示例和详细解释,帮助你理解C语言结构体应用及排序算法的实现。
问题描述
对某班学生成绩排序。从键盘依次输入6个学生的姓名和成绩并保存,然后分别按学生成绩由高到低顺序输出学生姓名和成绩。
输入形式
aaa 50
bbb 70
ccc 65
ddd 90
eee 60
fff 100
输出形式
fff#100
ddd#90
bbb#70
ccc#65
eee#60
aaa#50
(注意:其中"#"号代表空格)
代码实现
#include <stdio.h>
#include <string.h>
struct Student {
char name[20];
int score;
};
int main() {
struct Student students[6];
// 输入学生姓名和成绩
for (int i = 0; i < 6; i++) {
scanf("%s %d", students[i].name, &students[i].score);
}
// 冒泡排序,按学生成绩由高到低排序
for (int i = 0; i < 6; i++) {
for (int j = 0; j < 6 - 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;
}
}
}
// 输出学生姓名和成绩
for (int i = 0; i < 6; i++) {
printf("%s#%d\n", students[i].name, students[i].score);
}
return 0;
}
输入示例
aaa 50
bbb 70
ccc 65
ddd 90
eee 60
fff 100输出示例
fff#100
ddd#90
bbb#70
ccc#65
eee#60
aaa#50代码解释
- 结构体定义: 使用
struct Student定义了一个结构体,包含name和score成员,分别存储学生姓名和成绩。 - 数据输入: 使用
scanf函数从键盘输入 6 个学生的姓名和成绩,并存入students数组中。 - 冒泡排序: 使用两层循环实现冒泡排序,将成绩从高到低排序。外层循环控制排序轮数,内层循环遍历数组,比较相邻两个元素的成绩,如果前一个元素的成绩小于后一个元素,则交换两个元素。
- 数据输出: 使用
printf函数输出排序后的学生姓名和成绩,并使用#号分隔姓名和成绩。
总结
本教程演示了使用 C语言 结构体和冒泡排序算法实现学生成绩排序功能。你可以根据需要修改代码中学生的数量和排序规则。
原文地址: https://www.cveoy.top/t/topic/pxFL 著作权归作者所有。请勿转载和采集!