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

如何在循环中独立统计奇数数量——解决C++程序奇数计数累计叠加问题

解决C++程序中奇数计数累加的问题

嘿,这个问题其实很常见,核心原因就是你的计数器变量初始化时机不对!

你把odd变量定义在do-while循环的外面,所以它的数值会在多次循环之间保留下来,导致每次新的统计都会在上一次的结果上累加。要实现每次输入10个整数都独立统计,只需要确保每次循环开始时计数器都被重置为0就行,这里有两种简单的解决方式:

方案1:将计数器移到循环内部初始化

把int odd = 0;放到do代码块的最开头,这样每次进入循环时,都会创建一个全新的计数器并初始化为0,完美避免累加问题:

int i, value;
char option;
do {
    int odd = 0; // 每次循环开始时重置计数器
    for (i=1;i<=10;++i) {
        cout << "Enter integer no. " << i << ": ";
        cin >> value;
        // 优化:兼容负数的奇数判断方式
        if (value % 2 != 0) {
            odd++;
        }
    }
    cout << "\nThere are " << odd << " odd numbers.\n";
    cout << "\nDo you want to try again? \nEnter Y for Yes and N for No: ";
    cin >> option;
    if (option == 'N') {
        cout << "\nThank you for using this program. \nProgram Terminating!";
        break;
    }
} while (option == 'Y');
return 0;

方案2:手动重置计数器值

如果你需要让odd变量在循环外也能访问(比如后续有其他逻辑需要用到它),可以在每次循环开始时手动将其重置为0:

int i, value;
int odd = 0;
char option;
do {
    odd = 0; // 手动重置计数器为0
    for (i=1;i<=10;++i) {
        cout << "Enter integer no. " << i << ": ";
        cin >> value;
        if (value % 2 != 0) {
            odd++;
        }
    }
    // 后续输出和判断逻辑不变
    cout << "\nThere are " << odd << " odd numbers.\n";
    cout << "\nDo you want to try again? \nEnter Y for Yes and N for No: ";
    cin >> option;
    if (option == 'N') {
        cout << "\nThank you for using this program. \nProgram Terminating!";
        break;
    }
} while (option == 'Y');
return 0;

额外小提示

原代码中value % 2 == 1的判断逻辑在处理负奇数时会出错(比如-1 % 2在C++中结果是-1,不等于1),改成value % 2 != 0或者(value & 1) == 1可以兼容所有整数的奇数判断哦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 14:02:46