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

在VS Code中用if-else判断输入数字奇偶的C程序异常问题

问题分析与解决:C语言奇偶判断程序无输出问题

核心错误出在scanf("%d", num);这一行——scanf需要传入变量的内存地址,直接传变量num的值会导致程序触发未定义行为(比如非法内存访问),程序在执行到scanf后可能直接终止,后续的printf语句根本没机会执行,因此看不到预期输出。

修正方案

将scanf的参数改为&num(取地址运算符),让scanf能正确把输入的数值存储到num变量中。

修正后的完整代码:

#include <stdio.h>

int main()
{
    int num;
    printf("Enter a number:");
    scanf("%d", &num); // 此处修改为&num
    if (num % 2 == 0)
    {
        printf("%d is even.", num);
    }
    else
    {
        printf("%d is odd.", num);
    }
    return 0;
}

验证结果

运行修正后的代码,输入7后会得到预期输出:

Enter a number:7
7 is odd.

补充说明

  • num是int类型变量,存储的是整数数值;而scanf的%d格式符要求对应参数是int*(整数指针,即变量的内存地址)。
  • 直接传num相当于把一个随机整数(num未初始化,初始值随机)当作地址传给scanf,scanf尝试往非法地址写入数据,触发未定义行为,程序直接终止,后续输出逻辑无法执行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 21:32:13