为什么我的C++代码输出的首尾数值会出现重复?
问题原因
我们分两种输入场景拆解代码运行逻辑:
- 当输入为
1 5(i初始值小于e)时:- 代码首先直接输出初始值
1 - 第一个
while(++i <= e)循环执行时,i先自增再做判断:i从1依次自增到5时,满足5<=5条件,输出.5,之后i会再次自增为6,不满足条件才跳出循环 - 进入第二个
while(--i >=e)循环时,i先自减到5,判断5>=5满足条件,会再次输出.5,之后i自减到4时不满足4>=5才跳出,最终就多输出了一个5
- 代码首先直接输出初始值
- 当输入为
5 1(i初始值大于e)时:- 代码首先直接输出初始值
5 - 第一个
while(++i <=e)判断6<=1不成立,直接跳过,此时i的值为6 - 进入第二个
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
相关产品推荐
相关产品推荐

