C++中如何将偶数连续存储到数组?代码问题求解
问题分析与正确实现
先说说你代码里的几个明显问题:
- 语法错误:
int i, ;多了个逗号,属于无效的变量声明,编译器直接报错 - 数组越界:
num是长度为6的数组,合法下标只有0~5,但你的循环里i会跑到12,执行num[i] = i会访问数组范围外的内存,这属于未定义行为,程序可能崩溃或者输出乱码 - 存储逻辑错了:你用循环变量
i当数组下标,结果偶数都存在num[2]、num[4]这类位置,完全不是从num[0]开始的连续存储
满足需求的正确实现
情况1:自动生成6个偶数并存储显示
如果是要自动生成6个偶数(比如从2开始的连续偶数),不用预先初始化数组,只要用一个单独的变量跟踪数组的当前存储位置就行:
#include <iostream> using namespace std; int main() { int num[6]; // 未初始化,直接赋值覆盖 int arr_pos = 0; // 记录数组当前要存的位置,从0开始 // 生成偶数,直到填满数组 for (int i = 2; arr_pos < 6; i += 2) { num[arr_pos] = i; arr_pos++; } // 逐个输出数组里的偶数 cout << "存储的6个偶数:" << endl; for (int i = 0; i < 6; i++) { cout << num[i] << endl; } return 0; }
情况2:用户输入6个偶数并存储显示
如果是需要用户手动输入6个偶数,逻辑更直接,循环接收输入依次存到num[0]到num[5]就行,还可以加个输入校验确保用户输入的是偶数:
#include <iostream> using namespace std; int main() { int num[6]; // 未预先初始化,直接接收输入 cout << "请输入6个偶数:" << endl; for (int i = 0; i < 6; i++) { cin >> num[i]; // 校验输入,不是偶数就重新输入 while (num[i] % 2 != 0) { cout << "这不是偶数,请重新输入:" << endl; cin >> num[i]; } } // 逐个显示输入的偶数 cout << "你输入的6个偶数是:" << endl; for (int i = 0; i < 6; i++) { cout << num[i] << endl; } return 0; }
核心逻辑说明
要在未预先初始化的数组里把偶数存到连续内存,关键就两点:
- 用一个独立的下标变量(比如上面的
arr_pos)来控制存储位置,从0开始,每存一个偶数就把这个变量加1,确保数组下标从0到5连续使用 - 数组声明后不用特意初始化,直接对指定下标赋值就会覆盖内存里的随机值,这在C++里是合法操作
- 一定要注意数组的合法下标范围,别越界访问,不然程序会出问题
内容的提问来源于stack exchange,提问作者Hero Blog
相关产品推荐
相关产品推荐

