C++程序用于检查有多少学生的得分高于第一个学生


假设我们有n个学生在五门科目上的分数。第一个分数是Kamal的,还有n-1个其他学生的得分,每个学生有五门科目的得分。我们需要统计得分高于Kamal的学生人数。在这里,我们将定义一个名为students的类来加载每个学生的分数。该类有一个Input()函数用于输入,还有一个calculateTotalScore()函数用于根据给定的五门课的成绩计算学生的总分。

因此,如果输入类似于n = 4 scores = [[25,45,32,42,30],[22,25,41,18,21],[37,42,48,45,25],[36,48,35,40,30]],则输出将为2,因为最后两个学生的总分高于Kamal。

为了解决这个问题,我们将遵循以下步骤:

  • s := 一个包含n个Student类型对象的数组

  • for 初始化 i := 0,当 i < n,更新(i增加1),执行

    • 将scores[i]的所有分数加载到s[i]中

  • kamal_sc := s[0]的总分

  • count := 0

  • for 初始化 i := 1,当 i < n,更新(i增加1),执行

    • total := s[i]的总分

    • 如果 total > kamal_sc,则

      • (count增加1)

  • 返回 count

示例

让我们看下面的实现来更好地理解:

#include <iostream>
#include <vector>
using namespace std;
class Student{
   public:
    int score[5];
    void input(vector<int> v){
        for(int i = 0; i < 5; i++)
            score[i] = v[i];
    }
    int calculateTotalScore(){
        int res = 0;
        for(int i = 0; i < 5; i++)
            res += score[i];
        return res;
    }
};
int main(){
    int n = 4;
    vector<vector<int>> scores = {{25,45,32,42,30},{22,25,41,18,21},{37,42,48,45,25},{36,48,35,40,30}};
    Student *s = new Student[n];
    for(int i = 0; i < n; i++){
        s[i].input(scores[i]);
    }
    int kamal_sc = s[0].calculateTotalScore();
    int count = 0;
    for(int i = 1; i < n; i++){
        int total = s[i].calculateTotalScore();
        if(total > kamal_sc){
            count++;
        }
    }
    cout << count;
}

输入

4, {{25,45,32,42,30}, {22,25,41,18,21}, {37,42,48,45,25}, {36,48,35,40,30}}

输出

2

更新于: 2021年10月7日

698 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告