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

如何在C++中使用单个循环打印直角三角形 故障代码求排查

问题排查与修复

现有代码存在的问题

  • 语法错误:第二个if分支中star变量后缺少赋值语句和分号,代码无法正常编译
  • 循环次数不足:当前循环仅执行n次,而打印n行直角三角形总共需要输出n*(n+1)/2个星号加n个换行,远大于n次循环,不可能完成需求
  • 逻辑错误:第一个if分支只要star < n就持续打印星号并触发continue,会直接在一行内打印出n个星号,完全没有换行逻辑,无法输出多行三角结构

正确的单循环实现代码

while循环版本

#include<iostream>
using namespace std;
int main()
{
    int n;
    cin >> n;
    int cur_line = 1; // 当前要打印的行号
    int cur_star = 0; // 当前行已经打印的星数
    // 循环持续到打印完第n行为止
    while(cur_line <= n) {
        if(cur_star < cur_line) {
            cout << "*";
            cur_star++;
        } else {
            // 当前行星数打满,换行,切到下一行
            cout << endl;
            cur_line++;
            cur_star = 0;
        }
    }
    system("pause");
    return 0;
}

for循环版本

#include<iostream>
using namespace std;
int main()
{
    int n;
    cin >> n;
    // 循环总次数等于所有行的星数总和
    for(int i=1, line=1; i<=n*(n+1)/2; i++) {
        cout << "*";
        // 每打满当前行对应的星数就换行
        if(i == line*(line+1)/2) {
            cout << endl;
            line++;
        }
    }
    system("pause");
    return 0;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 04:36:04