C++统计数组偶数个数程序运行输出错误问题求解
代码错误说明
你的代码存在4处会导致运行异常、输出错误的问题:
- 静态数组定义不合法:C++里长度固定的静态数组必须在编译阶段确定大小,
int arr[] = {}定义的是长度为0的空数组,后续通过下标写入元素属于内存越界访问,会触发未定义行为,可能出现数据错乱、程序崩溃等问题。 - 逻辑位置错误:统计偶数的循环中,
cout << par和return 0被写在了循环体内部,循环第一次执行就会打印当前计数、直接终止程序,无法完成全数组的遍历统计。 - 冗余逻辑干扰输出:你额外写了一段遍历打印所有数组元素的循环,会把输入的数组元素连续输出,和最终展示偶数计数的需求无关,会打乱输出结果。
- 代码层级混乱:多余的嵌套括号很容易引发逻辑归属错误,不利于排查问题。
修正后代码
#include <iostream> using namespace std; int main() { int par = 0; int tam; cin >> tam; // 读取数组长度后再定义对应大小的数组存储元素 int arr[tam]; // 读取用户输入的数组元素 for (int i = 0; i < tam; i++ ){ cin >> arr[i]; } // 遍历统计偶数个数 for (int i = 0; i < tam; i++){ if (arr[i] % 2 == 0) { par++; } } // 全量统计完成后输出最终结果 cout << par; return 0; }
兼容性提示
如果你使用的是MSVC这类不支持C风格变长数组的编译器,可以引入<vector>头文件,用动态数组替代静态数组,写法如下:
// 开头添加头文件引用 #include <vector> // 原数组定义位置替换为 vector<int> arr(tam);
内容的提问来源于stack exchange,提问作者Roberto Malatesta
相关产品推荐
相关产品推荐

