//矩陣的轉制就是二維數組的行列互換,比如有這樣的一個矩陣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("");
}
}
}