问题
单项选择题
有以下程序:
#include <stdio.h>
main()
char c1,c2,c3,c4,c5,c6;
scanf(%c%c%c%c,&c1,&c2,&c3,&c4);
c5=getchar(); c6=getchar();
putchar(c1); putchar(c2);
printf(%c%c\n,c5,c6);
程序运行后,若从键盘输入(从第1列开始)
123<回车>
45678<回车>
则输出结果是( )。
A.1267
B.1256
C.1278
D.1245
答案
参考答案:D
解析: 在题目中,程序执行到scanf()函数时,会暂停等待用户输入4个字符,按题意输入 123<回车>后,字符1~3被分别输入到c1~c3中,而c4会得到一个换行符’\n’。然后执行第1个getchar()函数,由于前面的scanf()函数读完了缓冲区中的所有字符,所以此时程序会又暂停等待用户输入,按题意输入45678<回车>后,缓冲区第1个字符’4’被读入并赋给c5,第2个getchar()函数会读入缓冲区第2个字符’5’。所以最后依次输出c1、c2、c5、c6的值后,屏幕上的结果是1245。故应该选择D。