参考答案和解析
正确答案A
更多“已知程序段inta[3][4],*p[3]={a[0],a[1],a[2]},**pp=p,i;for(i=0;i12;i++)a[i/4][i%4]i;则pp[1][2]的值是()。 ”相关问题
  • 第1题:

    有如下程序段: int a[10],*p[3],**pp,i; for(i=0;i<3:i++) p[i]=&a[i*4); pp=p; 则正确表示数组a元素的表达式是 ______。

    A.pp

    B.a[10]

    C.p[3]

    D.*(*(p+2))


    正确答案:D

  • 第2题:

    若有下面的程序片段: int[12]={0},*p[3],**pp,i; for(i=0;i<3;i) p[i]=&a[i*4]; pp=p 则对数组元素的错误引用是

    A.pp[0][1]

    B.a[10]

    C.p[3][1]

    D.*(*(p+2)+2)


    正确答案:C
    解析:本题综合考查一维数组和多维数组指针变量的表示方法。在C语言中,引用数组元素的方法有两种,即:下标法和指针法。下标法如a[i]形式;指针法如*(a+i)或*(p+1)。其中a是数组名,p是指向数组的指针变量,其初值p=a。再如*(*(p+2)+2)是a[2][2]的值,注意语句中指针型数组的书写格式,不能写成“(*数组名)[长度]”,因为这是定义指向含有“长度”个元素的一维数组的指针变量。例如有定义语句“inta,b,c,c,*P[3]={&a,&b,&c};”,它定义了一个名为p的指针型数组,其3个元素p[0],p[1],p[2]分别指向B个整型变量a,b,c。注意:数组元素的引用方法。

  • 第3题:

    执行下面程序段后,s的结果是 。 int a[]={2,3,4}; int s,i,*p; s=1; p=a; for(i=0;i<3;i++) s*=*(p+i);


    2

  • 第4题:

    下列程序的输出结果是()。includemain(){ int a[2][3]={{1,2,3},{4,5,6}),(*p)[3],i;p=

    下列程序的输出结果是( )。 #include<stdio.h> main() { int a[2][3]={{1,2,3},{4,5,6}),(*p)[3],i; p=a; for(i=0;i<3;i++) { if(i<2) p[1][i]=p[1][i]-1; else p[1][i]=1; } printf("%d\n",a[0][1]+a[1][1]+a[1][2]); }

    A.8

    B.7

    C.12

    D.9


    正确答案:B
    解析:第1次执行for循环,p[1][0]=p[1][0]-1=3:第2次执行for循环,p[1][1]=p[1][1]-1=4;第3次执行for循环,p[1][2]=1,最后输出的是a[0][1]+a[1][1]+a[1][2]=2+4+1=7。

  • 第5题:

    若有下面的程序片段: int[12]={0},*p[3],**pp,i; for(i=0;i<3;i) p[i]=&a[i*4]; pp=p; 则对数组元素的错误引用是


    正确答案:C
    C