顺序查找出现问题c++

img


为什么出错啊,代码如下


#include<iostream>
#include<string>
using namespace std;

class Student
{
public:
    void setName(string name)
    {
        m_name = name;
    }

    void setScore(int num)
    {
        m_score = num;
    }

    string getName()
    {
        return m_name;
    }

    int getScore()
    {
        return m_score;
    }

private:
    string m_name;
    int m_score;
};

int main()
{
    string name;
    int num,score,temp,max=0;
    Student arr[100];
    cin >> num;
    for (int i = 0; i < num; i++)
    {
        cin >> score >> name;
        arr[i].setScore(num);
        arr[i].setName(name);
        if (arr[i].getScore() > max)
        {
            max = arr[i].getScore();
            temp = i ;
        }
    }
    cout << arr[temp].getName() << endl;
    return 0;
}

自己测试是没问题的啊

目测是一些特殊情况导致的WA
我能想到的就是: 只有一个人,且这个人的分数是0分
这种情况下走下你的代码,temp就会是一个未知的数导致错误。两个解决办法,一个是temp初始化为0,一个是大于号改为大于等于