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

C++自定义奇偶判断函数失效,始终输出奇数求解决

问题排查与解决:奇偶判断函数失效的原因

错误根源

你的iseven函数判断逻辑完全错误。C++中整数除法a / 2是截断取整的,只有当a是0或绝对值小于2的负数时,a / 2才会等于0——比如-1/2=0,但绝大多数输入(比如2、3、4这类常规数字)都会让a/2的结果大于0,导致函数永远返回0,主函数因此始终走else分支输出奇数结果。

正确的判断方式

判断奇偶性应该用取模运算符%,它会返回除法的余数。偶数除以2余数为0,奇数余数为1,这才是正确的判断依据。

修正后的代码

#include <iostream>

using namespace std;

int iseven(int a)
{
    if (a % 2 == 0) { // 替换为取模判断逻辑
        return 1;
    }
    return 0;
}

int main()
{
    int num;
    cin >> num;

    if (iseven(num)) {
        cout << "number even";
    }
    else {
        cout << "odd number"; // 顺带修正了原输出里多余的"h"
    }
    return 0;
}

可选优化

如果想让代码更简洁且语义更清晰,可以改用bool类型作为返回值:

#include <iostream>

using namespace std;

bool iseven(int a) {
    return a % 2 == 0; // 直接返回表达式结果
}

int main()
{
    int num;
    cin >> num;

    cout << (iseven(num) ? "number even" : "odd number");
    return 0;
}

这个版本不仅更短,bool类型也更贴合“是否为偶数”的逻辑语义,同时负数的情况也能正确处理(比如-4%2=0,会被判定为偶数)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 21:10:26