如何通过从用户获取Array的元素来初始化2d数组?
#include <iostream>
using namepace std;
int main()
{
int row, col;
int arr[][];
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
cout << "Elements of Array :" << ' ';
cin >> arr[i][j];
}
}
return 0;
}
答案 0 :(得分:1)
与c#不同,c ++不能用变量初始化数组;价值必须得到解决。 与任何语言相关的问题一样,总有一种方法可以绕过这个问题。 在这种情况下,最好的方法是使用指针并创建自己的动态数组。
#include <iostream>
using namespace std;
int main()
{
int row, col;
cout << "Number of rows : ";
cin >> row;
cout << "Number of columns : ";
cin >> col;
//init the pointer array
int **arr =new int*[row] ;
for (int i = 0; i < row; i++)
{
arr[i] = new int[col];// init the columns for each row
for (int j = 0; j < col; j++)
{
cout << "Enter value for row " << i << " column " << j << " : ";
cin >> arr[i][j];
}
}
cout << "Elements of Array :" << endl;
for (int i = 0; i < row; i++)
{
for (int j = 0; j < col; j++)
{
cout << arr[i][j] << " ";
}
}
cout << endl;
return 0;
}
答案 1 :(得分:0)
以这种方式初始化时,必须指定2D数组的边界。
使用int arr[][]
替换int arr[row][col]
可以解决您的问题,假设行数和列数可用。
以下代码可能会有所帮助:
#include <iostream>
using namespace std;
int main()
{
int row, col;
cout << "Number of rows : ";
cin >> row;
cout << "Number of columns : ";
cin >> col;
int arr[row][col];
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
cout << "Enter value for row " << i << " column " << j << " : ";
cin >> arr[i][j];
}
}
cout << "Elements of Array :" << endl;
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
cout << arr[i][j] << " ";
}
cout << endl;
}
return 0;
}