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

使用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;

代码说明

  1. 单独输出第一年的学费,匹配用户输入「排除第一年」的设定。
  2. 从第2年开始循环,到yrs+1年结束,刚好覆盖用户要求的所有年份。
  3. 每次循环先计算当年学费(基于上一年的增长比例),再输出对应年份和数值。
  4. 删除了导致循环提前终止的break,确保所有年份都能被遍历输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 11:22:04