c語言,假設已經有了一個二維數組,對其進行對角線對稱變換,如(0,1)與(1,0)變換,并打印。
示例
#include <stdio.h>void swap(int *a, int *b) {int temp = *a;*a = *b;*b = temp;
}int main() {int n = 3; // 假設數組大小為3x3int arr[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}; // 二維數組// 對角線對稱變換for (int i = 0; i < n; i++) {for (int j = i + 1; j < n; j++) {swap(&arr[i][j], &arr[j][i]);}}// 打印變換后的數組for (int i = 0; i < n; i++) {for (int j = 0; j < n; j++) {printf("%d ", arr[i][j]);}printf("\n");}return 0;
}
在這段代碼中,我們首先定義了一個3x3的二維數組arr,然后進行對角線對稱變換。在變換過程中,我們使用了一個swap函數來交換數組中的元素。最后,我們打印出變換后的數組。
我發現有些同學照著敲一遍可能會敲錯,注意第二個for循環中,int j=i+1;
,因為我們使用了swap交換函數,如果對整個二維數組遍歷一遍,結果是不變的。因為(0,1)位置與(1,0)位置都進行了一次互換,就進行了兩次交換,等于沒有交換。