多输入分支下重复For Loop的简化实现方案咨询
优化重复循环的解决方案
你可以通过提取循环的可变参数来避免重复编写相同的循环代码。观察你的代码会发现,不同i值对应的循环逻辑完全一致,唯一的区别是外层for循环中a的起始值:
- 当
i=8时,起始值是1(即9-8) - 当
i=7时,起始值是2(即9-7) - 当
i=2时,起始值是7(即9-2)
由此可以总结出起始值的计算公式:start = 9 - i,基于这个规律就能把所有分支整合为一段通用代码,同时修正原代码中条件判断的错误(0 <= i <=8在C++中不符合预期,需要拆分为i >= 1 && i <=8)。
优化后的代码如下:
#include <iostream> using namespace std; int main() { int a, b, c, i; std::cout << "Please enter a number from 1 to 8: "; std::cin >> i; std::cout << "The value you entered is " << i << "\n"; if (i >= 1 && i <= 8) { int start = 9 - i; for (a = start; a <= 8; a++) { std::cout << "\n"; for (c = 7; c >= a; c--) { std::cout << " "; } for (b = 1; b <= a; b++) { std::cout << "#"; } } } return 0; }
关键优化点
- 提取可变参数:通过公式
9 - i计算循环起始值,统一所有分支的循环逻辑 - 修正条件判断:将错误的
0 <= i <=8改为i >=1 && i <=8,确保只有输入1-8的数值时才执行循环 - 精简变量:删除了未使用的
d,e,f,g,h变量,让代码更简洁
内容的提问来源于stack exchange,提问作者user19729408
相关产品推荐
相关产品推荐

