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 &lt; 6; i++) {
    scanf(&#34;%s %d&#34;, students[i].name, &amp;students[i].score);
}

// 冒泡排序,按学生成绩由高到低排序
for (int i = 0; i &lt; 6; i++) {
    for (int j = 0; j &lt; 6 - i - 1; j++) {
        if (students[j].score &lt; students[j+1].score) {
            struct Student temp = students[j];
            students[j] = students[j+1];
            students[j+1] = temp;
        }
    }
}

// 输出学生姓名和成绩
for (int i = 0; i &lt; 6; i++) {
    printf(&#34;%s#%d\n&#34;, 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 定义了一个结构体,包含 namescore 成员,分别存储学生姓名和成绩。
  • 数据输入: 使用 scanf 函数从键盘输入 6 个学生的姓名和成绩,并存入 students 数组中。
  • 冒泡排序: 使用两层循环实现冒泡排序,将成绩从高到低排序。外层循环控制排序轮数,内层循环遍历数组,比较相邻两个元素的成绩,如果前一个元素的成绩小于后一个元素,则交换两个元素。
  • 数据输出: 使用 printf 函数输出排序后的学生姓名和成绩,并使用 # 号分隔姓名和成绩。

总结

本教程演示了使用 C语言 结构体和冒泡排序算法实现学生成绩排序功能。你可以根据需要修改代码中学生的数量和排序规则。


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

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