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

为什么我的C++代码输出的首尾数值会出现重复?

问题原因

我们分两种输入场景拆解代码运行逻辑:

  • 当输入为1 5(i初始值小于e)时:
    1. 代码首先直接输出初始值1
    2. 第一个while(++i <= e)循环执行时,i先自增再做判断:i从1依次自增到5时,满足5<=5条件,输出.5,之后i会再次自增为6,不满足条件才跳出循环
    3. 进入第二个while(--i >=e)循环时,i先自减到5,判断5>=5满足条件,会再次输出.5,之后i自减到4时不满足4>=5才跳出,最终就多输出了一个5
  • 当输入为5 1(i初始值大于e)时:
    1. 代码首先直接输出初始值5
    2. 第一个while(++i <=e)判断6<=1不成立,直接跳过,此时i的值为6
    3. 进入第二个while(--i >=e)循环时,i先自减到5,判断5>=1满足,输出.5,之后继续自减输出4、3、2、1,因此多输出了一个5

修复方案

可以通过判断i和e的大小,只执行对应方向的单次遍历即可,参考修改后代码:

int i = 0;
int e = 0;

cin >> i >> e;

cout << i;
if (i < e) {
    while( ++i <= e ) {
        cout << "." << i;
    }
} else if (i > e) {
    while ( --i >= e ){
        cout << '.' << i;
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 09:27:05