数组置换适用于a[N][N]的二维数组,数组置换即把a[3][4]换成a[4][3]、a[2][3]换成a[3][2]等,本代码适用于在存储空间足够大的所有N*N二维数组中。
代码如下:
#include <stdio.h>
#define N 4
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\t", a[i][j]);
putchar(’\n’);
}
}
int main()
{
int i, j, a[N][N];
printf("请为数组赋值:");
for (i = 0; i < N; i++)
for (j = 0; j < N; j++)
{
a[i][j] = i + j*N;
}
printf("初始数组:\n");
for (i = 0; i < N*N; i++)
{
printf("%d\t", *(a[0] + i));
if ((i + 1) %N== 0)
printf("\n");
}
convert(a);
printf("\n新数组:\n");
for (i = j = 0; i < N*N; i++)
{
printf("%d\t", *(a[0] + i));
j++;
if (j %N == 0) puts("");
}
return 0;
}
运行结果如下: