关于c语言中scanf的问题?

为什么输入了逗号之后,输出值后面两个都是0,00000,而不是第二个是零,第三个是2

scanf后面的%f格式,必须与输入格式相一致
按您的输入,中间用逗号,与scanf中%f之间格式不符,结果只接收了第1个变量,后面没接收,因而是零(有的编译器会是随机数),正确写法:
(1)如果:scanf中%f之间用空格,即:scanf("%f %f %f",&a,&b,&c);应该输入1 2 3(中间有空格)
(2)如果:scanf中%f之间用逗号,即:scanf("%f,%f,%f",&a,&b,&c);应该输入1,2,3(中间有,)
但不能没有分隔符号,您的写法,要求3个数连续输入,这样:人都没办法分辨,机器更没法分了,如:你输入12.345.67.89,是啥意思?
12.34 5.6 7.89?
12.3 45.6 7.89?
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-12-27
87和6543.000000;看到scanf()函数中的"%2d"没有?在执行该函数时系统只读入用户输入的前两个数字并把其赋给a,当然在你输入876543.0时a=87,然后把剩下的数值赋给b;然后输出a和b分别为87,6543.000000(float型默认输出小数点后6位有效数字)。
第2个回答  2020-01-01
a=87
b=6543.0000
因为第一个百分位宽是2位所把87赋给a
后面6543.0是浮点数赋给b
第3个回答  2019-12-24
scanf中%f之间没有空格,导致输入数据,发生偏差,建议在%f之间用空格,然后用空格隔开输入数据。追问

这个问题我知道,但是不知道为什么后面会是两个0

本回答被网友采纳
第4个回答  2019-12-24
你输入的 是什么

追答: 输入 1 2 3 试试看追问

1,2,3

相似回答