
C语言编了一个任意行列矩阵转置的程序,但为什么转置后的矩阵不输出呢
代码:#include<stdio.h>#include<stdlib.h>voidtran(float**c,intm,intn){inti,j;float**b;b=...
代码:
#include<stdio.h>
#include<stdlib.h>
void tran(float **c,int m,int n)
{
int i,j;
float **b;
b=(float **)malloc(n*sizeof(float));
for(i=0;i<n;i++)
b[i]=(float *)malloc(m*sizeof(float));
for(i=0;i<m;i++)
for(j=0;j<n;j++)
b[i][j]=c[j][i];
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
printf("%4.0f",b[i][j]);
printf("\n");
}
}
int main()
{
float **p;
int i,j,m,n;
printf("请分别输入需转置矩阵的行数m与列数n:");
scanf("%d%d",&m,&n);
p=(float **)malloc(m*sizeof(float));
for(i=0;i<m;i++)
p[i]=(float *)malloc(n*sizeof(float));
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
scanf("%f",*(p+i)+j);
if(i==0&&j==0)printf("矩阵:\n");
printf("%4.0f",p[i][j]);
}
printf("\n");
}
printf("转置矩阵:\n");
tran(p,m,n);
return 0;
} 展开
#include<stdio.h>
#include<stdlib.h>
void tran(float **c,int m,int n)
{
int i,j;
float **b;
b=(float **)malloc(n*sizeof(float));
for(i=0;i<n;i++)
b[i]=(float *)malloc(m*sizeof(float));
for(i=0;i<m;i++)
for(j=0;j<n;j++)
b[i][j]=c[j][i];
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
printf("%4.0f",b[i][j]);
printf("\n");
}
}
int main()
{
float **p;
int i,j,m,n;
printf("请分别输入需转置矩阵的行数m与列数n:");
scanf("%d%d",&m,&n);
p=(float **)malloc(m*sizeof(float));
for(i=0;i<m;i++)
p[i]=(float *)malloc(n*sizeof(float));
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
scanf("%f",*(p+i)+j);
if(i==0&&j==0)printf("矩阵:\n");
printf("%4.0f",p[i][j]);
}
printf("\n");
}
printf("转置矩阵:\n");
tran(p,m,n);
return 0;
} 展开
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询