C语言运行返回Id returned 1 exit status错误,无法定位问题求助
C语言报错Id returned 1 exit status 排查方案
这个报错是典型的编译/链接阶段失败的提示,你提供的代码存在以下几处错误:
- 调用了未定义的
welcome()函数:main函数开头直接调用了welcome(),但给出的代码中没有该函数的声明或定义,链接阶段找不到函数实现直接触发编译失败。 - cost函数存在多处逻辑和语法问题:
- 形参名为
wednesday,但函数内部又重新定义了同名局部变量discount,外部传入的参数完全没有被使用,且局部变量discount未初始化就参与条件判断,属于未定义行为。 - 局部变量
price未初始化就直接做减法运算,计算结果完全不可预期,且该函数没有返回值也没有输出逻辑,计算结果无法被外部获取,没有实际作用。
- 形参名为
- main函数返回值不符合C语言标准:标准C规定main函数的返回值为int类型,
void main属于老旧的非标准写法,部分编译器会直接报错。
修复后的可运行代码
#include <stdio.h> // 补全缺失的welcome函数,可根据需求调整内部输出内容 void welcome(){ printf("Welcome to the settlement system\n"); } int wednesday(){ int discount; printf("You are lucky on Wednesdays! You can get discount!\n"); printf("Is today wednesday? Yes = 1 No= 2\n"); scanf("%d", &discount); return discount; } // 重构cost函数:传入折扣标记和商品原价,返回结算后的价格 int cost(int discount, int original_price){ if(discount == 1){ return original_price - 2; } return original_price; } int main(){ int discount; // 示例原价,可改为用户输入或自定义数值 int original_price = 10; int final_price; welcome(); discount = wednesday(); final_price = cost(discount, original_price); printf("Final settlement price: %d\n", final_price); return 0; }
修复说明
- 补全了缺失的
welcome函数定义,解决了链接阶段找不到函数的问题 - 重构了cost函数,直接使用传入的discount参数,删除了无效的重复变量定义,增加原价入参和返回值,可将计算结果返回给main函数使用
- 将main函数改为标准int返回类型,补充返回值0,新增了原价设置和最终价格输出逻辑,可直接看到运行结果
内容的提问来源于stack exchange,提问作者Alissa Brave
相关产品推荐
相关产品推荐

