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

C语言除法函数IDE运行正常 自动检测报内存与运行时错误求助

核心错误点

  • 循环条件致命错误
    1. 运算符写反:opt =! 'd' 是赋值逻辑,等价于将!'d'的结果(0)赋值给opt,并非你想写的opt != 'd'判断逻辑
    2. 逻辑运算符错误:三个不等判断用||连接是恒成立的,不管opt输入什么值,至少会满足两个不等条件,直接触发死循环
  • 交互逻辑不兼容自动测试环境
    自动校验是无人工输入的运行环境,你代码中的scanf无法读取到有效输入,要么阻塞要么读到随机值,结合上面的死循环,很快会触发内存溢出,也就是你遇到的32/8用例的MemoryError
  • 负数除法逻辑错误
    C语言中%运算的余数符号和被除数保持一致,你做四舍五入判断的rest * 2 < num2逻辑没有考虑除数为负的场景,32/-8这类负除数用例会触发逻辑异常,导致运行时错误
  • 冗余逻辑&未定义变量风险
    32/8这类余数为0的场景完全不需要用户选择处理方式,额外触发交互逻辑属于多余设计;另外poscount和negcount如果没有在函数外全局声明,属于未定义变量,访问时也会触发非法内存访问错误

修复建议

  1. 先修改循环条件:正确的循环继续条件应该是opt != 'd' && opt != 'c' && opt != 'r',注意运算符是!=,逻辑符是&&
  2. 优先判断余数是否为0:如果rest == 0直接返回num1 / num2,不需要走交互逻辑
  3. 如果作业要求自动校验不需要交互,直接去掉所有printf、scanf相关的交互代码,按照作业要求的默认规则(比如默认截断/默认四舍五入)直接返回计算结果即可
  4. 补充负数场景的四舍五入判断,以及num2为0的除零错误处理
  5. 确保poscount和negcount已经在全局作用域正确声明

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 16:27:03