我正在尝试将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/