尝试对角打印二维数组,从右到下,我发现的其他解决方案是在相反的方向
我想要实现的目标的示例:
输入:
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 数组。
关于c - 右下对角打印二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58679570/