题解 | 单组_二维字符数组

单组_二维字符数组

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;
}

全部评论

相关推荐

程序员花海:实习和校招简历正确格式应该是教育背景+实习+项目经历+个人评价 其中项目经历注意要体现业务 实习经历里面的业务更是要自圆其说 简历模板尽可能保持干净整洁 不要太花哨的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务