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; // 假设数组大小为3x3 int 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)位置都进行了一次互换,就进行了两次交换,等于没有交换。