C語言 將m n矩陣轉置(行列互換)為n m的矩陣

2021-10-12 16:37:35 字數 1705 閱讀 6573

首先,我們分析:

這個問題無非就是把m乘n的值賦值給n乘m,然後再輸出不是麼?

那我們假設m=3,n=2那就是三行兩列,把它轉換為2*3,那也就是兩行三列。

方便理解我們可以定義兩個陣列a[3][2],b[2][3]。

a[3][2]裡有六個元素分別為:a[0][0] ,a[0][1], a[1][0], a[1][1], a[2][0], a[2][1]

b[2][3]裡有六個元素分別為:b[0][0] ,b[0][1] ,b[0][2] ,b[1][0] ,b[1][1] ,b[1][2]

首先我們要對二維陣列a[3][2]進行輸入才可以進行轉換,不然沒有值,換個寂寞。那我們就先來編寫輸入值的**:

#include

"stdio.h"

#define m 3

//對m進行乙個巨集定義為3

#define n 2

//同理對n進行巨集定義為2

void

main()

//內迴圈結束

}//外迴圈結束

這裡我的main函式的結束花括號沒有打,因為程式還沒有編寫完成,所以讓我們來繼續編寫

賦值完了,讓我們以3*2的矩陣形式輸出來給我們看看,那我們繼續編寫:

for

(i=0

;i)//內迴圈結束

printf

("\n");

//換行

}//外迴圈結束

好,寫到這裡我們完成了一半,下面就是重點,轉換部分:

printf

("轉換成2*3的為:\n");

//為了看的更清楚列印輸出這句話

for(i=

0;i)//內迴圈結束

}//外迴圈結束

到現在我們已經完成了轉換,相信有些同學可能有些迷惑,沒關係,我後面來解釋,最後讓我們輸出一下,這個程式就算是完成了,讓我們來看一下:

for

(i=0

;i)//內迴圈結束

printf

("\n");

//換行

}//外迴圈結束

}//main函式結束

這裡我們主要講解一下轉換部分,為了方便理解,我用一張**來把兩個陣列的下標對應出來ba

0000

0110

0220

1001

1111

1221

大家可以逐一對應一下可以發現,a的值完全賦值給了b,這個地方需要大家仔細觀察,多加理解。

#include

"stdio.h"

#define m 3

#define n 2

void

main()

}for

(i=0

;i)printf

("\n");

}printf

("轉換成2*3的為:\n");

for(i=

0;ifor(i=

0;i)printf

("\n");

}}

**放在這裡有,同學們可以參考一下,最好自己看一遍,自己打一遍對照著我的程式,但不要完全抄。還是那句話,一遍沒看懂,別擔心。再看一遍,記得我得啟蒙老師說過一句話:程式設計經不起同學們思考。加油!

矩陣的轉置 C語言

include include 非對稱矩陣的轉置 採用了將乙個矩陣的轉置矩陣放在另乙個矩陣中的做法 void print int m,int n,int c m n void fun int m,int n,int a m n int b n m int main int m int n int i...

求N M矩陣的轉置矩陣(C語言)

程式如下 include int main printf output array a n for i 0 i printf n printf noutput array b n for i 0 i return 0 第一次執行時將定義陣列的語句放在第一句,形如int n,m,a n m b m n...

C語言 用指標實現矩陣轉置

題目如下 編寫乙個函式 void transpose int matrix 10 int n 實現對乙個矩陣的前n行和前n列轉置。先在主函式中初始化如下矩陣,然後輸入n n 10 呼叫transpose函式前n行n列的轉置。1 3 5 7 9 6 5 4 3 2 2 4 6 8 0 7 6 5 4 ...