C++ 嵌套循环输出不正确

C++ Nested for loops incorrect output

本文关键字:不正确 输出 嵌套循环 C++      更新时间:2023-10-16

我正在尝试制作一个程序,该程序从用户那里接收每个学生的 4 个学生姓名和 3 个考试成绩。在显示每个名称及其 3 个测试分数时,我遇到了问题。例如,如果我有约翰、鲍勃、迈克尔和玛丽,则所有 4 名学生都会显示 Mary 的 3 个考试成绩。

这是我用于从用户那里获取数据的函数:

void Student::getName()
{
    for (int i = 0; i < 4; ++i)
    {
        cout << "Enter name: ";
        cin >> name[i];
        for (int j = 0; j < 3; j++)
        {
            cout << "Enter grade: ";
            cin >> testScores[j];
        }
    }
}

这是我用于显示数据的功能:

void Student::setName()
    {
        for (int i = 0; i < 4; ++i)
        {
            cout << "nName: " << name[i] << endl;
            for (int j =0; j <3; j++)
            {
                cout << "Grade: " << testScores[j] << endl;
            }
        }
    }

第一个函数工作正常,但我对第二个函数的输出有问题。有什么建议吗?谢谢。

testScores 创建一个 2D 数组而不是一个单一维度数组,否则您将用学生 1 的成绩覆盖学生 2 的成绩,而学生 2 的成绩又会被学生 3 的成绩覆盖,依此类推,只剩下学生 4 的成绩。

int testScores[4][3];

然后

取代

cin >> testScores[j];

cin >> testScores[i][j];

在第一个函数中。

取代

cout << "Grade: " << testScores[j] << endl;

cout << "Grade: " << testScores[i][j] << endl;