You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言如何实现二维数组列间顶部字符移动的功能函数?

实现代码
void move_characters(const int rows, const int columns, char col[rows][columns], int x, int y)
{
    // 列号非法或源列与目标列一致时直接返回
    if (x < 0 || x >= columns || y < 0 || y >= columns || x == y) {
        return;
    }

    int src_row = -1;
    char move_ch = ' ';
    // 从源列顶部(行索引从小到大)查找第一个非空字符
    for (int i = 0; i < rows; i++) {
        if (col[i][x] != ' ') {
            src_row = i;
            move_ch = col[i][x];
            break;
        }
    }
    // 源列无可用字符直接返回
    if (src_row == -1) {
        return;
    }
    // 移除源列对应位置的字符
    col[src_row][x] = ' ';

    int dest_row = -1;
    // 从目标列底部(行索引从大到小)查找第一个空位
    for (int i = rows - 1; i >= 0; i--) {
        if (col[i][y] == ' ') {
            dest_row = i;
            break;
        }
    }
    // 目标列已满无空位时直接返回
    if (dest_row == -1) {
        return;
    }
    // 写入字符到目标列对应位置
    col[dest_row][y] = move_ch;
}
逻辑说明
  • 前置校验避免数组越界访问,减少无效操作
  • 源列查找逻辑符合"取顶部第一个字符"的要求,找到后立即清空对应位置
  • 目标列从底部开始查找空位,保证字符优先落到最底部,已有字符时自动堆叠在现有字符顶部,完全匹配规则要求
  • 兼容任意行列数的二维字符数组,无需修改代码适配数组大小

内容的提问来源于stack exchange,提问作者helperman200

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 14:15:01