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

输入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日

悬赏问题

  • ¥50 资源管理器无法使用且一直崩溃重启
  • ¥15 用sql语句完成下列问题
  • ¥50 yalmip+Gurobi 求解线性规划
  • ¥15 微信开发者工具/云函数/数据库
  • ¥15 如何导出数据库中的表格
  • ¥15 Torch not compiled with CUDA enabled
  • ¥15 三种节点编号优化算法比较
  • ¥15 比特币ord程序wallet_constructor.rs文件支持一次性铸造1000个代币,并将它们分配到40个UTXO上(每个UTXO上分配25个代币),并设置找零地址
  • ¥115 用Java解决探地雷达dzt文件的解析过程
  • ¥20 有关神经网络这道(b)determine the parameters of neural network