在数组中查找偶数

Finding evens in an array

本文关键字:查找 数组      更新时间:2023-10-16

我正在编写一个程序,该程序由一个函数组成,该函数接受二维数组,c0unts数组中的偶数并返回该数组中的偶数数量。 该函数没有返回我想要的值,即 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;
}

检查那些循环,我想你想增加变量++i和++j,而不是width++和length++。

通过这样一个微不足道的例子,我想逐步执行代码并在调试器中查找问题将非常简单......您是否使用带有调试器的 IDE 编写此内容?

您在此处没有对循环变量("i"和"j")应用增量。"长度"和"宽度"正在增加(由于长度++,宽度++),而"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++;
        }
    }
}