C语言定义矩阵置换函数 c语言矩阵转置函数

c语言如何通过定义函数来转置矩阵?

#include stdio.h

成都创新互联公司主要从事做网站、网站设计、网页设计、企业做网站、公司建网站等业务。立足成都服务让胡路,10余年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:028-86922220

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; i3; i++)

{ for(j=0; j3; j++)

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

printf("\n");

}

printf("after:\n");

for(i=0; i3; i++)

for(j=0; ji; j++)

{ t=a[i][j];

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

a[j][i]=t;

}

for(i=0; i3; i++)

{ for(j=0; j3; j++)

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

printf("\n");

}

return 0;

}

或:

#include stdio.h

struct aaa

{ int x;

int y;

};

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

{ struct aaa t;

int i,j;

for(i=0; i3; i++)

for(j=0; ji; 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; i3; i++)

{ for(j=0; j3; j++)

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

printf("\n");

}

}

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);

zhuanzhi(a);

printf("after:\n");

prt(a);

return 0;

}

2*2矩阵置换编程c语言?

#include stdio.h

int main()

{

// 定义2*2矩阵

int matrix[2][2] = {{1, 2}, {3, 4}};

// 打印矩阵

printf("矩阵原始值:\n");

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

{

for (int j = 0; j 2; j++)

{

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

}

printf("\n");

}

// 置换矩阵

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

{

for (int j = i+1; j 2; j++)

{

int temp = matrix[i][j];

matrix[i][j] = matrix[j][i];

matrix[j][i] = temp;

}

}

// 打印置换后的矩阵

printf("置换后的矩阵:\n");

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

{

for (int j = 0; j 2; j++)

{

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

}

printf("\n");

}

return 0;

}

C语言-矩阵转置

①目标

将一个二维数组表示的矩阵转置

②命令行

#includestdio.h

#include stdlib.h

~

③定义函数

void fun(int array[3][3])

{int i,j,t;

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

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

/*注意:只遍历了矩阵的右上半部分。

如果for(j=0;j<3;j++,表示遍历矩阵全部元素,右上与左下交换,左下又与右上交换,导致重复转置,矩阵没有变化。*/

{t=array[i][j];

array[i][j]=array[j][i];

array[j][i]=t;}

/*交换语句,矩阵右上半部分,与对应左下半部分,元素交换,完成转置*/

}

~

④主函数(调用)

void main()

{int i,j;

int array[3][3]={{1,2,3},{4,5,6},{7,8,9}};

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

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

/*输出原矩阵,遍历全部*/

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

printf("\n");}

fun(array);

/*利用fun函数完成转置*/

printf("converted array:\n");

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

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

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

printf("\n");}

}

用C语言编写一个矩阵转置的函数,矩阵的行数和列数在程序中由用户输入,请问怎么写,非常感谢

我的代码逻辑是:

矩阵行指针初值指向每行首地址,迭代依次取所有行指针指向值组成新行,所有行指针自增。最终组合新的矩阵。

#include stdio.h

#include malloc.h

int **getList(int row,int clo);//获取矩阵地址空间

void setNum(int **nList,int n);//填写数值

void prtList(int **nList,int row,int clo);//打印矩阵

int **zz(int **nList,int row,int clo);//转置函数

int main()

{

int row,clo,**nList=NULL,**nListSave=NULL;

printf("输入矩阵行列数:");

scanf("%d%d",row,clo);

nList=getList(row,clo);

setNum(nList,row*clo);

printf("输入的矩阵为:\n");

prtList(nList,row,clo);

printf("转置后的矩阵为:\n");

nListSave=zz(nList,row,clo);

free(nList);

nList=nListSave;

prtList(nList,clo,row);

return 0;

}

int **zz(int **nList,int row,int clo)

{

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;jclo;j++)

{

for(i=0;irow;i++)

{

*p++=*listp[i];

listp[i]=listp[i]+1;

}

}

for(i=0;iclo;i++)

listSave[i]=nSave[i*row];

for(i=0;irow;i++)

free(nList[i]);//释放原矩阵行空间

return  listSave;

}

void prtList(int **nList,int row,int clo)

{

int i,j;

for(i=0;irow;i++)

{

for(j=0;jclo;j++)

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

printf("\n");

}

}

void setNum(int **nList,int n)

{

int *p=nList[0];

printf("填写矩阵中%d个数值:\n",n);

while(n--0)

scanf("%d",p++);

}

int **getList(int row,int clo)

{

int *nums,**nList,i;

nums=(int *)malloc(sizeof(int)*row*clo);

nList=(int **)malloc(sizeof(int*)*row);

for(i=0;irow;i++)

nList[i]=nums[i*clo];

return nList;

}


名称栏目:C语言定义矩阵置换函数 c语言矩阵转置函数
URL分享:http://myzitong.com/article/doicghd.html