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

C语言代码运行仅输出第一行 无法打印全部字符串问题求解

问题原因

  • 程序执行到scanf("%lf", &numb);语句时会进入阻塞等待状态,需要你输入一个合法的浮点数并按下回车键后,才会继续执行后续逻辑。你没有完成输入操作的前提下,后续的printf语句自然不会运行,看起来就像仅输出了第一行提示内容。
  • 额外的潜在问题:你第一行的printf输出内容末尾没有添加换行符,C标准库的标准输出流(stdout)默认启用行缓冲机制,只有遇到换行符、缓冲区填满、程序主动刷新缓冲区或者程序退出时,才会把缓冲区的内容打印到屏幕上,部分运行环境下可能会出现第一行提示语也暂时不显示的问题。
  • 链接注意事项:代码中用到的ceil、floor、round函数都属于数学库,使用gcc等编译器编译时需要额外添加-lm参数链接数学库,否则会出现链接报错无法生成可执行文件。

修复后参考代码

#include <stdio.h>
#include <math.h>

int main(void)
{
    double numb;
    // 末尾加空格优化显示,也可加\n确保内容立刻输出
    printf("Please enter a decimal place number: ");
    scanf("%lf", &numb);

    numb = ceil(numb);
    printf("大于等于该值的最小整数是 %f\n", numb);
    numb = floor(numb);
    printf("小于等于该值的最大整数是 %f\n", numb);
    numb = round(numb);
    printf("距离该值最近的整数是 %f\n", numb);

    return 0;
}

编译运行示例

  1. 编译命令:gcc test.c -o test -lm
  2. 运行生成的可执行文件后,在提示语后输入任意浮点数(比如3.14)按回车,就能看到所有输出内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 04:27:03