解题思路:  

定义学生类(然后初始化N个<100),

每个类有属性 :学号,姓名、三科成绩 :string num,name、 vector容器



注意事项:   

参考代码:

#include <iostream>

#include <vector>

using namespace std;

class student

{

public:

    string num, name;

    vector<int>v;

    student() { };

    ~student() { };


//1、 输入 学生数据

    void input()  

    {   

        int n = 0;

        cin >> this->num >> this->name;

        for (int i = 0; i < 3; i++)

        {

            cin >> n;

            this->v.push_back(n);

        }

    }

//2、 输出 学生数据 

    void output()

    {

        cout << this->num << ' ' << this->name;

        for(vector<int>:: iterator it=this->v.begin(); it!=this->v.end(); it++)

        cout << ' ' << *it;

    }

//3、 返回该学生,成绩总和

    int sum()

    {

        int sum2 = 0;

        for (vector<int>:: iterator it = this->v.begin();  it != this->v.end(); it++)

        sum2 += *it;


        return sum2;

    }

};

//4、 输出 每门课 平均分

void average(student *s, const int n)

{

   /* 指针偏移后,再次使用要复位,否则 内存溢出

    方法一 :记录偏移量 : 指针++,也变量n++,复位 :“ p -= n”

    方法二 :备份 指针 : 复位 :“p = tempS” */

      student* tempS = s;  

      int sum = 0;


     for (int i = 0; i < 3; i++) // 每门学科

    {

        for (int j = 0; j < n; j++) // 的所有学生

       {

            sum += s->v.at(i);

            s++;

       }

       s = tempS;   // 指针复位( 否则 内存溢出 )


       sum /= n;     // 每门课 的平均值

       cout << sum << ' ';

        sum = 0;

    }

     cout << endl;

 }


//5、 返回 总分最高分学生 下标

int max(student* s, const int n)

{

    int sum = 0, temp = 0, max = 0;

    for (int i = 0; i < n; i++) // 每个学生

    {

        if (s->sum() > temp)

        max = i; // 更新最高分 学生类 数组下标

        temp = s->sum();

        s++;

    }

    return max;

}


int main()

{

    int n;

    student s[100];  // 初始化 100个类 数组

    cin >> n;

    for (int i = 0; i < n; i++)

        s[i].input();                  // 输入 n个 学生数据


    average(s, n);                   // 输出 每门课 平均分


    int maxs = max(s, n);     // 输出 最高分学生 数据

    s[maxs].output();

    return 0;

}


点赞(0)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论