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

请求编写统计奇数、偶数与零数量的C++程序

修复统计整数奇偶及零数量的C++程序

嘿,我来帮你搞定这个统计整数奇偶和零数量的C++程序问题~原代码里藏着几个容易踩的坑,我给你一步步修正并讲清楚问题出在哪:

原代码的核心问题

  • 循环计数器类型错误:用float counter作为循环计数器不合适,浮点型可能因为精度问题导致循环次数出错,换成int才是正确选择。
  • switch判断逻辑失效:number / 2没法覆盖所有偶数情况,比如4/2=2、-4/2=-2,这些值不在现有case里,根本不会被统计成偶数;而且负数奇数的判断虽然碰巧能命中,但逻辑本质是错的,应该用**取模运算number % 2**来判断奇偶(奇数模2结果为1或-1,偶数/零模2结果为0)。
  • 缺少break导致case贯穿:switch里的case执行完后没有break,会直接跑到下一个case,比如统计零的时候,会同时把零也算进奇数里,导致统计结果完全错误。
  • 赋值运算符误用:if (number=0)是把0赋值给number,不是判断是否相等,正确的相等判断应该用==。

修正后的完整代码(直观版)

#include <iostream>
using namespace std;
const int LIMIT = 10;

int main() {
    // 循环计数器改用int,避免浮点精度问题
    int counter;
    int number = 0;
    int zeros = 0;
    int odds = 0;
    int evens = 0;

    cout << "Please enter " << LIMIT << " integers, positive, negative, or zeros." << endl;
    cout << "The numbers you entered are:" << endl;

    for (counter = 1; counter <= LIMIT; counter++) {
        cin >> number;
        
        // 先单独判断零,再区分奇偶
        if (number == 0) {
            zeros++;
        } else if (number % 2 == 0) {
            evens++;
        } else {
            odds++;
        }
    }

    // 补充完整的结果输出
    cout << "\n统计结果:" << endl;
    cout << "零的数量:" << zeros << endl;
    cout << "偶数的数量:" << evens << endl;
    cout << "奇数的数量:" << odds << endl;

    return 0;
}

如果你偏好使用switch的版本

#include <iostream>
using namespace std;
const int LIMIT = 10;

int main() {
    int counter;
    int number = 0;
    int zeros = 0;
    int odds = 0;
    int evens = 0;

    cout << "Please enter " << LIMIT << " integers, positive, negative, or zeros." << endl;
    cout << "The numbers you entered are:" << endl;

    for (counter = 1; counter <= LIMIT; counter++) {
        cin >> number;
        
        switch (number % 2) {
            case 0:
                // 模2为0时,区分零和非零偶数
                number == 0 ? zeros++ : evens++;
                break; // 必须加break,防止case贯穿
            case 1:
            case -1:
                odds++;
                break;
        }
    }

    cout << "\n统计结果:" << endl;
    cout << "零的数量:" << zeros << endl;
    cout << "偶数的数量:" << evens << endl;
    cout << "奇数的数量:" << odds << endl;

    return 0;
}

这两个版本都能正确统计输入的10个整数中零、偶数、奇数的数量,不管输入的是正数、负数还是零都能准确判断~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:56:37