C语言求指导。。。

/*编程实现对任意m*n矩阵进行转置。其中m,n的范围均为[3,10]。
要求:
(1)首先输入m和n的值,先输入m,后输入n,m和n之间用空格隔开。
(2)接着输入矩阵元素,每n个元素一行,元素之间用空格隔开。
(3)输出对应的转置矩阵。
例如,标准输入格式如下:
3 4
1 2 3 4
5 6 7 8
9 10 11 12
标准输出格式如下:
1 5 9
2 6 10
3 7 11
4 8 12*/
以下我的程序,有些地方[???]不知道如何编程,求高手赐教 = =
#include <stdio.h>

void Trans(int a[][10],int m,int n)
{
int i,j,t;
for(i=0;i<=n-1;i++)
{
[???]
}
}

int main()
{
int i,j,m,n;
int a[10][10];
scanf("%d %d",&m,&n);
for(i=0;i<=m-1;i++)
{
for(j=0;j<=n-1;j++)
{
scanf("%d",&a[i][j]);
}
}
Trans(a,m,n);
for(i=0;i<=n-1;i++)
{
for(j=0;j<=m-1;j++)
{
printf("%d",a[i][j]);
if(j=m-1)
{
printf("\n");
}
}
}
return 0;
}

第1个回答  2011-05-01
有个办法你试试,可以用temp=a[i][j], a[i][j]=a[j][i]; a[j][i]=temp;

其实有个很简单的办法,就是在输出的时候一变就行了。
#define M 4
#define N 3
#include<stdio.h>
int main()
{ int i,k;
int a[N][M]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
//不需要真的做转置运算,即先输出列,再行。
for(i=0;i<M;i++)
{ for(k=0;k<N;k++)
printf("%5d",a[k][i]);
printf("\n");
}
system("pause");
}
第2个回答  2011-05-01
#define M 4
#define N 4
#include<stdio.h>
void main()
{ int i,k;
int a[M][N]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};
int b[M][N];
for(i=0;i<M;i++)
for(k=0;k<N;k++)b[i][k]=a[k][i];
for(i=0;i<M:i++)
{ for(k=0;k<N;k++)printf("%5d",b[i][k]);
printf("\n);
}
}
参考一下这个吧,也许你会懂
第3个回答  2011-05-01
#include <stdio.h>
void Trans(int a[][10],int m,int n)
{
int i,j,t;
for(i=0;i<m;i++)
for (j=i+1;j<n;j++)
{
t=a[i][j];
a[i][j]=a[j][i];
a[j][i]=t;
}
}

int main()
{
int i,j,m,n;
int a[10][10];
scanf("%d %d",&m,&n);
for(i=0;i<=m-1;i++)
for(j=0;j<=n-1;j++)
scanf("%d",&a[i][j]);
Trans(a,m,n);
for(i=0;i<=n-1;i++)
{
for(j=0;j<=m-1;j++)
printf("%-4d ",a[i][j]);
printf("\n");
}
return 0;
}本回答被提问者采纳
第4个回答  2011-05-01
void Trans(int a[][10],int m,int n)
{
int i,j,t;
for(i=0;i<m;i++)
for (j=i+1;j<n;j++)
{
t=a[i][j];
a[i][j]=a[j][i];
a[j][i]=t;
}
}
第5个回答  2020-01-13
相似回答