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

C/C++二维数组升序排序及2x2网格输出问题求助

修正C语言排序算法并实现2x2网格输出

Hey there! Let's fix up your sorting code and get that 2x2 grid output working properly. Since you're new to C/C++, I'll break this down with a complete, working example and explain each part clearly.

First, here's the full corrected code that includes a separate input function, a working sort, and 2x2 grid output:

#include <stdio.h>

// 单独的数组输入函数
void inputArray(int arr[], int size) {
    printf("请输入%d个整数:\n", size);
    for (int i = 0; i < size; i++) {
        scanf("%d", &arr[i]);
    }
}

// 升序排序函数(新手友好的冒泡排序)
void sortArray(int arr[], int size) {
    for (int i = 0; i < size - 1; i++) {
        for (int j = 0; j < size - i - 1; j++) {
            // 如果当前元素大于下一个,交换位置
            if (arr[j] > arr[j + 1]) {
                int temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
    }
}

// 2x2网格形式输出数组
void print2x2Grid(int arr[]) {
    printf("\n升序后的2x2网格:\n");
    for (int i = 0; i < 4; i++) {
        printf("%d\t", arr[i]);
        // 每2个元素换行,形成2列
        if ((i + 1) % 2 == 0) {
            printf("\n");
        }
    }
}

int main() {
    // 2x2网格对应4个元素,定义固定大小的数组
    int array[4];
    // 调用输入函数填充数组
    inputArray(array, 4);
    // 调用排序函数完成升序排序
    sortArray(array, 4);
    // 调用网格输出函数展示结果
    print2x2Grid(array);
    
    return 0;
}

关键修正和新手注意点:

  • 输入函数拆分:把输入逻辑独立成函数,让代码结构更清晰,也方便后续复用。
  • 排序逻辑修正:
    • 新手常写错冒泡排序的循环边界(比如漏掉size - i - 1),这会导致重复比较已排好序的元素,甚至输出混乱。
    • 交换元素必须用临时变量temp,直接赋值会覆盖原有数据,这是排序失败的高频原因。
  • 2x2网格输出:通过(i + 1) % 2 == 0判断换行时机,每输出2个元素就切换到下一行,刚好形成2行2列的网格结构。

测试示例:

如果输入:3 1 4 2,程序会输出:

升序后的2x2网格:
1       2
3       4

要是你原来用的是其他排序算法(比如选择排序),可以把具体代码贴出来,我再帮你针对性调整!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:22:28