发布网友 发布时间:2023-11-13 01:05
共3个回答
热心网友 时间:2024-11-30 09:19
因为在C语言中空格也算是一种字符,当你输入第一个正型后,
空格一下,C语言就会识别你输入的这个空格为你在正型后输入的字符。
#include <stdio.h>你在scanf的%d后面加上一个空格就可以正常输入输出了!
追问我知道处理办法,是想问后面加了那几条语句的意思,为什么结果可以知道第二个输入被替换了。主要解释下定义了一个变量num=0,scanf("%d%c%lf",&a,&ch,&b);改成了num=scanf("%d%c%lf",&a,&ch,&b);追答num=scanf("%d%c%lf",&a,&ch,&b)
表示你输入的(50空格a空格11.)有几个被正确的读入你定义的a,ch,b中
a读取50,
ch读取空格
b是无法读取a的,因为类型不匹配
因此输入的(50空格a空格11.)只读取到第一个空格,
所以num记录的是机器读取到第几的数!
这样说你应该可以明白吧!
热心网友 时间:2024-11-30 09:19
这样输入就ok了
热心网友 时间:2024-11-30 09:20
注意一个地方,在输入字符型数据时,你在之前为a输入了一个整形数,后加了个' ' 字符,追答我记得scanf返回的是成功转换并存储于参数中的值的个数,
由于输入”5 a 11“
除了%c 空白(空格。\n。tab)均不读入.....
5赋给a 成功
' '赋给ch 成功
之后赋给b的 失败
两个成功 所以num=2