8、数组的行列转置
思路:交换对应行列和列行的元素,注意只交换一半即可,否则相当于没有交换。
完整程序
#include<stdio.h>
#define N 5
int main()
{
int a[N][N];
int i,j,t;
for(i=0;i<N;i++)
for(j=0;j<N;j++)
scanf("%d",&a[i][j]);
for(i=0;i<N;i++)
for(j=i+1;j<N;j++)
{
t=a[i][j];
a[i][j]=a[j][i];
a[j][i]=t;
}
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
printf("%d ",a[i][j]);
printf("\n");
}
return 0;
}
封装函数
void zhuanzhi(int a[][N])
{
int i,j,t;
for(i=0;i<N;i++)
for(j=i+1;j<N;j++)
{
t=a[i][j];
a[i][j]=a[j][i];
a[j][i]=t;
}
}
调用函数
#include<stdio.h>
#define N 5
int main()
{
int a[N][N];
int i,j;
void zhuanzhi(int a[][N]);
for(i=0;i<N;i++)
for(j=0;j<N;j++)
scanf("%d",&a[i][j]);
zhuanzhi(a);
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
printf("%d ",a[i][j]);
printf("\n");
}
return 0;
}