问题 单项选择题

有以下程序:
main()
int a[3][2]=0), (*ptr)[2], i, j;
for(i=0; i<2; i++)
pta+i; scanf("%d", ptr); ptr++;
for(i=0; i<3; i++)
for(j=0; j<2; j++)printf("%2d", a[i][j]);
printf("\n");


若运行时输入:1 2 3<回车>,则输出结果为( )。

A) 产生错误信息
B) 1 0
2 0
0 0
C) 1 2
3 0
0 0
D) 1 0
2 0
3 0

答案

参考答案:B

解析: 本题主要考查的是scanf()函数的输入原理。scanf()函数执行时,先从键盘缓冲区中读取用户输入的数据,若缓冲区为空或输入数据少于所需数据,则暂停程序等待用户的输入,直到用户输入回车符,scanf()将继续到键盘缓冲区中读取输入,如此反复直到满足scanf()函数所需数据,程序才继续执行下面的语句,而scanf()没有取完的数据仍然会保存在键盘缓冲区内,到程序结束时还没取完就会被释放掉,不会影响其他的程序运行。另外,scanf()函数将取到的数据匹配给第2个及其后面的指针参数所指的内存地址中去。

选择题
问答题 简答题