天天看點

[ C語言練習題 5 ] 矩陣轉置(将矩陣的行列互換得到的新矩陣)

描述

KiKi有一個矩陣,他想知道轉置後的矩陣(将矩陣的行列互換得到的新矩陣稱為轉置矩陣),請程式設計幫他解答。

輸入描述:

第一行包含兩個整數n和m,表示一個矩陣包含n行m列,用空格分隔。 (1≤n≤10,1≤m≤10)

從2到n+1行,每行輸入m個整數(範圍-231~231-1),用空格分隔,共輸入n*m個數,表示第一個矩陣中的元素。

輸出描述:

輸出m行n列,為矩陣轉置後的結果。每個數後面有一個空格。

示例1

輸入:
2 3
1 2 3
4 5 6      
輸出:
1 4 
2 5 
3 6      

實作代碼:

int main()
{
  int n, m;//n行m列
  scanf("%d %d", &n, &m);
  int i = 0;
  int j = 0;
  int arr[10][10] = {0};
  for (i = 0; i < n; i++)
  {
    for (j = 0; j <m; j++) {
      scanf("%d", &arr[i][j]);
    }
  }
  for (i = 0; i < m; i++)
  {
    for (j = 0; j < n; j++) {
      printf("%d ", arr[j][i]);
    }
    printf("\n");
  }
  return 0;
}      
[ C語言練習題 5 ] 矩陣轉置(将矩陣的行列互換得到的新矩陣)

題目分析:

我們先解讀一下轉置矩陣的概念:

矩陣轉置:将矩陣的行列互換得到的新矩陣稱為轉置矩陣

[ C語言練習題 5 ] 矩陣轉置(将矩陣的行列互換得到的新矩陣)
[ C語言練習題 5 ] 矩陣轉置(将矩陣的行列互換得到的新矩陣)

由圖我們可以看出,矩陣是二維布局,是以我們使用二維數組解決這個問題。

由上面的分析我們就可以輕松得知,隻需要将建立的二位數組中的行和列在列印的時候調換一下就可以解決問題

建立和列印的代碼我們就很簡單的寫出來: 

for (i = 0; i < n; i++)
  {
    for (j = 0; j <m; j++) {
      scanf("%d", &arr[i][j]);
    }
  }
  for (i = 0; i < m; i++)
  {
    for (j = 0; j < n; j++) {
      printf("%d ", arr[j][i]);
    }
    printf("\n");
  }      
[ C語言練習題 5 ] 矩陣轉置(将矩陣的行列互換得到的新矩陣)

其中我們要尤為關注的是,在每行列印完之後要記得換行

是以我們再看一下完整的代碼:

[ C語言練習題 5 ] 矩陣轉置(将矩陣的行列互換得到的新矩陣)
[ C語言練習題 5 ] 矩陣轉置(将矩陣的行列互換得到的新矩陣)

 結論測試:

示例1

輸入:
2 3
1 2 3
4 5 6      
輸出:
1 4 
2 5 
3 6      

 實作截圖:

[ C語言練習題 5 ] 矩陣轉置(将矩陣的行列互換得到的新矩陣)
[ C語言練習題 5 ] 矩陣轉置(将矩陣的行列互換得到的新矩陣)

示例2

輸入:

3  1

2

3

4

輸出:

2  3  4 

 實作截圖:

[ C語言練習題 5 ] 矩陣轉置(将矩陣的行列互換得到的新矩陣)
[ C語言練習題 5 ] 矩陣轉置(将矩陣的行列互換得到的新矩陣)

 我們放在牛客網下也是可以跑過去的 

[ C語言練習題 5 ] 矩陣轉置(将矩陣的行列互換得到的新矩陣)
[ C語言練習題 5 ] 矩陣轉置(将矩陣的行列互換得到的新矩陣)

總結:

繼續閱讀