关于C语言的一个选择题.望高人能留步指教

来源:百度知道 编辑:UC知道 时间:2024/06/30 17:27:16
运行下列程度时,输入1 2 3 <CR> 的输出结果为
main()
{ int a[3][2]={0},(*ptr)[2],i,j;
for(i=0;i<2;i++)
{ ptr=a+i;scanf(“%d”,ptr); prt++;
}
for(i=0;i<3;i++)
{ for(j=0;j<2;j++)
printf(“%2d”,a[i][j]);
printf(“\n”);
}
}
疑点一:(*ptr)[2] 只有2个 但输入却是 3个123 那 请问3 放在那里了?
疑点二:答案是1 0
2 0
0 0
小弟愚昧 不知道是怎么怎么执行的。还请高人能够分析分析

解答以注释形式给出

void main()
{
int a[3][2]={0}; //定义一个3行2列的二维数组,所有元素都是0
int (*ptr)[2] //定义一个int*的数组
int i,j;
for(i=0;i<2;i++)
{
ptr=a+i; //ptr指向a这个二维数组的第i行
scanf(“%d”,ptr); //读入一个整数并且放到ptr中,也就是说放到a这个二维数组第i行的第0个元素中
ptr++; //ptr指向下一行,这句话其实是多余的,因为下一个循环ptr=a+i和ptr++做的是同样的事情,所以这句话可以删去。
}
for(i=0;i<3;i++)
{
for(j=0;j<2;j++)
printf(“%2d”,a[i][j]);

printf(“\n”);
}
}

至于你的疑问1,也就是说123中的3放在哪里了,回答是:程序只scanf了2次,所以3根本没有被程序读进来。