當前位置:首頁 » 編程語言 » c語言矩陣轉置

c語言矩陣轉置

發布時間: 2023-07-28 02:01:02

『壹』 c語言如何通過定義函數來轉置矩陣

#include <stdio.h>

int main()

{ struct aaa

{ int x;

int y;

};

struct aaa t,a[3][3]= {0,0,0,1,0,2,1,0,1,1,1,2,2,0,2,1,2,2};

int i,j;

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

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

printf("[%d,%d] ",a[i][j].x,a[i][j].y);

printf(" ");

}

printf("after: ");

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

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

{ t=a[i][j];

a[i][j]=a[j][i];

a[j][i]=t;

}

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

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

printf("[%d,%d] ",a[i][j].x,a[i][j].y);

printf(" ");

}

return 0;

}

或:

#include <stdio.h>

struct aaa

{ int x;

int y;

};

void zhuan(struct aaa a[][3])

{ struct aaa t;

int i,j;

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

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

{ t=a[i][j];

a[i][j]=a[j][i];

a[j][i]=t;

}

}

void prt(struct aaa a[][3])

{ int i,j;

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

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

printf("[%d,%d] ",a[i][j].x,a[i][j].y);

printf(" ");

}


}

int main()

{ struct aaa a[3][3]= {0,0,0,1,0,2,1,0,1,1,1,2,2,0,2,1,2,2};

prt(a);

zhuan(a);

printf("after: ");

prt(a);

return 0;

}

『貳』 C語言編程:N*N方陣的轉置

#include<stdio.h>

int main()

{

int n,t,a[100][100],i,j; scanf("%d",&n);

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

for(j=0;j<n;j++) scanf("%d",&a[i][j]);

printf("轉換後: ");

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

for(j=0;j<n;j++)

{

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

{

for(j=0;j<n;j++)

{

if(j==0)

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

}

printf(" ");

}}}

(2)c語言矩陣轉置擴展閱讀:

C語言書寫規則:

1、一個說明或一個語句佔一行。

2、用{} 括起來的部分,通常表示了程序的某一層次結構。{}一般與該結構語句的第一個字母對齊,並單獨佔一行。

3、低一層次的語句或說明可比高一層次的語句或說明縮進若干格後書寫。以便看起來更加清晰,增加程序的可讀性。在編程時應力求遵循這些規則,以養成良好的編程風格。

網路-c語言

『叄』 C語言,求3×3矩陣的轉置矩陣(在自身進行轉置)

#include<stdio.h>

int main()

{

int a1,b1;

int a[3][3];

int i,j;

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

for(j=0;j<3;j++)

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

printf("矩陣為 ");

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

for(j=0;j<3;j++)

{

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

if(j==2)

printf(" ");

}

printf(" ");

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

for(j=1;j<3;j++)

{

a1=a[i][j];

b1=a[j][i];

a[i][j]=b1;

a[j][i]=a1;

}

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

for(j=0;j<3;j++)

{

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


if(j==2)

printf(" ");

}

return 0;

}

『肆』 用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;
}

『伍』 C語言、用指針方法實現一個3*3矩陣的轉置

#include&lt;iostream&gt;

#include&lt;iomanip&gt;

using namespace std;

int main()

{

void move(int*pointer);//函數聲明

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

int*p;

cout&lt;&lt;"請輸入矩陣元素:"&lt;&lt;endl;

for(i=0;i&lt;3;i++)//輸入數組

{

for(j=0;j&lt;3;j++)

{

cin&gt;&gt;a&lt;i&gt;[j];

}

}

cout&lt;&lt;"輸出原矩陣:"&lt;&lt;endl;//輸出矩陣

for(i=0;i&lt;3;i++)

{

for(j=0;j&lt;3;j++)

{

cout&lt;&lt;setw(5)&lt;&lt;a&lt;i&gt;[j];

}

cout&lt;&lt;endl;

}

p=&a[0][0];//將數組首元素賦給指針變數p

move(p);//函數調用

cout&lt;&lt;"處理後的矩陣:"&lt;&lt;endl;

for(i=0;i&lt;3;i++)//輸出處理後的矩陣

{

for(j=0;j&lt;3;j++)

{

cout&lt;&lt;setw(5)&lt;&lt;a&lt;i&gt;[j];

}

cout&lt;&lt;endl;

}

return 0;

}

//交換函數

void move(int*pointer)

{

int i,j,t;

for(i=0;i&lt;3;i++)

{

for(j=i;j&lt;3;j++)

{

t=*(pointer+3*i+j);//這是關鍵將矩陣轉置的條件

*(pointer+3*i+j)=*(pointer+3*j+i);

*(pointer+3*j+i)=t;

}

}

}



(5)c語言矩陣轉置擴展閱讀:

用函數

#include&lt;stdio.h&gt;

int main()

{

void move(int*s);

int a[3][3];int i=0;

int*p=&a[0][0];

printf("請輸入一個3*3的數組: ");

for(i=0;i&lt;3;i++)

{

scanf("%d%d%d",&a&lt;i&gt;[0],&a&lt;i&gt;[1],&a&lt;i&gt;[2]);

}

move(p);

printf("轉置後的結果: ");

for(i=0;i&lt;3;i++)

{

printf("%d%d%d ",a&lt;i&gt;[0],a&lt;i&gt;[1],a&lt;i&gt;[2]);

}

return 0;

}

void move(int*s)

{

int i,j,t;

for(i=0;i&lt;3;i++)

{

for(j=i;j&lt;3;j++)

{

t=*(s+3*i+j);

*(s+3*i+j)=*(s+3*j+i);

*(s+3*j+i)=t;

}

}

}

熱點內容
文本框腳本圖片 發布:2025-02-07 14:23:28 瀏覽:228
少兒編程c語言 發布:2025-02-07 14:22:50 瀏覽:216
一階低通濾波器c語言 發布:2025-02-07 14:22:37 瀏覽:849
電腦的東西為什麼粘貼不到伺服器 發布:2025-02-07 14:21:04 瀏覽:193
手機脫模解壓視頻 發布:2025-02-07 14:20:18 瀏覽:472
密碼多少密碼多少密碼多少密碼 發布:2025-02-07 14:07:30 瀏覽:855
我的世界啟動器電腦伺服器 發布:2025-02-07 14:07:27 瀏覽:483
愛加密深圳科技有限 發布:2025-02-07 14:07:26 瀏覽:86
c語言密碼星號 發布:2025-02-07 14:07:24 瀏覽:800
安卓手機如何卸載雜志鎖屏 發布:2025-02-07 13:57:10 瀏覽:920