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

如何在C++的do-while循环中正确终止程序?

问题分析与修复方案

核心问题

你代码里的第一个if判断条件用错了逻辑运算符:原本应该用&&(逻辑与)来判断索引是否合法,结果写成了||(逻辑或)。这会导致非法索引(比如i=-1、i=10)也会进入第一个if块,执行myData[i]=v时触发数组越界访问,直接引发程序崩溃,根本走不到第二个if的退出逻辑。

修复步骤

  1. 将第一个if的条件i>=0||i<10改为i>=0&&i<10,确保只有合法索引才会修改数组元素;
  2. 可以把两个if合并成if-else结构,让逻辑更清晰;
  3. 内层循环的变量建议换个名字(比如idx),避免和外层的i重名,提升代码可读性。

修正后的代码

#include <iostream>
using namespace std;

int main() {
    int myData[10];
    for(int i=0;i<10;i++){
        myData[i] = 1;
        cout<<myData[i];
    }
    
    do{
        int i;
        cout<<endl<<"Input index: ";
        cin>> i;
        
        int v;
        cout<<endl<<"Input value: ";
        cin>>v;
        
        if(i>=0 && i<10){
            myData[i]=v;
            for(int idx=0;idx<10;idx++){
                cout<<myData[idx]<<" ";
            }
        } else {
            cout<<"Index out of range. Exit.";
            return 0;
        }
        
    }while(1);
} 

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 07:02:33