题目有问题,A与C选项完全相同,应该是印刷错误。输入的格式是%d%c%d%c,注意四个输入项之间没有空格。格式输入时,数字(%d)允许1个或多个空格,字符(%c)不允许有空格。系统在读取d%时,前面可以有(多个)空格,但紧接着输入%c时,不能有空格(否则把空格读入字符了)。本例可以加空格的地方最多如下:□……□10A□……□20B□……□□代表一个空格□……□代表可以有多个空格其他地方绝对不能加。当然这些可加空格的地方都可以不加,写成这样也是可以的:10A20B不清楚之处,请留言。 追问 也就是说%d %c %d %c之间有空格的话是不是输入A和B前面可以有空格 追答 对。 而且是不限个数的空格。
以%d%c指定输入格式时,对应的键盘输入不能以整数+空格+字符的方式,因为%d会匹配一个整数,而%c会与空格匹配(空格也是一个有效的输入字符),从而导致%c匹配不到你要输入的真正字符。所以可以排除所有数字+空格的情况。答案是A、C。
C(A和C应该没有区别……吧??)C语言scanf读取变量值:如果读数字,数字间有空格会自动跳过一直到读到下一个数字(因为空格不是字符);但因为空格是char型,如果数字a1后跟着空格,随后的c1就会把空格当作输入给自己的值。所以说,读完c1即使有空格也没问题了,因为a2会自动把空格跳过去可以自己写程序跑一跑,实践出真知嘛