从右斜下方打印二维数组

问题描述 投票:0回答:1

[尝试对角打印二维数组,从右向下向下,我发现的其他解决方案都朝相反的方向

我想要实现的示例:

输入: 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 arrays matrix diagonal
1个回答
0
投票

以下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数组。

© www.soinside.com 2019 - 2024. All rights reserved.