C语言:自定义一个二维数组,对其实现对角线对称变换,打印出变换之后的二维数组
时间: 2024-10-21 12:08:58 浏览: 54
在C语言中,为了实现一个二维数组的对角线对称变换,你可以先创建一个二维数组,然后通过遍历这个数组并将对角线上的元素复制到相对应的另一条对角线上来完成对称操作。这里是一个简单的示例:
```c
#include <stdio.h>
#define ROWS 5
#define COLS 5
// 自定义二维数组结构体
typedef struct {
int arr[ROWS][COLS];
} MyArray;
// 函数来打印二维数组
void print_array(MyArray arr) {
for (int i = 0; i < ROWS; ++i) {
for (int j = 0; j < COLS; ++j) {
printf("%d ", arr.arr[i][j]);
}
printf("\n");
}
}
// 函数实现对角线对称变换
void diagonal_symmetry(MyArray *arr) {
for (int i = 0; i < ROWS / 2; ++i) { // 只有奇数行的对角线才有元素需要对称
int temp = arr->arr[i][i]; // 保存左上角元素
arr->arr[i][i] = arr->arr[ROWS - i - 1][i]; // 将右下角元素放到左上角
arr->arr[ROWS - i - 1][i] = temp; // 将左上角元素放到右下角
}
}
int main() {
MyArray my_array;
// 初始化二维数组
for (int i = 0; i < ROWS; ++i) {
for (int j = 0; j < COLS; ++j) {
my_array.arr[i][j] = i + j; // 示例用简单的值填充
}
}
printf("原始数组:\n");
print_array(my_array);
diagonal_symmetry(&my_array); // 对数组进行对称变换
printf("\n对称后的数组:\n");
print_array(my_array);
return 0;
}
```
在这个例子中,我们首先定义了一个`MyArray`结构体表示二维数组,然后分别实现了打印数组和对角线对称变换的函数。在`main`函数中,我们初始化了数组并进行了对称变换,最后打印出了原始和对称后的数组。
阅读全文