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

每日一题——第七十九题

输入十个学生的5门成绩,分别用函数实现下列功能

①计算每位学生的平均分 ②计算每门课的平均分 ③找出50个分数中最高的分数所对应的学生和课程

#include <stdio.h>  

#define STUDENTS 10  
#define SUBJECTS 5  

// 定义学生结构体  
typedef struct {
    int scores[SUBJECTS];
    float average;
} Student;

// 计算每个学生的平均分  
void calculateStudentAverage(Student students[], int numStudents) {
    for (int i = 0; i < numStudents; i++) {
        float sum = 0;
        for (int j = 0; j < SUBJECTS; j++) {
            sum += students[i].scores[j];
        }
        students[i].average = sum / SUBJECTS;
    }
}

// 计算每门课的平均分  
void calculateSubjectAverage(Student students[], int numStudents, float subjectAverages[]) {
    for (int j = 0; j < SUBJECTS; j++) {
        float sum = 0;
        for (int i = 0; i < numStudents; i++) {
            sum += students[i].scores[j];
        }
        subjectAverages[j] = sum / numStudents;
    }
}

// 找出50个分数中最高的分数所对应的学生和课程  
void findHighestScore(Student students[], int numStudents, int* studentIndex, int* subjectIndex) {
    int maxIndex = 0, maxSubjectIndex = 0;
    int maxScore = students[0].scores[0];

    for (int i = 0; i < numStudents; i++) {
        for (int j = 0; j < SUBJECTS; j++) {
            if (students[i].scores[j] > maxScore) {
                maxScore = students[i].scores[j];
                maxIndex = i;
                maxSubjectIndex = j;
            }
        }
    }

    *studentIndex = maxIndex;
    *subjectIndex = maxSubjectIndex;
}

int main() {
    Student students[STUDENTS];
    float subjectAverages[SUBJECTS];
    int highestStudentIndex, highestSubjectIndex;

    // 用户输入每个学生的成绩  
    printf("请输入%d个学生的%d门成绩:\n", STUDENTS, SUBJECTS);
    for (int i = 0; i < STUDENTS; i++) {
        printf("学生%d的成绩:", i + 1);
        for (int j = 0; j < SUBJECTS; j++) {
            scanf("%d", &students[i].scores[j]);
        }
    }

    // 计算每个学生的平均分  
    calculateStudentAverage(students, STUDENTS);

    // 计算每门课的平均分  
    calculateSubjectAverage(students, STUDENTS, subjectAverages);

    // 找出最高的分数及其对应的学生和课程  
    findHighestScore(students, STUDENTS, &highestStudentIndex, &highestSubjectIndex);

    // 输出结果  
    printf("学生平均分:\n");
    for (int i = 0; i < STUDENTS; i++) {
        printf("学生%d: %.2f\n", i + 1, students[i].average);
    }

    printf("科目平均分:\n");
    for (int j = 0; j < SUBJECTS; j++) {
        printf("科目%d: %.2f\n", j + 1, subjectAverages[j]);
    }

    printf("最高分:%d(学生%d,科目%d)\n", students[highestStudentIndex].scores[highestSubjectIndex], highestStudentIndex + 1, highestSubjectIndex + 1);

    return 0;
}

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

相关文章:

  • [JAVAEE] 面试题(四) - 多线程下使用ArrayList涉及到的线程安全问题及解决
  • 【Java语言】String类
  • 微服务各组件整合
  • JVM 中的完整 GC 流程
  • 建筑施工特种作业人员安全生产知识试题
  • 【mysql】使用宝塔面板在云服务器上安装MySQL数据库并实现远程连接
  • How to install mysql 5.7 with podman in Ubuntu 24.04
  • 三十二、初识Gin框架
  • chunqiude
  • JS设计模式之“幽灵工厂” - 抽象工厂模式
  • 【贪心算法】区间类算法题(整数替换、俄罗斯套娃、重构字符串等、C++)
  • OpenAI API: Can I remove the line break from the response with a parameter?
  • OpenCVSharp中基本绘图函数
  • Qt Dialog退出事件
  • Golang使用Quic-Go开源库实现Quic客户端和服务端
  • Unity接入飞行遥杆外设
  • 【BES2500x系列 -- RTX5操作系统】Battery模块 -- 创建电池检测定时器 --(十五)
  • 利用Spring Boot的@Transactional注解保障业务数据的一致性
  • 2024 【Delphi 12】苹果ios开发环境配置(五星保姆级)
  • UML(ER) manual book
  • 深入理解Java序列化:从入门到实践
  • c++ std::advance 使用简介
  • MySQL库表设计规范
  • IMU助力预测青少年脊柱侧弯
  • Apache DolphinScheduler大规模任务调度系统对大数据实时Flink任务支持
  • TikTok运营:IP地址如何影响TikTok的内容运营?