C语言scanf

大神们,请教下,C语言scanf
最新回答
短笛

2024-12-01 10:18:48

题目有问题,A与C选项完全相同,应该是印刷错误。
输入的格式是%d%c%d%c,注意四个输入项之间没有空格。
格式输入时,数字(%d)允许1个或多个空格,字符(%c)不允许有空格。
系统在读取d%时,前面可以有(多个)空格,但紧接着输入%c时,不能有空格(否则把空格读入字符了)。
本例可以加空格的地方最多如下:
□……□10A□……□20B□……□
□代表一个空格
□……□代表可以有多个空格
其他地方绝对不能加。
当然这些可加空格的地方都可以不加,写成这样也是可以的:
10A20B
不清楚之处,请留言。
追问
也就是说%d %c %d %c之间有空格的话是不是输入A和B前面可以有空格
追答
对。
而且是不限个数的空格。
依賴式颓废

2024-12-01 06:52:50

以%d%c指定输入格式时,对应的键盘输入不能以整数+空格+字符的方式,因为%d会匹配一个整数,而%c会与空格匹配(空格也是一个有效的输入字符),从而导致%c匹配不到你要输入的真正字符。
所以可以排除所有数字+空格的情况。
答案是A、C。
宾狗

2024-12-01 21:12:46

C(A和C应该没有区别……吧??)
C语言scanf读取变量值:
如果读数字,数字间有空格会自动跳过一直到读到下一个数字(因为空格不是字符);
但因为空格是char型,如果数字a1后跟着空格,随后的c1就会把空格当作输入给自己的值。
所以说,读完c1即使有空格也没问题了,因为a2会自动把空格跳过去
可以自己写程序跑一跑,实践出真知嘛
我走开你没负累

2024-12-01 22:15:37

B
ac选项一样,排除。
scanf 从键盘输入数据时,给多个变量赋的值之间一定要用空格、回车或者 Tab 键隔开,用以区分是给不同变量赋的值。