【发布时间】:2017-03-31 04:35:13
【问题描述】:
我正在尝试制作一个程序,该程序从用户那里接收 4 个学生姓名和每个学生的 3 个考试成绩。在显示每个名称及其 3 个测试分数时,我遇到了问题。 例如,如果我有 John、Bob、Michael 和 Mary,则所有 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;
}
}
}
第一个函数工作正常,但第二个函数的输出有问题。有什么建议么?谢谢。
【问题讨论】:
-
每次通过内部循环都会覆盖相同的 3 个分数。您没有每个学生的单独分数。
-
因为你每次都会覆盖测试分数[j]。这具有最后输入的值。
-
您的 testScores 仅包含上次更新的成绩。您可以创建一个具有 name 和 testScore[3] 的结构。
-
为什么你的
Student类有一个名称数组?每个学生都应该有一个Student对象。它应该只有一个name成员,以及该学生的一系列分数。 -
你的函数名是倒序的。通常
setXXX用于给某物赋值,getXXX用于检索值。
标签: c++ arrays function for-loop nested-loops