这个星期,我的课程进行了一次旋转,并且是本书中未找到的教材。我使用Visual Studio 2010,该项目是从键盘获取5个数字并获得平均值,但我必须使用带有.h
头文件和相应.cpp
文件的函数来接收信用。这就是我到目前为止所拥有的
Main.cpp的
#include <iostream>
#include "average.h"
using namespace std;
const int numbersinput=5;
int main ()
{
int numbers,sum,avg;
cout << "Hello, please enter 5 numbers you would like to see the average for." << endl;
for (int i = 0; i != numbersinput; ++i)
{
cin >> numbers;
sum += numbers;
}
int average(int sum);
cout << avg;
system ("PAUSE");
return 0;
}
名为average.h的.h头文件
#include <iostream>
using namespace std;
int average(int);
和另一个名为average.cpp的.cpp文件
#include <iostream>
#include "average.h"
using namespace std;
const int numbersinput=5;
int avg;
int average(int sum)
{
avg = sum /numbersinput;
return avg;
}
我可以获得成功的构建,但在输入第一个数字并输入后,我收到此错误。
运行时检查失败#3 - 变量&#39;总和&#39;正在使用没有 被初始化。
我没有到这里来的是什么?
答案 0 :(得分:0)
在开始使用0
添加总和之前,您可能希望将总和初始化为+=
:
而不是int numbers,sum,avg;
您将拥有int sum = 0;
等。
答案 1 :(得分:0)
更改此行:
int numbers,sum,avg;
要:
int numbers=0;
int sum=0;
int avg=0;
这给出了变量值 - 在它们被初始化(给定值)之前它们是未定义的,这意味着它们可以等于任何值。通过初始化它们,您可以在给出总和时为它们添加一个数字。
编辑以下行:
int average(int sum);
cout << avg;
要:
cout << average(sum);
int average(int sum)
的函数声明的调用方式与声明的方式不同。整数是不必要的。在我编辑的代码中,您可以看到返回的值(average
)已打印出来,而不是在未使用的情况下保留。
另外,作为一般提示,尽量不要给变量赋予相同的名称。尝试将函数变量sum
称为sumToAverage
,或者将sum
中的main
称为total
。选择不同的变量名称是个好主意,这样你就不会感到困惑。
答案 2 :(得分:0)
你说的是:
sum += numbers
但是你还没有初始化sum
,所以它会有一些随机值在堆栈上。将您的sum
声明更改为:
int sum = 0;
此外,您正在使用全局变量将信息传递给函数,这不是一个好主意。摆脱avg
变量并将average
更改为:
int average(int sum, int numberofvalues)
{
int avg = sum / numberofvalues;
return avg;
}
你也在main的主体中重新声明了average
,你不需要像在标题中那样做。然后,你可以通过说:
int avg = average(sum, numbersinput);
现在,main
将如下所示:
int main ()
{
int sum=0;
cout << "Hello, please enter 5 numbers you would like to see the average for." << endl;
for (int i = 0; i != numbersinput; ++i)
{
int number;
cin >> number;
sum += number;
}
int avg = average(sum, numbersinput);
cout << avg;
system ("PAUSE");
return 0;
}
哦,不要将using namespace std
放在头文件中!