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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.20 09:35:31