寫一個函數,使給定的一個3X3的二維整型數組轉置,即行列互換
題目解析:
進行數組的行列互換,其關鍵在於數組互換的表達式 ar[i] [j] = ar[j] [i];其次在循環的時候,內層循環不能到達最大列,需要根據此時是第幾行的交換來決定循環的次數,否則有可能數組行列交換之后最后又交換回原來的形狀了。
代碼示例
#include<stdio.h>
void PrintArray(int ar[3][3])
{
for(int i=0; i<3; ++i)
{
for(int j=0; j<3; ++j)
{
printf("%d ", ar[i][j]);
}
printf("\n");
}
}
void ReverseArray(int ar[3][3])
{
int tmp;
for(int i=0; i<3; ++i)
{
for(int j=0; j<i; ++j)
{
if(i != j) //中間數不發生變化
{
//交換兩個數
tmp = ar[i][j];
ar[i][j] = ar[j][i];
ar[j][i] = tmp;
}
}
}
}
int main()
{
int array[3][3] =
{
{1,2,3},
{4,5,6},
{7,8,9}
};
printf("轉置前:\n");
PrintArray(array);
//進行數組轉置
ReverseArray(array);
printf("轉置后:\n");
PrintArray(array);
return 0;
}