C中2d矩阵第二对角线下的打印元素

hrirmatl  于 2023-01-29  发布在  其他
关注(0)|答案(4)|浏览(109)

你好,我有一个代码,显示了2D矩阵的主对角线下的元素,我还需要显示第二个对角线下的元素。任何想法在循环中操纵什么。

// loop to show the elements under the main diagonal
void element_under_diag(int number, int arr[number][number])
{
   int i, j;

   printf("\nUnder the main diagonal:\n");
      for(i=0;i<number;i++){
         for(j=0;j<number;j++){
            if(i>j)
               printf("%d ",arr[i][j]);
         }
      }
   printf("\n");

}

number取自main函数中的用户,它是矩阵中的行数和列数。
这个循环产生如下输出:

The entered matrix is:
1 2 3
4 5 6
7 8 9
Under the main diagonal:
4 7 8

现在,我需要输出如下所示:

The entered matrix is:
1 2 3
4 5 6
7 8 9
Under the secondary diagonal:
6 8 9
yx2lnoni

yx2lnoni1#

如果一个数组定义了N * N个元素,则if语句中的条件如下所示

if ( N - i - 1  < j ) printf( "%d ", a[i][j] );
zdwk9cvp

zdwk9cvp2#

条件是无用的,因为它可以直接通过循环完成:

#include <stdio.h>
void main(){
    int arr[3][3] = {1,2,3,4,5,6,7,8,9};
    element_under_diag(3,arr);
    element_under_secondary_diag(3,arr);
}

void element_under_diag(int number, int arr[number][number])
{
   printf("\nUnder the main diagonal:\n");
      for(int i=1;i<number;i++){
        for(int j=0;j<i;j++){
            printf("%d ",arr[i][j]);
         }
      }
   printf("\n");
}

void element_under_secondary_diag(int number, int arr[number][number])
{
   printf("\nUnder the secondary diagonal:\n");
      for(int i=1;i<number;i++){
        for(int j=0;j<i;j++){
            printf("%d ",arr[number-j-1][i]);
         }
      }
   printf("\n");
}
bprjcwpo

bprjcwpo3#

请在程序中替换:

if(i>j)   // above the diagonal

if( (i+j) >= N )   // below the diagonal
ffdz8vbo

ffdz8vbo4#

我是这么解决的:

// loop to show the elements under the main diagonal
void element_under_diag(int number, int arr[number][number])
{
   int i, j;
   printf("\nUnder the secondary diagonal:\n");
      for(i=1;i<number;i++){
         j = number - i; //Every time the row number goes up one, the starting column goes down one. 
           for(;j<number;j++){
            printf("%d ",arr[i][j]);
         }

      }
   printf("\n");
}

相关问题