问题 单项选择题

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


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

A.产生错误信息

B.10
20
00

C.12
30
00

D.10
20
30

答案

参考答案:B

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

填空题
填空题