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

C语言判断数字奇偶程序输入超5位时输出错误如何解决

问题原因
  • 整数溢出:Turbo C是16位编译环境,默认int类型占2字节,可表示的有符号整数范围为-32768~32767。你输入的123456远大于该范围上限,发生整数溢出,高位被截断后的值就是你输出里的-7616,属于未定义行为。
  • 逻辑分支错误:你的代码仅将打印偶数的语句放在if判断块中,无论判断结果是否成立,打印奇数的语句都会执行,所以偶数场景下会同时输出EVEN和ODD两行结果。
  • 额外小问题:printf("Enter Integer: ", number);中的number是多余参数,格式化字符串没有对应占位符,不会生效但也不影响运行。
修复方案
  1. 将变量类型从int替换为long,long在Turbo C中占4字节,可表示范围为-2147483648~2147483647,可容纳更长的整数,同时对应修改scanf和printf的格式化符为%ld。
  2. 补充else分支,将打印奇数的语句放入else块,保证两种判断分支互斥执行。

修复后的参考代码:

#include <stdio.h>
#include <conio.h>

long number;

int main()
{
    clrscr();
    
    printf("Enter Integer: ");
    scanf("%ld", &number);
    
    if ((number % 2) == 0)
    {
        printf("%ld is EVEN.", number);
    }
    else
    {
        printf("%ld is ODD.", number);
    }
    
    getch();
    return 0;
}

如果需要支持更长的数字输入,避免溢出问题,可以直接读取输入字符串,判断最后一位字符是否为0/2/4/6/8即可,这种方案不受整数类型长度限制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 01:24:07