最佳答案
一个简单的方法可以如下所示
#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/