使用for循环输出指定年份列表的C++代码问题求助
问题分析与修复
你的代码存在几个关键问题,导致无法正确遍历并输出所有年份的对应数值:
- 循环内的
break语句会让for循环仅执行一次就直接终止,完全无法实现多年份遍历的需求,必须删除。 - 循环逻辑混乱:单次循环里同时输出当前年份
i和下一年i+1的学费,会造成年份重复输出或数量不符,应该每次循环只处理一个年份。 - 学费计算可以简化:
tuition = (tuition * INCREASE) + tuition等价于tuition *= (1 + INCREASE),后者更简洁高效。
另外注意,用户输入的yrs是「排除第一年的年数」,所以实际需要输出的总年份是yrs + 1(包含第一年)。
修正后的代码
case 1: cout << "Enter the number of credit hours for this semester: "; cin >> credHours; cout << "Enter the number of years to display (excluding year 1): "; cin >> yrs; tuition = credHours * LEVEL0; // 先输出第一年的学费 cout << "Year: 1 " << tuition << endl; // 循环处理剩下的yrs年 for (int i = 2; i <= yrs + 1; i++) { tuition *= (1 + INCREASE); cout << "Year: " << i << " " << tuition << endl; } break;
代码说明
- 单独输出第一年的学费,匹配用户输入「排除第一年」的设定。
- 从第2年开始循环,到
yrs+1年结束,刚好覆盖用户要求的所有年份。 - 每次循环先计算当年学费(基于上一年的增长比例),再输出对应年份和数值。
- 删除了导致循环提前终止的
break,确保所有年份都能被遍历输出。
内容的提问来源于stack exchange,提问作者SGYByeElo
相关产品推荐
相关产品推荐

