C语言基础 --输入5个学生的信息(包括学号、姓名、成绩),要求按照成绩的高低顺序输出各学生的信息,要求用结构体数组定义学生的信息

原理:

  • 使用结构体定义每个学生的信息,包括学号、姓名和成绩。
  • 使用结构体数组来存储所有学生信息。
  • 采用排序算法,按照学生的成绩对结构体数组进行从大到小排序。
  • 输出排序后的结构体数组,即为按照成绩从高到低输出各学生信息。

流程:

  1. 定义结构体 student 包含学号、姓名和成绩属性。
  2. 定义结构体数组 stu_arr 存储所有学生的信息。
  3. 输入每个学生的信息。
  4. 使用排序算法(如冒泡排序等),按照学生的成绩对结构体数组进行从大到小排序。
  5. 输出排序后的结构体数组,即为按照成绩从高到低输出各学生信息

重点: 本题重点在于对结构体数组的了解和对冒泡排序算法的应用

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

// 定义学生信息结构体
struct student
{
    char id[10];   // 学号
    char name[20]; // 姓名
    int score;     // 成绩
};

// 交换两个结构体变量
void swap(struct student *a, struct student *b)
{
    struct student temp;
    temp = *a;
    *a = *b;
    *b = temp;
}

int main()
{
    int i, j;
    struct student stu[5], temp;
    printf("请输入5个学生的信息(学号,姓名,成绩):\n");
    for (i = 0; i < 5; i++)
    {
        scanf("%s %s %d", &stu[i].id, &stu[i].name, &stu[i].score);
    }

    // 冒泡排序
    for (i = 0; i < 4; i++)
    {
        for (j = 0; j < 4 - i; j++)
        {
            if (stu[j].score < stu[j + 1].score)
            { // 按成绩从大到小排序
                swap(&stu[j], &stu[j + 1]);
            }
        }
    }

    // 输出排序后的学生信息
    printf("\n按成绩排名结果:\n");
    for (i = 0; i < 5; i++)
    {
        printf("学号:%s\t姓名:%s\t成绩:%d\n", stu[i].id, stu[i].name, stu[i].score);
    }
    return 0;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值