实现输入10个学生5门课的成绩完成下列要求

题目描述

C语言实现输入 10 个学生 5 门课的成绩,分别用函数实现下列功能:

①计算每个学生的平均分;

②计算每门课的平均分;

③找出所有 50 个分数中最高的分数所对应的学生和课程;

④计算平均分方差

案例代码

#include <stdio.h>

void calculateStudentAverage(float scores[][5], float studentAvg[], int numStudents)
{
    for (int i = 0; i < numStudents; i++)
    {
        float sum = 0;
        for (int j = 0; j < 5; j++)
        {
            sum += scores[i][j];
        }
        studentAvg[i] = sum / 5;
    }
}

void calculateCourseAverage(float scores[][5], float courseAvg[])
{
    for (int i = 0; i < 5; i++)
    {
        float sum = 0;
        for (int j = 0; j < 10; j++)
        {
            sum += scores[j][i];
        }
        courseAvg[i] = sum / 10;
    }
}

void findHighestScore(float scores[][5], int *studentIndex, int *courseIndex)
{
    float highestScore = scores[0][0];
    *studentIndex = 0;
    *courseIndex = 0;

    for (int i = 0; i < 10; i++)
    {
        for (int j = 0; j < 5; j++)
        {
            if (scores[i][j] > highestScore)
            {
                highestScore = scores[i][j];
                *studentIndex = i;
                *courseIndex = j;
            }
        }
    }
}

float calculateVariance(float scores[][5], float studentAvg[], float courseAvg[])
{
    float variance = 0;

    for (int i = 0; i < 10; i++)
    {
        for (int j = 0; j < 5; j++)
        {
            variance += (scores[i][j] - studentAvg[i]) * (scores[i][j] - studentAvg[i]);
        }
    }

    for (int i = 0; i < 5; i++)
    {
        for (int j = 0; j < 10; j++)
        {
            variance += (scores[j][i] - courseAvg[i]) * (scores[j][i] - courseAvg[i]);
        }
    }

    return variance / 50;
}

int main()
{
    float scores[10][5];
    float studentAvg[10];
    float courseAvg[5];

    printf("请输入10个学生5门课的成绩:\n");
    for (int i = 0; i < 10; i++)
    {
        for (int j = 0; j < 5; j++)
        {
            scanf("%f", &scores[i][j]);
        }
    }

    calculateStudentAverage(scores, studentAvg, 10);
    calculateCourseAverage(scores, courseAvg);

    printf("每个学生的平均分为:\n");
    for (int i = 0; i < 10; i++)
    {
        printf("学生%d的平均分为%.2f\n", i + 1, studentAvg[i]);
    }

    printf("每门课的平均分为:\n");
    for (int i = 0; i < 5; i++)
    {
        printf("第%d门课的平均分为%.2f\n", i + 1, courseAvg[i]);
    }

    int studentIndex, courseIndex;
    findHighestScore(scores, &studentIndex, &courseIndex);
    printf("最高分数所对应的学生和课程为:学生%d,课程%d\n", studentIndex + 1, courseIndex + 1);

    float variance = calculateVariance(scores, studentAvg, courseAvg);
    printf("平均分方差为:%.2f\n", variance);

    return 0;
}

实现说明:

  1. 创建函数 calculateStudentAverage,用于计算每个学生的平均分。使用双重循环遍历学生成绩数组,并将每个学生的成绩相加后除以5得到平均分。
  2. 创建函数 calculateCourseAverage,用于计算每门课的平均分。使用双重循环遍历学生成绩数组,并将每门课的成绩相加后除以10得到平均分。
  3. 创建函数 findHighestScore,用于找出所有50个分数中最高的分数所对应的学生和课程。使用双重循环遍历学生成绩数组,比较每个成绩与当前最高分数,如果更高则更新最高分数和对应的学生和课程索引。
  4. 创建函数 calculateVariance,用于计算平均分方差。使用双重循环遍历学生成绩数组,分别计算每个学生的成绩与平均分的差的平方和每门课的成绩与平均分的差的平方,然后将两者相加并除以50得到平均分方差。
  5. 在 main 函数中,声明并初始化学生成绩数组,然后依次调用上述函数,并输出结果。使用 scanf 输入学生成绩。
  6. 最后,输出每个学生的平均分、每门课的平均分、最高分数所对应的学生和课程、平均分方差。
© 版权声明
THE END
喜欢就支持一下吧
点赞9赞赏 分享