重庆分公司,新征程启航

为企业提供网站建设、域名注册、服务器等服务

c语言转置矩阵定义函数 c语言矩阵的转置矩阵

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

}

C++题目: 写一个函数将一个3*3的整型矩阵转置。

1、首先在编辑器中准备好一个空白的c语言文件,引入C语言标准库,在main函数中定义一个3x3阶矩阵以及循环体中要用的变量i和j,以及一个用来交换数据的临时变量tmp,然后下一步就可以开始编写处理转置的部分了:

2、二维数组需要用两层循环输出,而算法是将一个3x3阶矩阵转置时,只需将主对角线右上方的数组元素“n[0][1]”、“n[0][2]”、“n[1][2]”,分别与主对角线左下放的数组元素“n[1][0]”、“n[2][0]”、“n[2][1]”的值通过一个临时变量进行交换即可实现矩阵的转置:

3、最后一步运行程序,在右侧的命令行可以看到转置后的结果,以上就是用c语言实现矩阵转置的操作:

用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语言 矩阵转置的编写

#include "stdio.h"

void main()

{

void zhuan(int array[2][3],int b[3][2]);

int array[2][3],b[3][2]; int i,j;

printf("input:\n");

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

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

{

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

}

printf("\n");

zhuan(array,b);

printf("\n");

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

{

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

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

printf("\n");

}

}

void zhuan(int array[2][3],int b[3][2]) //转置函数逻辑错误,没那么麻烦,直接转就是了!

{

int i,j;

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

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

{

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

}

}


分享文章:c语言转置矩阵定义函数 c语言矩阵的转置矩阵
当前地址:http://cqcxhl.com/article/dddhoji.html

其他资讯

在线咨询
服务热线
服务热线:028-86922220
TOP