当前位置: 首页 > article >正文

C语言练习(19)

已知5个学生的4门课的成绩,要求求出每个学生的平均成绩,然后对平均成绩从高到低将各学生的成绩记录排序(成绩最高的学生排在数组最前面的行,成绩最低的学生排在数组最后面的行)。

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

// 定义学生结构体
typedef struct Student {
    float scores[4];  // 4门课的成绩
    float average;    // 平均成绩
} Student;

// 计算平均成绩的函数
void calculateAverage(Student* students, int num_students) {
    int i, j;
    for (i = 0; i < num_students; i++) {
        float sum = 0;
        for (j = 0; j < 4; j++) {
            sum += students[i].scores[j];
        }
        students[i].average = sum / 4;
    }
}

// 交换两个学生结构体的函数
void swapStudents(Student* a, Student* b) {
    Student temp = *a;
    *a = *b;
    *b = temp;
}

// 冒泡排序函数,按照平均成绩从高到低排序
void bubbleSort(Student* students, int num_students) {
    int i, j;
    for (i = 0; i < num_students - 1; i++) {
        for (j = 0; j < num_students - i - 1; j++) {
            if (students[j].average < students[j + 1].average) {
                swapStudents(&students[j], &students[j + 1]);
            }
        }
    }
}

int main() {
    Student students[5];  // 定义存储5个学生信息的数组
    int i, j;

    // 输入5个学生的4门课成绩
    printf("请依次输入5个学生的4门课成绩:\n");
    for (i = 0; i < 5; i++) {
        printf("学生 %d 的成绩:\n", i + 1);
        for (j = 0; j < 4; j++) {
            scanf_s("%f", &students[i].scores[j]);
        }
    }

    // 计算每个学生的平均成绩
    calculateAverage(students, 5);

    // 对学生成绩记录按照平均成绩从高到低排序
    bubbleSort(students, 5);

    // 输出排序后的学生成绩信息
    printf("按照平均成绩从高到低排序后的学生成绩信息:\n");
    for (i = 0; i < 5; i++) {
        printf("学生 %d 的平均成绩:%.2f,4门课成绩分别为:", i + 1, students[i].average);
        for (j = 0; j < 4; j++) {
            printf("%.2f ", students[i].scores[j]);
        }
        printf("\n");
    }

    return 0;
}


http://www.kler.cn/a/515094.html

相关文章:

  • 16_动态提示窗口_协程延时
  • Linux(LAMP)
  • 【LeetCode 刷题】栈与队列-队列的应用
  • STM32学习9---EXIT外部中断(理论)
  • JavaScript学习笔记(1)
  • 前端 window.print() 打印图片
  • 学习笔记——动态规划
  • Math Reference Notes: 反函数
  • 第一讲 方程组的几何解释——以列向量线性组合的角度看方程组
  • NIO | 什么是Java中的NIO —— 结合业务场景理解 NIO (一)
  • 【Day24 LeetCode】贪心Ⅱ
  • 数据分库分表和迁移方案
  • 利用ML.NET精准提取人名
  • PyQt5之QCalendarWidget
  • python-leetcode-逆波兰表达式求值
  • jenkins平台使用Login Theme、Customizable Header插件定制修改登陆页图片文字及首页标题
  • 【Let‘s do第四期】DIY液体流量检测仪
  • Apache Hive3定位表并更改其位置
  • 【计算机网络】NAT应用
  • 如何保护 Flask API 的安全性?
  • javaSE.浮点类型
  • 生成对抗网络(GAN)入门与编程实现
  • LeetCode:53. 最大子序和
  • 初始Transformer
  • C++ STL(8)map
  • 正则表达式的艺术:轻松驾驭 Python 的 re 库