有以下程序 #include <stdio.h> main() { int a[3][4]={ 1,3,5,7,9,11,13,15,17,19,21,23}, (*p)[4]=a,i,j,k=0; for

admin2020-10-26  50

问题 有以下程序
     #include <stdio.h>
     main()
     {  int  a[3][4]={ 1,3,5,7,9,11,13,15,17,19,21,23}, (*p)[4]=a,i,j,k=0;
        for( i=0; i<3; i++ )
          for( j=0; j<2; j++ )  k=k+*(*(p+i)+j);
        printf("%d\n", k );
     }
程序运行后的输出结果是

选项 A、108
B、68
C、99
D、60

答案D

解析 该题首先给二维数组赋值a[3][4]={{1,3,5,7}{9,11,13,15}{17,19,21,23}};(*p)[4]=a指针p指向二维数组a的首地址,接下来执行for循环,首先 i=0,j=0时k=k+*(*(p+0)+0)=1(a[0][0]);然后 i=0,j=1时k=k+*(*(p+0)+1)=4(a[0][1]);然后j=2时,跳出j的循环,执行i的循环i=1,j=0 时k=k+*(*(p+1)+0)=13(a[1][0]);依次类推一直到i=3时跳出全部循环。循环语句在这里的功能是累加二维数组第1列和第2列的元素,累加结果为60。
转载请注明原文地址:https://kaotiyun.com/show/0D3p777K
0

最新回复(0)