内燃捣固镐不震动:后天考c语言,可是复习时候碰到一些困难,请问大家帮忙解答!急8

来源:百度文库 编辑:中科新闻网 时间:2024/04/28 06:01:38
(32)有以下程序
?? 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<回车>,则输出结果是___b___。
??A)产生错误信息 B)1 0 C)1 2 D)1 0
?? 2 0 3 0 2 0
?? 0 0 0 0 3 0
告诉我下这个程序讲的什么啊?我看不懂

int a[3][2]={0},声明一个整形的数组,给数组附初值0(全部位置都附0)。
(*ptr)[2],声明一个能够指向该数组的指针,指针名为ptr。
for(i=0;i<2;i++) {ptr=a+i; scanf("%d",ptr); ptr++; }向数组中输入整形数值。如果输入1,2,3,则存储格式为
10
20
30
够面的ptr++; 我觉得没有用。因为每一次循环开始时,ptr都被从新附值了。++也没有效果。每一次循环开始时,ptr指向第i+1行的首地址。
for(i=0;i<3;i++)
??{ for(j=0;j<2;j++) printf("%2d",a[i][j]);
??printf("\n");
将数组中的元素输出,每个元素占两个位置。
我觉得是你输入的123中间没有加空格所以系统将其识别为一百二十三,算做一个数。你可以加空格试试。如:1 2 3回车。输出结果应该是
10
20
30