我正在编写一个程序,该程序由一个接收二维数组的函数组成,在数组中输入均衡并返回该数组中的均值。该函数没有返回我想要的值,即6.有时我得到0,有时我得到一个像2147483646的数字。
#include <iostream>
#include <array>
using namespace std;
const int MaxNumOfRows = 3;
const int MaxNumOfColumns = 2;
int Even(int A[MaxNumOfRows][MaxNumOfColumns], int length, int width)
{
int NumnberOfEvens = 0;
int i;
int j;
for (i = 0; i < length; length++)
{
for (j = 0; j < width; width++)
{
if (A[i][j] % 2 == 0)
{
NumnberOfEvens++;
}
}
}
return NumnberOfEvens;
}
int main()
{
//int output = 0;
int A[MaxNumOfRows][MaxNumOfColumns] =
{
{2,2},{2,4},{2,2}
};
Even(A, MaxNumOfRows, MaxNumOfColumns);
//output = Even(A, MaxNumOfRows, MaxNumOfColumns);
cout << Even(A, MaxNumOfRows, MaxNumOfColumns) << endl;
system("pause");
return 0;
}
答案 0 :(得分:0)
检查那些for循环,我想你想要增加变量++ i和++ j而不是width ++和length ++。
通过这个简单的例子,我想通过执行代码并在调试器中找到问题将非常简单......你是否使用带调试器的IDE编写这个?
答案 1 :(得分:0)
这里没有对循环变量('i'和'j')应用增量。 'length'和'width'正在增加(由于长度++,宽度++),而'i'和'j'则不是。因此,循环不会停止,因此也就是垃圾值。
for (i = 0; i < length; length++)
{
for (j = 0; j < width; width++)
{
if (A[i][j] % 2 == 0)
{
NumnberOfEvens++;
}
}
}
这必须有效。
for (i = 0; i < length; i++)
{
for (j = 0; j < width; j++)
{
if (A[i][j] % 2 == 0)
{
NumnberOfEvens++;
}
}
}