//矩阵的转制就是二维数组的行列互换,比如有这样的一个矩阵a[3][3]= 1,2,3
4,5,6
7,8,9
你的目的就是要把它变成a[3][3]= 1,4,7
2,5,8
3,6,9
你可以发现1,5,9的位置没有改变。 如果你把矩阵按照1,5,9所在的直线对折,发现后来的矩阵跟前面的矩阵重叠的位置交换下 也就是把第1行第2列换成第2行第1列 ,a[0][1]=a[1][0], 因此得出a[i][j]互换a[j][i],这里以3*3的矩阵为例
#include <stdio.h>
#define N 3
void convert(int a[][N])
{
int i,j,temp;
for(i=0;i<N;i++)
for(j=i+1;j<N;j++)
{
temp=a[i][j];
a[i][j]=a[j][i];
a[j][i]=temp;
}
printf("转置后:/n");
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
printf("%d ",a[i][j]);
putchar('/n');
}
void main()
{
int i,j,a[N][N];
printf("请为数组赋值:");
for(i=0;i<N;i++)
for(j=0;j<N;j++)
scanf("%d",&a[i][j]);
printf("初始数组:/n");
for(i=0;i<N*N;i++)
{
printf("%d ",*(a[0]+i));
if((i+1)%3==0)
printf("/n");
}
convert(array);
printf("/n新数组:/n");
for(i=j=0;i<N*N;i++)
{
printf("%d ",*(a[0]+i))
j++;
if(j%3==0) puts("");
}
}
}