c-按对角线右下方向打印2D阵列



试图对角打印2D阵列,从右到下,我发现的其他解决方案正朝着相反的方向

我试图实现的目标示例:

输入:

0 1 2 3
1 2 3 4
2 3 4 5
3 4 5 6

预期输出:

0 2 4 6
1 3 5
2 4
3

(和另一侧1 3 5, 2 4, 3(

设法用打印对角线

for (x=0; x<12; x++) {
printf("%d ", arr[x][x])
}

但不确定如何将其复制为多个,以下尝试是不正确的

for (x=0; x<12; x++) {
for (y=0;y<x+1;y++) {
printf("%d ", arr[x][y]);
}
printf("n");
}

下面的C程序满足您的要求。试着理解索引。

int n, i, j, k;
int arr[5][5] = {
0, 1, 2, 3, 4,
1, 2, 3, 4, 5,
2, 3, 4, 5, 6,
3, 4, 5, 6, 7,
4, 5, 6, 7, 8
};
n = 5;
for (k = 0; k < n; k++) {
int ind = 0;
for (i = k; i < n; i++) {
printf("%d ", arr[i][ind++]);
}
printf("n");
}

以下程序的输出:

0 2 4 6 8 
1 3 5 7 
2 4 6 
3 5 
4 

您可以更改数组的大小和n的值,这将适用于您想要的n*n数组。

最新更新