实际上我正在打算用户打印2d数组。然后按行添加数字。 我不知道如何打印行索引号。代码是:
int arr[3][3];
int sum = 0;
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
cin >> arr[i][j];
}
cout << endl;
for (int i = 0; i < 3; i++)
{
for (int j= 0; j < 3; j++)
cout<< arr[i][j]<<" ";
cout << endl;
}
for (int x = 0; x < 3; x++)
{
for (int y = 0; y < 3; y++)
sum += arr[x][y];
cout << "Row: " << arr[x] << "addition is:" << sum << endl;
sum = 0;
}
在第二行arr [x]打印地址。 如果我使用arr [x] [y]它会告诉(&#39; y&#39;未定义)。为什么&#39; y&#39;未定义? 亲切的告诉我如何对角添加数字...?
答案 0 :(得分:2)
好arr[x]
是一个数组,它衰减到指向其第一个元素的指针。因此,当您打印arr[x]
时,您实际上正在打印&arr[x][0]
。
我假设您只想打印x
:
cout << "Row: " << x << ...
答案 1 :(得分:1)
'y'未定义,因为它超出了它的范围。
要沿对角线添加数字,您可以执行以下操作:
sum = 0;
for (int i = 0; i < 3; ++i)
sum += arr[i][i];
答案 2 :(得分:0)
我建议你总是在循环上使用括号。此
for (int y = 0; y < 3; y++)
sum += arr[x][y];
cout << "Row: " << arr[x] << "addition is:" << sum << endl;
相当于
for (int y = 0; y < 3; y++) {
sum += arr[x][y];
}
cout << "Row: " << arr[x] << "addition is:" << sum << endl;
并且未声明循环y
之外。你可能想要
for (int y = 0; y < 3; y++) {
sum += arr[x][y];
cout << "Row: " << arr[x] << "addition is:" << sum << endl;
}
此外,您说要打印行索引,可以是x
或y
,而不是arr[x][y]
,它是索引[x][y]
的元素。< / p>