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

C++如何实现数组仅接收奇数、拒绝偶数的输入校验功能

问题定位

你代码的核心逻辑错误出在输入循环的计数器重复自增:for循环的头部本身就会在每次循环结束后执行一次i++,当你判断输入为奇数时,又手动执行了一次i++,相当于每次输入合法奇数,下标会直接+2,最终不仅会导致数组填充不全,还可能出现下标越界问题。同时你目前没有把奇偶判断逻辑抽成独立的Function2,不符合需求。

修复后的完整实现
#include <iostream>
#include <iomanip>
#include <string>

using namespace std;

// Function2:判断数字是否为奇数
bool isOdd(int n) {
    return n % 2 != 0;
}

// Function1:接收用户输入
void getUsrInput(int num[], int size) {
    int n;
    int i = 0;
    while (i < size) {
        cout << "请输入第" << i+1 << "个奇数:";
        cin >> n; 
        if (isOdd(n)) {
            num[i] = n;
            i++; // 只有输入合法才后移下标
        } else {
            cout << "输入无效,请只输入奇数!" << endl;
        }
    }
}

// Function3:展示数组内容
void displayArray(int num[], int size) {
    cout << "D I S P L A Y - PART C/B" << endl;
    cout << "========================" << endl;
    for (int i = 0; i < size; i++) {       
        cout << num[i] << endl;
    }
}

int main() {   
    const int size = 5;
    int num[size]; 
    getUsrInput(num, size);
    displayArray(num, size);
    return 0;
}
关键修改说明
  • 抽离了独立的isOdd函数作为要求的Function2,职责单一,专门处理奇偶判断逻辑
  • 把输入逻辑从for循环换成while循环,避免计数器自动自增的冲突,只有输入合法的奇数时才移动数组下标
  • 把展示逻辑抽成了独立的displayArray函数作为Function3,符合三个独立函数的需求
  • 调整了输入提示的文案,更符合实际输入场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 18:27:04