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

LeetCode第1题two_sum C语言提交报错与运行结果异常排查

LeetCode两数之和C代码报错&运行异常问题定位

提交时25行main类型冲突报错原因

LeetCode的C语言判题环境会自动预置标准int main(int argc, char *argv[])入口函数,负责读取测试用例、调用用户实现的功能函数、校验输出结果,提交代码时不需要用户自行编写main函数。
你自己编写的代码仅22行,报错指向的25行main是平台自动追加的内置入口,因为你在提交代码里自定义了void main(),和平台内置main的函数类型、参数列表不匹配,因此触发类型冲突报错。

本地运行无输出、结果错误的代码问题

你写的控制台版本代码存在多处语法和逻辑错误:

  • 变量名大小写错误:读入数组的语句scanf("%d", &a[I]);中使用了大写I,和之前定义的循环变量小写i不是同一变量,读入的数值不会存入目标数组,触发未定义行为
  • 循环递增逻辑错误:两层遍历的for循环中,递增条件错写为n++,没有对循环变量i、j做递增,会导致死循环、数组越界,根本无法执行到结果打印逻辑,这是本地无输出的核心原因
  • main函数写法不符合C标准:标准C规定main函数返回值为int类型,void main()属于非标准写法,仅部分本地编译器做了兼容,无法在严格编译环境下运行
  • 数组长度固定为10:固定长度的数组无法适配长度超过10的输入场景,会触发数组越界
  • 交互逻辑不符合OJ提交要求:你写的printf提示、scanf读入是本地控制台程序的交互逻辑,LeetCode平台不会通过标准输入传参给你写的main函数,而是直接传参调用题目指定的接口函数,这类交互代码在提交时必须全部删除。

LeetCode平台可正常提交的两数之和暴力解法参考

/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
int* twoSum(int* nums, int numsSize, int target, int* returnSize){
    *returnSize = 2;
    int* result = (int*)malloc(sizeof(int) * 2);
    for (int i = 0; i < numsSize; i++) {
        for (int j = i + 1; j < numsSize; j++) {
            if (nums[i] + nums[j] == target) {
                result[0] = i;
                result[1] = j;
                return result;
            }
        }
    }
    return result;
}

本地调试时可以自行在代码外补充main函数做输入输出测试,提交前删除自定义的main和相关控制台交互代码即可。

内容的提问来源于stack exchange,提问作者B M PAVAN

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 18:45:42