c语言子函数矩阵转置,c++ 矩阵转置函数

c语言:写一个函数,将输入的3*3的整形矩阵进行转置 用函数

#includestdio.h

站在用户的角度思考问题,与客户深入沟通,找到新疆网站设计与新疆网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:网站设计制作、网站建设、企业官网、英文网站、手机端网站、网站推广、国际域名空间、网站空间、企业邮箱。业务覆盖新疆地区。

int main()

{

void move(int *s);

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

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

printf("请输入一个3*3的数组:\n");

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

{

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

}

move(p);

printf("转置后的结果:\n");

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

{

printf("%d %d %d\n",a[i][0],a[i][1],a[i][2]);

}

return 0;

}

void move(int *s)

{

int i,j,t;

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

{

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

{

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

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

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

}

}

}

扩展资料:

在C语言或C++中,会把用来#include的文件的扩展名叫 .h,称其为头文件。

#include文件的目的就是把多个编译单元(也就是c或者cpp文件)公用的内容,单独放在一个文件里减少整体代码尺寸;或者提供跨工程公共代码。在现行的c++版本中,应用这个头文件应是#includestdio.h

stdio 就是指 “standard input output"(标准输入输出)所以,源代码中如用到标准输入输出函数时,就要包含这个头文件!

例如c语言中的 printf("%d",i); scanf("%d",i);等函数。

引用方法

#include stdio.h

(注:在TC2.0中,允许不引用此头文件而直接调用其中的函数,但这种做法是不标准的。也不建议这样做。以避免出现在其他IDE中无法编译或执行的问题。)

标准函数

int getchar()//从标准输入设备写入一个字符

int putchar()//向标准输出设备读出一个字符

int scanf(char*format[,argument…])//从标准输入设备读入格式化后的数据

int printf(char*format[,argument…])//向标准输出设备输出格式化字符串

char* gets(char*string)//从标准输入设备读入一个字符串

int puts(char*string)//向标准输出设备输出一个字符串

int sprintf(char*string,char*format[,…])//把格式化的数据写入某个字符串缓冲区。

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语言矩阵转置函数,定义一个二维数组 int a[5][3],保存一个5*3的矩阵a,求他的转置矩阵b。

/* 程式功能: 矩阵转置 (transportation) *//*输入:m×n矩阵A *//*输出:矩阵B,B=AT */#include void main() { int i, j, m=5, n=5; int B[6][6], A[6][6]; printf("请依序输入二维阵列A(5x5)的元素内容(可以5个一行,可以空格或回车隔开): \n"); for (i = 1; i = 5; i++) { for (j = 1; j = 5; j++) { scanf("%d", A[i][j]); } } printf("\n\n原始:\n"); for(i = 1; i = m; i ++) { for(j = 1; j =n; j++) { printf("%4d",A[i][j]); } printf("\n"); } printf("\n转置後:\n"); for (i = 1; i = m; i++) { for (j = 1; j = n; j++) { B[i][j] = A[j][i]; /*作转置的动作*/ printf("%4d ", B[i][j]); /*输出转置後的结果*/ } printf("\n"); }}

编写C语言函数完成矩阵的转置

程序如下:

#include stdio.h

void move (int matrix[3][3])

{

int i, j, k;

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

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

{

k = matrix[i][j];

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

matrix[j][i] = k;

}

}

void main()

{

int i, j;

int data[3][3];

printf("Enter matrix:\n");

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

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

{

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

}

printf("The matrix is:\n");

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

{

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

{

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

printf(" ");

}

printf("\n");

}

move(data);

printf("After move:\n");

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

{

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

{

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

printf(" ");

}

printf("\n");

}

}

/*

Enter matrix:

1 2 3 4 5 6 7 8 9

The matrix is:

1 2 3

4 5 6

7 8 9

After move:

1 4 7

2 5 8

3 6 9

*/

多给点分吧~~

用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://cdiso.cn/article/dseedgh.html

其他资讯