C++代码执行异常:部分执行且结果不符合预期
C++代码执行异常:部分执行且结果不符合预期
嘿,我来帮你排查这段代码的问题!你遇到的“输入后没反应”和“没输出目标偶数元素”的情况,主要是两个核心问题导致的,咱们一步步拆解:
问题1:循环无限执行,程序卡住无法继续
你的do-while循环里,i++这个自增操作写在了循环外面!初始i=1,每次循环只执行输入操作,但i的值一直保持1不变,循环条件i<n||i==n(其实等价于i<=n)永远成立,程序会一直要求你输入数字,根本停不下来,自然看不到后续的结果输出。
问题2:仅统计偶数数量,未输出具体元素
你原本期望看到所有能被2整除的元素,但当前代码只做了计数(用变量t统计偶数个数),没有把找到的偶数打印出来,这完全不符合你的预期需求。
修正后的代码
#include <iostream> using namespace std; int main() { int n, i = 1, a[100], t = 0; // 显式初始化变量,逻辑更清晰 cout << "n="; cin >> n; do{ cin >> a[i]; if(a[i] % 2 == 0){ t++; // 找到偶数时直接打印,满足查看具体元素的需求 cout << a[i] << " "; } i++; // 将i的自增移到循环内部,确保循环能正常终止 }while(i <= n); // 简化循环条件,等价于原条件但更易读 cout << endl; if(t == 0){ cout << "Nu sunt elemente pare."; } else { cout << "\n总共找到 " << t << " numere pare"; } return 0; }
关键修正点说明
- 把
i++移到do-while循环内部,每次输入后i递增,当i超过n时循环终止; - 在判断为偶数的分支里添加打印语句,直接输出找到的偶数;
- 显式初始化变量
t为0(全局变量默认初始为0,但局部变量显式初始化是更好的编程习惯); - 简化循环条件为
i <= n,逻辑更直观; - 添加换行符优化输出格式,让内容更易读。
备注:内容来源于stack exchange,提问作者DavidTKD
相关产品推荐
相关产品推荐

