以下程序段的输出结果为( )。
#include<stdio.h>void main(){ int a[4][3]= {2,4,6,8,10,12,14,16,18,20,22,24}; int i,j,k=0; int(*p)[3]=a; for(i=1;i<3;i++) for(j=1;j<3;j++) k+=*(*(p+i)+j); printf("%d\n",k);}
A
int(*p)[3]=a;语句使得指针P指向二维数组的第一行,*(p+i)使得p指向二维数组的第i行,*(p+i)+j使得指针指向第i行第j列的元素。在for循环中,当i=1、j=1时,*(*(p+i)+j)取的是数组a第1行第1列的元素a[1][1]=10,此时k=10;当i=1、j=2时,*(*(p+i)+j)取的是数组a第1行第2列的元素a[1][2]=12,此时k=22;当i=2、j=1时,*(*(p+i)+j)取的是数组a第2行第1列的元素a[2][1]=16,此时k=38;当i=2、j=2时,*(*(p+i)+j)取的是数组a第2行第2列的元素a[2][2]=18,此时k=56。故本题选A。
扫描微信二维码,添加您的专属老师为好友
您在考试中遇到任何问题,老师都会帮您解答
您希望我们通过哪种方式与您联系?
您已选择电话/微信/QQ的联系方式,课程顾问会尽快联系您!
您已选择微信联系方式,课程顾问会尽快添加您的微信,请您确认通过!
您已选择QQ联系方式,课程顾问会尽快添加您的QQ,请您确认通过!
您已选择电话联系方式,课程顾问会尽快联系您!
您已选择“不联系”,课程顾问不会主动联系您。如果后续您有需求,可以在个人中心主动添加销售微信或拨打客服电话:400-111-9811