问题 单项选择题

有以下程序 main() { int a[3][2]={0},(*ptr)[2],i,j; for(i=0;i<2;i++) {ptr=a+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 02 00 0

C.1 23 00 0

D.1 02 03 0

答案

参考答案:B

解析:二维数组指针第一个for循环中,第一次循环ptr指向a[0][0]的首地址,所以经过输入语句,a[0][0]=1;第二次循环ptr指向a[1][0]的首地址,所以经过输入语句,a[1][0]=2。此时,除了这两个元素,其他元素没有改变,等于初值0。

解答题
单项选择题