2017-02-26 47 views
1

其实我打算用户打印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]它告诉('y'是未定义的)。为什么'y'是未定义的? 和善地有人告诉我如何添加数字对角线...?

回答

2

那么arr[x]是一个数组,其衰减为指向其第一个元素的指针。所以当您打印arr[x]时,您实际上正在打印&arr[x][0]

我假设你只想打印x

cout << "Row: " << x << ... 
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; 
} 

而且,你说你要打印的行索引,要么是xy,但不arr[x][y]这是在指数[x][y]的元素。

1

'y'未定义,因为它超出了范围。

斜着添加数字,你可以这样做:

sum = 0; 
for (int i = 0; i < 3; ++i) 
    sum += arr[i][i];