矩阵转置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;
}
【矩阵转置c语言多函数 矩阵的转置用c语言】}
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语言矩阵转置//经过vc6调试成功
void transferMat(int a[] , int b[], int n) //a表示待转置的矩阵 , b表示输出矩阵,n表示元素个数
{
int i,j;
for(i=0; in; i)
for(j=0; jn; j)
{
b[j,i]=a[i,j];
}
}
c语言编程题 , 编写一个函数,实现n阶方阵的转置(即行列互换)急急急?。。「行?/h2>#include stdio.h
#include stdlib.h
int main()
{int a[3][3]={1,2,3,4,5,6,7,8,9};
int j,i,temp;
for(i=0;i3;i)
for(j=0;j3;j)
scanf("%d",a[i][j]);
for(i=1;i2;i)
for(j=0;j=i;j)
{
temp=a[i][j];
a[i][j]=a[j][i];
a[j][i]=temp;
}
for(i=0;i3;i)
for(j=0;j3;j)
{
printf("%d ",a[i][j]);
if(j==2)printf("\n");
}
return 0;
}
扩展资料:
需要说明的是:
1、一个C语言源程序可以由一个或多个源文件组成 。
2、每个源文件可由一个或多个函数组成 。
3、一个源程序不论由多少个文件组成,都有一个且只能有一个main函数,即主函数 。是整个程序的入口 。
4、源程序中可以有预处理命令(包括include 命令 , ifdef、ifndef命令、define命令),预处理命令通常应放在源文件或源程序的最前面 。
5、每一个说明,每一个语句都必须以分号结尾 。但预处理命令 , 函数头和花括号“}”之后不能加分号 。结构体、联合体、枚举型的声明的“}”后要加“ ;” 。
6、标识符,关键字之间必须至少加一个空格以示间隔 。若已有明显的间隔符,也可不再加空格来间隔 。
参考资料:
百度百科-二维数组
百度百科-c语言
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("}",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("}",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]);//释放原矩阵行空间
returnlistSave;
}
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 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语言多函数和矩阵的转置用c语言的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息 , 记得收藏关注本站 。

    推荐阅读