scanf从缓冲区读取的时候不是依据空格的,读整数就取一个整数,读字符就取一个字符
所以是A,比如C,读取整数10之后读到空格,会将空格当做字符放到y1中
最好的办法就是写程序跑一下,下面是程序和结果
#include
#include
#include
#include
#include
using namespace std;
int main()
{
int x1,x2;
char y1,y2;
scanf("%d%c%d%c",&x1,&y1,&x2,&y2);
printf("%d %c %d %c\n", x1,y1,x2,y2);
system("pause");
return 0;
}
首先明确
1. 对于%d的输入,会忽略之前的空格
2. 对于%c的输入则不会忽略。
3. 对于%d的输入,会被字符截断,这也就是 输入"10A20B"的时候,也不会错的原因了。
正确答案是A
x1接收了10, y1接收了字符A,之后是一个空格,而输入的是%d,所以会忽略空格,所以x2接收了20,y2接收了字符B
分下下其它的选项
B, x1 接收了10, y1接收了空格,错误
C 错误同B
D x1接收了10, y1接收了A,x2接收了20,y1接收了空格。