c语言中转置矩阵怎么写

1.用C语言实现矩阵转置//Transpose
#include <stdio.h>
#define MAX 20
int m,n;
void transpose(double a[][MAX],double b[][MAX])
{
int i,j;
for(i=0;i<MAX;i++)
for(j=0;j<MAX;j++)
b[i][j]=a[j][i];
}
void main()
{
int i,j;
double a[MAX][MAX],b[MAX][MAX];
puts("Please input the dimensions of the matrixe:");
puts("(in term of “2 3”).");
scanf("%d %d",&m,&n);
puts("Enter the matrix:");
for(i=0;i<m;i++)
for(j=0;j<n;j++)
scanf("%lf",&a[i][j]);
transpose(a,b);
puts("The Transpose as follow:");
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
if(b[i][j]-int(b[i][j])!=0)
printf("%lf ",b[i][j]);
else
printf("%d ",int(b[i][j]));
}
puts("");
}
}
//我这个能实现任意大小的,还有提示输入输出
2.C语言 ,求转置矩阵已通过测试,望采纳 。
不懂追问哈
#include <stdio.h>
#include <conio.h>
void fun(int array[3][3])
{
int array1[3][3];
int i,j,t;
for (i=0;i<3;i++)
{
for (j=0;j<i;j++)
{
t=array[i][j];
array[i][j]=array[j][i];
array[j][i]=t;
}
}
}
void main()
{
int i, j;
int array[3][3]={{100,200,300},{400,500,600},{700,800,900}};
for (i=0;i<3;i++)
{
for (j=0;j<3;j++)
printf("%d\t",array[i][j]);
printf("\n");
}
fun(array);
printf("converted array:\n");
for(i=0;i<3;i++)
{ for(j=0;j<3;j++)
printf("%7d",array[i][j]);
printf("\n");
}
}
3.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;i<2;i++) for(j=0;j<3;j++) { scanf("%d",&array[i][j]); } printf("\n"); zhuan(array,b); printf("\n"); for(i=0;i<3;i++) { for(j=0;j<2;j++) printf("%d",b[i][j]); printf("\n"); }}void zhuan(int array[2][3],int b[3][2]) //转置函数zhidao逻辑错误,专没那么麻烦,直接转就是了!属{ int i,j; for(i=0;i<2;i++) for(j=0;j<3;j++) { b[j][i]=array[i][j]; }} 。
4.C语言编程:求3*3矩阵的转置矩阵思路:定了两个二维数组分别存储转置前后的矩阵,接着for循环依次转置即可 。
//参考代码
#include<stdio.h>
int main()
{
int a[3][3]={{1,2,3},{4,5,6},{7,8,9}},b[3][3];
int i,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
b[j][i]=a[i][j];
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
printf("%2d ",b[i][j]);
printf("\n");
}
return 0;
}
/*
运行结果:
1 4 7
2 5 8
3 6 9
*/
5.用C语言编写一个矩阵转置的函数,矩阵的行数和列数在程序中由用我的代码逻辑是:矩阵行指针初值指向每行首地址,迭代依次取所有行指针指向值组成新行,所有行指针自增 。
最终组合新的矩阵 。#include #include 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;j