输入3个学生的4门课程的考试成绩,编写程序计算并输出每个学生的平均分和每门课程的平均分。

输入3个学生的4门课程的考试成绩,编写程序计算并输出每个学生的平均分和每门课程的平均分。救命!!!

这是上周写的,每位学生平均分,每门课目平均分,成绩最高的学生序号和课目,不及格学生序号和各门课成绩,供参考:

#include<iostream>
#include<string>
#include<time.h>
constexpr auto N = 3;  //3个学生;
constexpr auto M = 4;  //4门课程;
using namespace std;

typedef struct student {
    string   num; //学号
    string   name;//姓名
    float    score[M];//课目成绩
    float    avg; //每个学生4门课目平均分
}Student;

void Input_info(Student* stu);//手工信息录入,平均分/学生
void Init_data(Student* stu); //初始化函数,平均分/学生
void Hight_score(Student* stu);//成绩最高的学生序号和课目
void fail_score(Student* stu);//不及格学生序号和各门课成绩
void avg_score(Student* stu); //每课目平均分
void print(Student* stu);    //输出信息

int main()
{
    Student stu[N];
    srand((unsigned int)time(NULL));//生成随机数

    //Input_info(stu);
    Init_data(stu);
    print(stu);

    Hight_score(stu);
    fail_score(stu);
    avg_score(stu);
    
    return 0;
}

void Input_info(Student* stu)
{
    int i, j;
    cout << "输入" << N << "位学生学号、姓名及" << M << "门课目成绩" << endl;
    for (i = 0; i < N; i++) {
        cin >> stu[i].num >> stu[i].name;
        stu[i].avg = 0;
        for (j = 0; j < M; j++) {
            cin >> stu[i].score[j];
            stu[i].avg += stu[i].score[j];
        }
        stu[i].avg /= M;
    }
}

void Init_data(Student* stu)
{
    string nameseed = "ABCDEFGH";
    string numseed = "123456789";
    int i, j;
    for (i = 0; i < N; i++) {
        stu[i].num = "00000000";
        stu[i].num += numseed[i];
        stu[i].name = "student_";
        stu[i].name += nameseed[i];
        stu[i].avg = 0;
        for (j = 0; j < M; j++) {
            stu[i].score[j] = rand() % 61 + 40;
            stu[i].avg += stu[i].score[j];
        }
        stu[i].avg /= M;
    }
}
void Hight_score(Student* stu)
{
    int i, j;
    float max;
    cout << endl << "---成绩最高的学生---" << endl;
    cout << endl << " 学号\t\t课目" << endl << endl;
    for (j = 0; j < M; j++) {
        max = stu[0].score[j];
        for (i = 0; i < N; i++) {
            if (max < stu[i].score[j])
                max = stu[i].score[j];
        }
        for (i = 0; i < N; i++) {  //同一课目,最高分相同所有学生
            if (stu[i].score[j] == max)
                cout << stu[i].num << "\t" << "课目" << j + 1 << endl;
        }
    }
}


void fail_score(Student* stu)
{
    int i, j, k = 0;
    for (i = 0; i < N; i++) {
        for (j = 0; j < M; j++) {
            if (stu[i].score[j] < 60)
                break;
        }
        if (j < M) {
            if (k == 0) {
                cout << endl << "---不及格学生序号和各门课成绩---" << endl << endl;
                cout << " 学号\t\t" << "课目1\t" << "课目2\t" << "课目3\t" << "课目4" << endl << endl;
            }
            k++;
            cout << stu[i].num;
            for (j = 0; j < M; j++)
                cout << "\t" << stu[i].score[j];
            cout << endl;
        }
    }
    if (k == 0)
        cout << endl << "---无成绩不及格的学生---" << endl << endl;
}

void avg_score(Student* stu)
{
    int i, j;
    float avg;
    print(stu);
    cout << "各课目平均分:\t\t";
    for (j = 0; j < M; j++) {
        avg = 0;
        for (i = 0; i < N; i++) {
            avg += stu[i].score[j];
        }
        cout << "\t" << avg / N;
    }
    cout << endl << endl;
}

void print(Student* stu)
{
    int i, j;
    cout << endl << "学号\t\t" << "姓名\t\t" << "课目1\t" << "课目2\t"
         << "课目3\t" << "课目4\t" << "平均分" << endl << endl;
    for (i = 0; i < N; i++) {
        cout << stu[i].num << "\t" << stu[i].name;
        for (j = 0; j < M; j++)
            cout << "\t" << stu[i].score[j];
        cout << "\t" << stu[i].avg << endl;
    }
}

img

设计一个函数统计3个学生,每个学生4门课程的考试成绩,要求输出每个学生的总成绩,每个学生的平均成绩,3个学生的总平均成绩。-CSDN社区 设计一个函数统计3个学生,每个学生4门课程的考试成绩,要求输出每个学生的总成绩,每个学生的平均成绩,3个学生的总平均成绩。(贴 https://bbs.csdn.net/topics/398536672?list=71189765
参考这个,上边写的很全面