有以下程序 #include 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;

admin2015-07-31  23

问题 有以下程序
#include
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/CIDp777K
0

最新回复(0)