11.10

发布时间 2023-12-17 17:17:39作者: 刘梦磊

6、输入10个学生5门课的成绩,分别用函数实现下列功能:(选做)

(1)     计算每个学生的平均分。

(2)     计算每门课的平均分。

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

(4)     计算平均分方差:

            ,其中,xi为某一个学生的平均分。

程序代码:

#include <stdio.h>

#include <math.h>

#define STUDENTS 10

#define COURSES 5

 

float studentAverage(float scores[STUDENTS][COURSES], int student) {

    float sum = 0;

    for (int i = 0; i < COURSES; i++) {

        sum += scores[student][i];

    }

    return sum / COURSES;

}

 

float courseAverage(float scores[STUDENTS][COURSES], int course) {

    float sum = 0;

    for (int i = 0; i < STUDENTS; i++) {

        sum += scores[i][course];

    }

    return sum / STUDENTS;

}

 

void highestScore(float scores[STUDENTS][COURSES]) {

    float maxScore = scores[0][0];

    int maxStudent, maxCourse;

    for (int i = 0; i < STUDENTS; i++) {

        for (int j = 0; j < COURSES; j++) {

            if (scores[i][j] > maxScore) {

                maxScore = scores[i][j];

                maxStudent = i;

                maxCourse = j;

            }

        }

    }

    printf("最高分数所对应的学生为: 学生%d\n", maxStudent + 1);

    printf("最高分数所对应的课程为: 课程%d\n", maxCourse + 1);

}

 

float averageVariance(float scores[STUDENTS][COURSES]) {

    float sum = 0;

    float average = 0;

    for (int i = 0; i < STUDENTS; i++) {

        for (int j = 0; j < COURSES; j++) {

            sum += scores[i][j];

        }

    }

    average = sum / (STUDENTS * COURSES);

 

    float variance = 0;

    for (int i = 0; i < STUDENTS; i++) {

        for (int j = 0; j < COURSES; j++) {

            variance += pow(scores[i][j] - average, 2);

        }

    }

    return variance / (STUDENTS * COURSES);

}

 

int main() {

    float scores[STUDENTS][COURSES];

 

    printf("请输入10个学生的5门课成绩:\n");

    for (int i = 0; i < STUDENTS; i++) {

        printf("请输入第%d个学生的成绩:\n", i + 1);

        for (int j = 0; j < COURSES; j++) {

            scanf("%f", &scores[i][j]);

        }

    }

 

    // 计算每个学生的平均分

    printf("每个学生的平均分分别为:\n");

    for (int i = 0; i < STUDENTS; i++) {

        float avg = studentAverage(scores, i);

        printf("学生%d的平均分: %.2f\n", i + 1, avg);

    }

    printf("\n");

 

    // 计算每门课的平均分

    printf("每门课的平均分分别为:\n");

    for (int i = 0; i < COURSES; i++) {

        float avg = courseAverage(scores, i);

        printf("课程%d的平均分: %.2f\n", i + 1, avg);

    }

    printf("\n");

 

    // 找出最高分数所对应的学生和课程

    highestScore(scores);

    printf("\n");

 

    // 计算平均分方差

    float variance = averageVariance(scores);

    printf("平均分方差为: %.2f\n", variance);

 

    return 0;

}