【c语言】二维数组的对角线对称交换
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)位置都进行了一次互换,就进行了两次交换,等于没有交换。