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

scanf函数输入异常:初学者折扣计算项目中需输入两次值的问题排查

搞定你的折扣计算程序问题!

嘿,我立马就发现问题所在啦!你看你代码里的这行:

scanf("%f\n", &regular);

这里的\n就是罪魁祸首!

为啥会要求输入两个数字?

scanf的格式字符串里如果加了\n,它会把所有空白字符(包括回车、空格、制表符)都跳过,直到读到一个非空白的内容才会停止。也就是说,你输入第一个原价按回车后,回车属于空白字符,程序还在傻等你输入下一个非空白的东西,所以才会让你输入第二个数字。

修正后的代码

把格式字符串里的\n删掉就好啦,修改后的代码如下:

#include <stdio.h>
int main(void) {
 float regular;
 printf("Regular price: ");
 scanf("%f", &regular); // 去掉了多余的\n
 float sale = regular * .85;
 printf(" sale price = %.2f\n", sale);
 return 0;
}

小提示

以后用scanf的时候,除非你明确需要处理连续的空白输入,否则别随便在格式字符串里加换行符或者空格哦,不然很容易出现这种“莫名其妙要多输入”的情况~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 15:34:06