Saniow 2021-09-02 09:48 采纳率: 87.5%
浏览 994
已结题

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

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

  • 写回答

2条回答 默认 最新

  • qzjhjxj 2021-09-02 10:21
    关注

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

    #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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 9月2日
  • 已采纳回答 9月2日
  • 创建了问题 9月2日

悬赏问题

  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 LiBeAs的带隙等于0.997eV,计算阴离子的N和P
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 来真人,不要ai!matlab有关常微分方程的问题求解决,
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算