C++ 尝试在函数C+;中添加数组的整数失败+;
我正在写一个程序来计算一个学生的5分 我已成功读取名为C++ 尝试在函数C+;中添加数组的整数失败+;,c++,arrays,function,oop,object,C++,Arrays,Function,Oop,Object,我正在写一个程序来计算一个学生的5分 我已成功读取名为input()的对象函数中的5个整数,该函数将值分配给名为scores的私有int[]数组 但是,我无法从calculateTotalScore()函数返回总和 当我尝试运行Eclipse编译器时,使用我为分数选择的5个整数,它给出的输出如下: 40 60 80 90 22 它输出我给它的数字,但它不做任何整数加法 #include <iostream> using namespace std; class Student {
input()
的对象函数中的5个整数,该函数将值分配给名为scores
的私有int[]
数组
但是,我无法从calculateTotalScore()
函数返回总和
当我尝试运行Eclipse编译器时,使用我为分数
选择的5个整数,它给出的输出如下:
40 60 80 90 22
它输出我给它的数字,但它不做任何整数加法
#include <iostream>
using namespace std;
class Student {
private:
int scores[5];
int sum;
public:
void input();
int calculateTotalScore();
};
void Student::input() {
for (int i = 0; i < sizeof(scores) / sizeof(int); i++) {
int grade;
cout << "Enter your score" << endl;
cin >> grade;
scores[i] = grade;
}
//checking that the array are being stored.
for (int i=0; i < sizeof(scores) / sizeof(int);i++){
cout <<scores[i] << " " << flush;
}
cout << endl;
}
// returns the sum of the students scores
int Student::calculateTotalScore(){
for (int i=0; i < sizeof(scores) / sizeof(int);i++){
sum += scores[i];
}
return sum;
//Check that the numbers are adding up correctly
cout << sum;
}
int main() {
Student Kristen;
Kristen.input();
Kristen.calculateTotalScore();
return 0;
}
#包括
使用名称空间std;
班级学生{
私人:
智力得分[5];
整数和;
公众:
无效输入();
int calculateTotalScore();
};
void Student::input(){
对于(int i=0;i cout您看到的输出来自input()
中的cout
语句,这就是为什么您会看到您键入的所有数字
calculateTotalScore()
不会向cout
输出任何内容,因为它在到达代码中的该点之前返回
s。无法访问cout
语句。编译器应就此向您发出警告
calculateTotalScore()
根本不应该尝试输出到cout
。最好通过main()
来完成,其中calculateTotalScore()
向其返回一个值:
int Student::calculateTotalScore(){
int sum = 0;
for (int i=0; i < sizeof(scores) / sizeof(int);i++){
sum += scores[i];
}
return sum;
}
int main(){
...
cout << Kristen.calculateTotalScore();
...
}
在真实世界中,学生可能有不同的分数,所以考虑使用<代码> STD::向量<代码>,而不是固定的<代码> int []/Cord>。
< P>你所看到的输出是从<代码> CUT< /COD>语句中的<代码> INSUTPUTE()/代码>,这就是为什么你看到所有你输入的数字。
int Student::calculateTotalScore(){
for (int i=0; i < sizeof(scores) / sizeof(int);i++){
sum += scores[i];
}
return sum; <- Code returns to previous call
//Check that the numbers are adding up correctly
cout << sum; <- Code never reaches this point as it always returns
calculateTotalScore()
不会向cout
输出任何内容,因为它在到达代码中的该点之前返回
s。无法访问cout
语句。编译器应就此向您发出警告
calculateTotalScore()
根本不应该尝试输出到cout
。最好通过main()
来完成,其中calculateTotalScore()
向其返回一个值:
int Student::calculateTotalScore(){
int sum = 0;
for (int i=0; i < sizeof(scores) / sizeof(int);i++){
sum += scores[i];
}
return sum;
}
int main(){
...
cout << Kristen.calculateTotalScore();
...
}
在真实世界中,学生可能有不同的分数,所以考虑使用<代码> STD::向量< /代码>,而不是固定的<代码> INT[]/COD> .< /P> <代码> int学生::CaltualToTaleSCORE()
int Student::calculateTotalScore(){
for (int i=0; i < sizeof(scores) / sizeof(int);i++){
sum += scores[i];
}
return sum; <- Code returns to previous call
//Check that the numbers are adding up correctly
cout << sum; <- Code never reaches this point as it always returns
对于(int i=0;iint学生::calculateTotalScore(){
对于(int i=0;i 返回总和;在打印总和之前,您将从calculateTotalScore
返回。投票以打字错误结束。突击测验:在您尝试添加所有内容之前,sum
的初始值是多少?是0吗?是42吗?它是生命、宇宙和所有内容的答案吗?并且sum
不应成为Stud的成员ent
,但是一个局部变量calculateTotalScore
。这是在调试器中单步执行代码时很容易发现的事情之一。@SamVarshavchik好的,我已将“sum”初始化为0,现在它给了我正确的输出。在打印sum之前,您将从calculateTotalScore
返回。Voting以打字错误结束。突击测验:在你尝试添加所有内容之前,sum
的初始值是多少?它是0吗?它是42吗?它是生命、宇宙和一切的答案吗?而且sum
不应该是学生的成员,而应该是calculateTotalScore
的局部变量。这是在调试器中分步执行代码是很容易的。@SamVarshavchik好的,我已经将“sum”初始化为0,现在它给了我正确的输出。