當前位置:首頁 » 編程軟體 » 矩陣的轉置編程

矩陣的轉置編程

發布時間: 2025-01-03 08:24:24

㈠ 編寫程序,實現矩陣(3行3列)的轉置(即行列互換)。

#include<stdio.h>

#define N 3

int arry[N][N],b[N][N];

int main(){

void merg(int arry[3][3]);

int a[3][3],i,j;

for(i=0;i<N;i++)

for(j=0;j<N;j++){

scanf("%d",&arry[i][j]);

}

printf("原始的矩陣為: ");

for(i=0;i<N;i++){

for(j=0;j<N;j++){

printf("%d ",arry[i][j]);

}

printf(" ");

}

printf(" ");

merg(arry);

printf("變換後的矩陣為: ");

for(i=0;i<N;i++){

for(j=0;j<N;j++){

printf("%d ",b[i][j]);

}

printf(" ");

}

}

void merg(int arry[3][3]){

int i,j,temp;

for(i=0;i<N;i++)

for(j=0;j<N;j++){

b[j][i]=arry[i][j];

}

}

(1)矩陣的轉置編程擴展閱讀:

for循環:

語句的一般形式為:

for (表達式1; 表達式2; 表達式3)
{
語句;
}

表達式1、表達式2和表達式3之間是用分號;隔開的,千萬不要寫成逗號。

for(表達式1;表達式2;表達式3)的後面千萬不要加分號。

執行過程:

求解表達式1。

求解表達式2。若其值為真,則執行 for 語句中指定的內嵌語句,然後執行第3步;若表達式2值為假,則結束循環,轉到第5步。

求解表達式3。

轉回上面第2步繼續執行。

循環結束,執行 for 語句下面的語句。

多層 for 循環:

執行過程與單個 for 循環的執行過程是一模一樣的。多層 for 循環將單個 for 循環大括弧中的「語句」換成了 for 循環。

㈡ 矩陣的快速轉置--數據結構

在進行矩陣快速轉置的過程中,首先需要定義一些基礎的數據結構。這里我們使用pot數組來記錄每一列的第一個元素在b數組中的位置。pot數組初始化如下:

pot[1]=0
pot[2]=1
pot[3]=2

接下來是矩陣M的定義,其中coL1、coL2、coL3分別表示列1、列2、列3。矩陣M如下:

row1 1 0 4
row2 0 2 3

對應的num數組用於記錄每個元素的值:

num[1]=1
num[2]=1
num[3]=2

轉置過程如下:

1. 初始化a數組,b數組用於存儲轉置後的矩陣。

2. 對於每一行進行遍歷,根據pot數組找到對應列的第一個元素在b數組中的位置,然後進行元素的賦值。

3. 第一次操作:b[pot[1]],pot[1]++
b[0] 1 1 1

4. 第二次操作:b[pot[3]],pot[3]++
b[1] 2 2 2

5. 第三次操作:b[pot[2]],pot[2]++
b[2] 3 1 4

6. 第四次操作:b[pot[3]],pot[3]++
b[3] 3 2 3

最終得到的b數組即為矩陣M的轉置結果:

a.data
b.data

㈢ 用C語言編寫一個矩陣轉置的函數,矩陣的行數和列數在程序中由用戶輸入,請問怎麼寫,非常感謝

我的代碼邏輯是:

矩陣行指針初值指向每行首地址,迭代依次取所有行指針指向值組成新行,所有行指針自增。最終組合新的矩陣。

#include<stdio.h>
#include<malloc.h>
int**getList(introw,intclo);//獲取矩陣地址空間
voidsetNum(int**nList,intn);//填寫數值
voidprtList(int**nList,introw,intclo);//列印矩陣
int**zz(int**nList,introw,intclo);//轉置函數

intmain()
{
introw,clo,**nList=NULL,**nListSave=NULL;

printf("輸入矩陣行列數:");
scanf("%d%d",&row,&clo);
nList=getList(row,clo);
setNum(nList,row*clo);

printf("輸入的矩陣為: ");
prtList(nList,row,clo);

printf("轉置後的矩陣為: ");
nListSave=zz(nList,row,clo);
free(nList);
nList=nListSave;
prtList(nList,clo,row);
return0;
}

int**zz(int**nList,introw,intclo)
{
int*nSave=NULL,**listSave=NULL,**listp=nList,*p=NULL,i,j;
nSave=(int*)malloc(sizeof(int)*row*clo);
listSave=(int**)malloc(sizeof(int*)*clo);//倒置後的矩陣
p=nSave;

for(j=0;j<clo;j++)
{
for(i=0;i<row;i++)
{
*p++=*listp[i];
listp[i]=listp[i]+1;
}
}
for(i=0;i<clo;i++)
listSave[i]=&nSave[i*row];

for(i=0;i<row;i++)
free(nList[i]);//釋放原矩陣行空間
returnlistSave;
}
voidprtList(int**nList,introw,intclo)
{
inti,j;
for(i=0;i<row;i++)
{
for(j=0;j<clo;j++)
printf("%d",nList[i][j]);
printf(" ");
}
}
voidsetNum(int**nList,intn)
{
int*p=nList[0];
printf("填寫矩陣中%d個數值: ",n);
while(n-->0)
scanf("%d",p++);
}
int**getList(introw,intclo)
{
int*nums,**nList,i;
nums=(int*)malloc(sizeof(int)*row*clo);
nList=(int**)malloc(sizeof(int*)*row);
for(i=0;i<row;i++)
nList[i]=&nums[i*clo];
returnnList;
}

㈣ matlab的矩陣怎麼轉置

1、在命令行窗口中輸入「r = [ 1 2 3 4 ];tr = r'」,其中單引號(')是用於轉置操作的。

熱點內容
伺服器資料庫類型 發布:2025-01-05 12:59:32 瀏覽:416
編譯原理移植 發布:2025-01-05 12:49:16 瀏覽:318
android開屏 發布:2025-01-05 12:43:54 瀏覽:289
win7用戶文件夾 發布:2025-01-05 12:42:30 瀏覽:621
java培訓班南京 發布:2025-01-05 12:29:36 瀏覽:732
Idea自動編譯是什麼 發布:2025-01-05 12:28:02 瀏覽:527
考試筆試編程 發布:2025-01-05 12:15:45 瀏覽:157
變數配置是什麼意思 發布:2025-01-05 12:15:42 瀏覽:280
行李箱裝什麼密碼鎖好 發布:2025-01-05 12:14:57 瀏覽:976
家用無線存儲 發布:2025-01-05 12:14:47 瀏覽:620