用C ++包含多个文件

时间:2014-02-27 22:11:17

标签: c++ header-files

这个星期,我的课程进行了一次旋转,并且是本书中未找到的教材。我使用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;正在使用没有   被初始化。

我没有到这里来的是什么?

3 个答案:

答案 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放在头文件中!