我正在尝试将2D数组中的每个数字加倍。例如,array1中的值将变为{2,4,6}{4,8,12}{6,12,18}。问题是我的代码将唯一的第一个数字加倍。有人可以给我一些指导吗?

#include <iostream>
#include <iomanip>

using namespace std;

const int N = 3;

int doubleValues(int arr[][N])
{
    for (int i = 0; i < N; i++)
    {
        arr[i][N] *= 2;

        for (int j = 0; j < N; j++)
        {
            arr[N][j] *= 2;
            return arr[i][j];
        }
    }
}

void showArray(int arr[][N])
{
    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < N; j++)
        {
            cout << setw(4) << arr[i][j] << " ";
        }

        cout << endl;
     }
}

int main()
{
    int array1 [N][N] = {
        { 1, 2, 3 } ,
        { 2, 4, 6 } ,
        { 3, 6, 9 }
    };

    int array2 [N][N] = {
        { 3, 4, 5 } ,
        { 6, 8, 10 } ,
        { 9, 12, 15 }
    };

    cout << "The values for array1 doubled are: \n";
    doubleValues(array1);
    showArray(array1);

    cout << "The values for array2 double are: \n";
    doubleValues(array2);
    showArray(array2);

    system("pause");
}

最佳答案

您的return arr[i][j]函数的内循环中有一个doubleValues。将第一个元素加倍后,您的函数将返回,而无需进行任何其他工作。

解决方案是删除此return语句。 (并将doubleValues更改为void函数,因为它不需要返回值。)

另外,您的doubleValues函数似乎还是在修改错误的元素。您对arr[i][N]arr[N][j]的访问都超出了声明的数组大小的范围。您可能应该在循环中修改arr[i][j]

关于c++ - 如何在二维数组中将值加倍? C++,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30719028/

10-09 08:10