c - 右下对角打印二维数组

标签 c arrays matrix diagonal

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

我想要实现的目标的示例:

输入:

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/

相关文章:

c - C 中的段错误导致代码有时运行但有时不运行

c - a 和 b 的值是多少?

arrays - 如何检查 AutoHotKey 中的数组中是否包含字符串

c - 是否有必要调用 pthread_join()

c - 解析c中不带空格的命令行参数

c++ - 如何在 C++ 中递归查找最大元素的索引?

arrays - R-外带矩阵

java - 如何从多个列表中获取笛卡尔积?

c - 分而治之矩阵的就地转置

c# - 通过与任何其他矩阵具有最大 N 相似性的矩阵生成所有路径