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

C语言:输入[5,25]整数n,按要求打印星号的问题排查

代码问题分析及修正

存在的问题

  • 输入判断逻辑错误:do-while循环的终止条件写错了。需求是输入[5,25]的整数,即n需要满足5 ≤ n ≤25,但原代码的循环条件是n <5 || n >=25,这会导致输入25时循环不会终止,因为n>=25成立,程序会一直要求重新输入,排除了合法的25。
  • 星号生成逻辑完全错误:用char star = '*'然后执行star += '*'是对字符的ASCII值做加法运算('*'的ASCII码是42,加42后变成84,对应字符'T'),根本无法生成多个星号,打印出来的会是乱码字符。
  • 缺少换行操作:原代码的printf("%c", star)没有换行,即使星号生成正确,所有内容也会挤在同一行,不符合每行对应数量星号的要求。

修正后的代码

#include <stdio.h>

int main(void)
{
    int n, i, j;

    do {
        printf("Input an int from [5, 25]: ");
        scanf("%d", &n);
    } while (n < 5 || n > 25); // 修正循环条件,包含25

    // 外层循环控制行数,从1到n
    for (i = 1; i <= n; i++) {
        // 内层循环打印当前行的i个星号
        for (j = 0; j < i; j++) {
            printf("*");
        }
        printf("\n"); // 每行结束后换行
    }

    return 0;
}

修正说明

  1. 调整do-while的循环条件为n <5 || n>25,确保只有当n在[5,25]范围内时才退出输入循环。
  2. 改用双层循环:外层循环控制行数(从1到n),内层循环负责打印当前行对应的星号数量。
  3. 每行打印完星号后添加printf("\n")实现换行,符合示例的格式要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 16:21:52