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

C语言嵌套for循环打印星号图案故障排查求助

问题排查与修复方案

我一眼就瞅出问题所在啦——你用来控制内层星号数量的lines2变量只初始化了一次!

问题根源

你在代码最开始把lines2赋值为输入的lines,但外层循环每次执行lines--时,lines2并不会跟着重置。第一次内层循环跑完后,lines2就变成0了,后面的外层循环再执行时,内层循环的条件lines2>0不成立,自然就不会打印任何内容,所以你只能看到第一行星号。

修复后的完整代码

#include<stdio.h>
int main() {
    int lines;
    printf("Enter the number of lines : ");
    scanf("%d",&lines);
    
    // 外层循环控制行数,从输入的数字递减到1
    for(; lines > 0; lines--) {
        // 每次外层循环开始时,重置星号计数器为当前行数
        int lines2 = lines;
        // 内层循环打印当前行的星号
        for(; lines2 > 0; lines2--) {
            printf("*");
        }
        // 每行结束后换行
        printf("\n");
    }
    return 0;
}

额外优化建议

其实你也可以不用额外的lines2变量,直接在内层循环用临时变量,代码会更简洁直观:

#include<stdio.h>
int main() {
    int lines;
    printf("Enter the number of lines : ");
    scanf("%d",&lines);
    
    for(int i = lines; i > 0; i--) {
        // 内层循环打印i个星号
        for(int j = 0; j < i; j++) {
            printf("*");
        }
        printf("\n");
    }
    return 0;
}

这样输入5的话,就能得到你想要的输出:

*****
****
***
**
*

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:13:11