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

为什么我的C语言程序运行时会跳过第二个scanf输入行?

问题原因
  • 核心错误出在scanf的格式控制符使用错误:scanf不支持%.2f这种带精度限制的写法,精度限制仅适用于printf输出场景。
  • 第一个读取宽度的scanf因为格式符非法执行失败,输入的内容残留在输入缓冲区中,后续读取门数量的scanf尝试将残留内容匹配%d整型格式失败,就直接跳过了输入环节。
修复方案
  1. 将两处读取浮点数的scanf语句中的格式符替换为合法的%f即可解决输入跳过问题:
// 修改前
scanf("%.2f",&width);
scanf("%.2f",&length);
// 修改后
scanf("%f",&width);
scanf("%f",&length);
  1. 如果需要限定浮点数保留两位小数,可以在读取完成后手动做精度处理,示例如下:
#include <math.h> // 需要引入math.h头文件使用round函数
// 读取完成后执行
width = round(width * 100) / 100;
length = round(length * 100) / 100;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 00:27:05