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

C语言do-while循环重复打印输入提示问题及代码修正咨询

问题分析与解决

你的代码核心逻辑没问题,但输入1-8以外的数值时提示语不重复显示,大概率是标准输出缓冲区未及时刷新导致的——默认情况下,stdout是行缓冲模式,只有遇到换行符\n时才会把缓冲区内容输出到屏幕。你的提示语末尾没有换行,所以内容可能卡在缓冲区里,没有立即显示。

修正后的代码

#include <stdio.h>
#include <cs50.h> // 使用get_int需包含CS50头文件

int main(void)
{
    int h;
    do{
        printf("Height(a number from 1 to 8): ");
        fflush(stdout); // 强制刷新输出缓冲区,确保提示语立刻显示
        h = get_int("");
    } while((h < 1) || (h > 8));

    // 生成#三角形
    for(int i = 0; i < h; i++){
        for(int j = 0; j <= i; j++){
            printf("#");
        }
        printf("\n");
    }

    return 0;
}

关键修正点

  • 添加fflush(stdout);:在打印提示语后强制刷新输出缓冲区,避免提示语因行缓冲规则延迟显示。
  • 补充#include <cs50.h>:使用CS50库的get_int函数必须包含对应头文件,否则无法编译。
  • 整理代码结构:移除while循环后多余的独立代码块括号,让逻辑更清晰。

效果验证

输入9、0等超出范围的整数时,程序会重复打印提示语;输入非整数内容时,get_int会自动要求重新输入整数,直到你输入1-8范围内的数值,程序才会生成对应的#三角形。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 17:42:36