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

如何编写main函数对排序算法进行t次测试用例验证?

搞定多测试用例的Main函数编写

嘿,我来帮你完成这个main函数的编写,完美适配你已经实现的插入排序sort函数。下面是完整的解决方案,包含代码和关键细节解释:

整体思路

我们需要完成的流程很清晰:

  • 先读取测试用例的总数t
  • 循环t次,每次处理一个测试用例:
    1. 读取当前数组的大小n
    2. 读取n个整数存入数组
    3. 调用你已经实现的sort函数对数组排序
    4. 按要求格式输出排序后的数组(元素空格分隔,每个测试用例结果换行)

完整代码实现

#include <stdio.h>

// 这是你已经实现的插入排序函数(这里我写了一个标准实现作为示例)
void sort(int arr[], int n) {
    int i, key, j;
    for (i = 1; i < n; i++) {
        key = arr[i];
        j = i - 1;
        // 将比key大的元素向后移动
        while (j >= 0 && arr[j] > key) {
            arr[j + 1] = arr[j];
            j = j - 1;
        }
        // 插入key到正确位置
        arr[j + 1] = key;
    }
}

int main() {
    int test_count;
    // 读取测试用例总数
    scanf("%d", &test_count);
    
    // 遍历每个测试用例
    while (test_count--) {
        int arr_size;
        scanf("%d", &arr_size);
        
        // 变长数组存储元素(C99及以上支持,兼容性好)
        int arr[arr_size];
        
        // 读取数组的所有元素
        for (int i = 0; i < arr_size; i++) {
            scanf("%d", &arr[i]);
        }
        
        // 调用你的插入排序函数
        sort(arr, arr_size);
        
        // 输出排序后的数组,处理空格避免尾部多余空格
        for (int i = 0; i < arr_size; i++) {
            if (i != 0) {
                printf(" ");
            }
            printf("%d", arr[i]);
        }
        // 每个测试用例输出后换行
        printf("\n");
    }
    return 0;
}

关键细节说明

  • 输入处理:scanf("%d")会自动跳过所有空白字符(空格、换行、制表符),所以完全适配题目给出的输入格式,不用额外处理换行问题。
  • 数组存储:代码里用了变长数组(VLA)int arr[arr_size],这是C99标准支持的特性,大多数现代编译器(GCC、Clang等)都支持。如果你的编译器不支持VLA,可以改用动态内存分配:
    int *arr = (int*)malloc(arr_size * sizeof(int));
    // 使用完数组后记得释放内存,避免内存泄漏
    free(arr);
    
  • 输出规范:通过判断i != 0来添加空格,确保第一个元素前没有空格,最后一个元素后也不会多出来空格,输出格式更严谨。
  • 测试用例循环:用while(test_count--)的写法比for循环更简洁,每次循环后测试用例数减1,直到为0停止。

测试示例

比如输入题目给出的测试用例:

2
7
9 7 5 9 2 20 3
3
10 2 5

程序会输出:

2 3 5 7 9 9 20
2 5 10

完全符合要求!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 22:47:58