共回答了23个问题采纳率:87%
scanf函数有个特性,当读取多个数据时,由%组成的控制符之间可以留置空格,也可以不留置空格,作用都一样:允许用空格分隔数据.比如,scanf(”%s%s”,a,b);和scanf(”%s %s”,a,b);效果一样;输入时可以输入一个字符串回一次车,也可以一次输入中间用空格隔开的两个字符串.实际上scanf在遇到空格时认为前面的输入有效并结束,而如果紧接着还是scanf语句,那就读取这个空格但不赋给任何变量,接着读取后面的输入数据;如果跟着的是别的输入语句,那就要看这别的输入语句有什么特性,按这别的输入语句的特性处理这个空格.在你这里输入this is a cat!后,this赋给了a,空格留在缓冲区,接着还是scanf接收第二个数据is,就先读取上次留下的空格,但不赋给任何变量,接着读is并赋给b;后面不再是scanf了,那么is后的空格就一直留在缓冲区.后面是用get读取,它是接收空格的……所以刚好所得结果是C项.(题中最后的printf(”%s%sn”,a,b,c);少了个%s)
1年前
追问
10
is后的空格是在缓冲区,gets也能读取吗?还有,如果就没有c数组,printf(“%s%sn”,a,b),结果是thisis还是this空格is空格,还是thisis空格
gets是接收空格的!无论这个空格在开头,在中间或是在末尾。
printf(“%s%sn”,a,b)的输出结果是thisis,前后都没有空格。