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

单组_二维字符数组

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

全部评论

相关推荐

03-03 23:12
已编辑
北京邮电大学 Java
书海为家:我来给一点点小建议,因为毕竟还在学校不像工作几年的老鸟有丰富的项目经验,面试官在面试在校生的时候更关注咱们同学的做事逻辑和思路,所以最好在简历中描述下自己做过项目的完整过程,比如需求怎么来的,你对需求的解读,你想到的解决办法,遇到困难如何找人求助,最终项目做成了什么程度,你从中收获了哪些技能,你有什么感悟。
你的简历改到第几版了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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