用 C 語言程式對角線向下列印矩陣。


給定大小為 n x n 的陣列,任務是列印整數型別矩陣的對角線向下元素。

對角線向下表示列印任意大小 n x n 的陣列中對角線向下的元素,如下面的圖所示 −

首先它將列印 1,然後移動到 2 並列印,並對角線向下移動到 4 並列印,等等。

例項

Input: Matrix [3][3] = {
   { 1, 2, 3 },
   { 4, 5, 6 },
   { 7, 8, 9 }}
Output: 1 2 4 3 5 7 6 8 9

演算法

int diagonally_down(int mat[n][n])
START
STEP 1: DECLARE i, j, row, col AS INT
STEP 2: LOOP FOR i = 0 AND i < n AND i++
   SET row = 0
   SET col = i
   LOOP WHILE col >= 0
      PRINT mat[row][col]
      INCREMENT row BY 1 AND DECREMENT col BY 1
   END WHILE
END FOR
STEP 3: LOOP FOR j = 1 AND j < n AND j++
   SET row = j
   SET col = n-1
   LOOP WHILE row < n
      PRINT mat[row][col]
      INCREMENT row BY 1 AND DECREMENT col BY 1
   END WHILE
END FOR
STOP

例項

#include <stdio.h>
#define n 3
int diagonally_down(int mat[n][n]){
   int i, j, row, col;
   //printing above elements
   for (i = 0; i < n; i++){
      row = 0;
      col = i;
      while(col >= 0) //Moving downwards from the first row{
         printf("%d ", mat[row++][col--]);
      }
   }
   //printing below elements
   for (j = 1; j < n; j++){
      row = j;
      col = n-1;
      while(row<n) //Moving from the last column{
         printf("%d ", mat[row++][col--]);
      }
   }
}
int main(int argc, char const *argv[]){
   int mat[][n] = {
      {1, 2, 3},
      {4, 5, 6},
      {7, 8, 9}
   };
   diagonally_down(mat);
   return 0;
}

輸出

如果執行上面的程式,它將生成以下輸出 −

1 2 4 3 5 7 6 8 9

更新於: 22-Aug-2019

382 次瀏覽

啟動你的 職業

完成課程以獲得認證

開始
廣告