题解 | 单组_二维字符数组
单组_二维字符数组
https://www.nowcoder.com/practice/2316c1fedff14a8d91694a26c9da3310
#include <stdio.h>
#include <stdlib.h>
void reverse_row(char *arr, int size)
{
for (int i = 0; i < size / 2; i++)
{
char tmp = arr[i];
arr[i] = arr[size - i - 1];
arr[size - i - 1] = tmp;
}
}
void reverse_col(char **arr, int rows)
{
for (int i = 0; i < rows / 2; i++)
{
char *tmp = arr[i];
arr[i] = arr[rows - i - 1];
arr[rows - i - 1] = tmp;
}
}
int main() {
int n, m;
scanf("%d %d", &n, &m);
// 消耗换行符
getchar();
// 分配二维字符数组
char **arr_pos = (char **)malloc(n * sizeof(char *));
for (int i = 0; i < n; i++) {
arr_pos[i] = (char *)malloc((m) * sizeof(char));
}
// 读取字符串
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
arr_pos[i][j] = getchar();
}
getchar(); // 消耗换行符
}
for (int i = 0; i < n; i++)
{
reverse_row(arr_pos[i], m);
}
reverse_col(arr_pos, n);
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
printf("%c", arr_pos[i][j]);
}
printf("\n");
}
for (int i = 0; i < n; i++) {
free(arr_pos[i]);
}
free(arr_pos);
return 0;
}

