c語言實(shí)現(xiàn)矩陣的轉(zhuǎn)置 編一C個程序:將一個任意二維數(shù)組轉(zhuǎn)置?
編一C個程序:將一個任意二維數(shù)組轉(zhuǎn)置?例如,如果下列矩陣A:12 34 5 67 8 9被轉(zhuǎn)置,即矩陣的第i行成為第i列,則原始矩陣A成為下列矩陣B:1 4 72 5 83 6 9代碼:#includ
編一C個程序:將一個任意二維數(shù)組轉(zhuǎn)置?
例如,如果下列矩陣A:
1
2 34 5 67 8 9被轉(zhuǎn)置,即矩陣的第i行成為第i列,則原始矩陣A成為下列矩陣B:1 4 72 5 83 6 9代碼:#include main(){int n[3][3]={1,2,3,4,5,6,7,8,9}int i,J,tempprintf(“原始矩陣:n”)(I=0,II){/*將主對角線右上角的數(shù)組元素與主對角線左下角的數(shù)組元素按一個方向交換*/temp=n[I][J]n[I][J]=n[J][I]n[J][I]=temp}printf(“轉(zhuǎn)置矩陣:n”)for(I=0,I
~,無論是一維數(shù)組、二維數(shù)字組還是多維數(shù)組,在內(nèi)存中都是一維排列的。用一維陣列模擬多維陣列。從這一點(diǎn)出發(fā),一維陣列可以解決多維陣列的問題。常用的模擬方法:
將二維數(shù)組a[M][n]表示為一維數(shù)組a[M*n
]用[y*nx]代替[y][x
]注意這里用一維數(shù)組代替二維數(shù)組
從代碼清晰易讀的角度來看,二維數(shù)組和多維數(shù)組是不同的有意義。有很多數(shù)據(jù)可以用二維數(shù)組或多維數(shù)組來表示。如果數(shù)據(jù)以適當(dāng)?shù)姆绞奖硎?,算法將簡潔明了。典型?shù)據(jù)適合二維數(shù)組表示,如平面圖形、矩陣。采用二維數(shù)組,程序清晰易讀;采用一維數(shù)組,可讀性要低得多。
與匯編語言相比,C提供了一些數(shù)據(jù)抽象,如數(shù)組、結(jié)構(gòu)和聯(lián)合。事實(shí)上,沒有這些抽象,程序仍然可以被編程。但C語言的優(yōu)點(diǎn)是具有高度的抽象性,非常適合于系統(tǒng)級程序的開發(fā)和維護(hù)。如果您認(rèn)為C語言提供的抽象級別太高,那么匯編可能更適合您的項(xiàng)目。如果您認(rèn)為C語言提供的抽象級別太低,那么有很多選擇。從C、java到各種新語言,您可以嘗試替換它們。