c - c 中的矩阵和对角线任务

标签 c for-loop matrix diagonal

我有一个 n*n 维度的矩阵。对于给定的整数k,我必须从对角线打印元素。

enter image description here

从图片来看:对于 k=0,它必须打印一个 vector :1,12,23,34

我该怎么做?

最佳答案

一个简单的方法可以如下所示

#include <stdio.h>

#define N   4

int main(void) 
{
    int a[N][N] =
    {
        {  1,  2,  3,  4 },
        { 11, 12, 13, 14 },
        { 21, 22, 23, 24 },
        { 31, 32, 33, 34 }
    };

    int k; 

    printf( "Select a diagonal (%d, %d): ", -N, N );

    scanf( "%d", &k );

    if ( k < 0 )
    {
        for ( int i = -k, j = 0; i < N; i++, j++ )
        {
            printf( "%d ", a[i][j] );
        }
    }
    else
    {
        for ( int i = 0, j = k; j < N; i++, j++ )
        {
            printf( "%d ", a[i][j] );
        }
    }

    putchar( '\n' );

    return 0;
}

程序输出可能如下所示

Select a diagonal (-4, 4): 2
3 14 

Select a diagonal (-4, 4): -2
21 32

或者您可以使用一个循环来代替具有单独循环的 if-else 语句

int i = k < 0 ? -k : 0;
int j = k > 0 ? k : 0;

for ( ; i < N && j < N; i++, j++ )
{
    printf( "%d ", a[i][j] );
}

putchar( '\n' );

关于c - c 中的矩阵和对角线任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46798908/

相关文章:

c++ - 使用 CMake 混合 C 和 C++

c++ - 创建哈希表来存储某个指针的值

javascript - Node.js 代码被跳过 (for)

c - 我如何知道用户写了多少个相同的数字?

C: bool 矩阵和数组

C:将字符串读入动态数组

c - 复杂结构的哈希

php - 一年中每个月的 for 循环

python - 将二维列表更改为标准矩阵形式

python - 矩阵分解如何帮助填充新用户的稀疏效用/评级矩阵?