参考答案和解析
正确答案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]的值是()。 A.6B.5C.4D.3”相关问题
  • 第1题:

    若有下面的程序片段:

    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]的值,注意语句中指针型数组的书写格式,不能写成"(*数组名)[长度]",因为这是定义指向含有"长度"个元素的一维数组的指针变量。例如有定义语句"int a,b,c,c,*p[3]={&a,&b,&c};",它定义了一个名为p的指针型数组,其3个元素p[0],p[1],p[2]分别指向f3个整型变量a,b,c。

  • 第2题:

    若有程序片段: int a[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

  • 第3题:

    有下列程序:

    #include<stdi0.h>

    voidmain( )

    {

    ints[12]={1,2,3,4,4,3,2,1,1,1,2,3),c[5]=

    {0},i;

    for(i=0;i<12;i++)c[s[i]]++;

    for(i=1;i<5;i++)printf("%d",c[i]);

    printf("\n")

    }

    程序的运行结果是( )。

    A.1234

    B.2344

    C.4332

    D.1123


    正确答案:C
    C。【解析】本题考查对for循环的使用,首先给两个数组赋值,第一个for循环从0开始循环12次遍历S数组的各个元素,数组将s[]中的元素值作为c[]数组中的下标,然后自加,使相应的值自加,当i=0,c[s[0]]++为c[1]++,其值变为1,当执行i=1,2,…,11后,c[1]、c[2]、c[3]、c[4]分别为4、3、3、2,故选项C正确。

  • 第4题:

    有如下程序段: 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

  • 第5题:

    下列程序的输出结果是()。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。

  • 第6题:

    有以下程序

    #include<stdio.h>

    main( )

    {int a[]={2,3,5,4},i;

    for(i=0;i<4;i++)

    switch(i%2)

    {case 0:switch(a[i]%2)

    {case 0:a[i]++;break;

    case 1:a[i]--;

    }break;

    case 1:a[i]=O;

    }

    for(i=O;i<4;i++)prinff(“%d”,a[i]);prinff(“\n”);

    }

    程序运行后的输出结果是

    A.3 3 4 4

    B.2 0 5 0

    C.3 0 4 0

    D.0 3 0 4


    正确答案:C
    解析:第一次循环,i=0,i%2=0,a[0]%2=0,a[0]=a[0]+1=3;第二次循环,i=l,1%2=1,a[1]=0;第三次循环,i=2,a[2]%2=l,a[2]=a[2]-1=4;第四次循环,i=3,i%2=1,a[3]=0。

  • 第7题:

    有下列程序: #include<stdi0.h> voidmain( ) { ints[12]={1,2,3,4,4,3,2,1,1,1,2,3),c[5]= {0},i; for(i=0;i<12;i++)c[s[i]]++; for(i=1;i<5;i++)printf("%d",c[i]); printf("\n") } 程序的运行结果是( )。

    A.1234

    B.2344

    C.4332

    D.1123


    正确答案:C
    C。【解析】本题考查对for循环的使用,首先给两个数组赋值,第一个for循环从0开始循环12次遍历S数组的各个元素,数组将s[]中的元素值作为c[]数组中的下标,然后自加,使相应的值自加,当i=0,c[s[0]]++为c[1]++,其值变为1,当执行i=1,2,…,11后,c[1]、c[2]、c[3]、c[4]分别为4、3、3、2,故选项C正确。

  • 第8题:

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

    下列程序的输出结果是( )。

    #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。

  • 第9题:

    有以下程序includemain(){ints[12]={1,2,3,4,4,3,2,1,1,1,2,3},c[5]={0},i; for(i=0;i

    有以下程序 #include <stdio.h> main() { int s[12]={1,2,3,4,4,3,2,1,1,1,2,3},c[5]={0},i; for(i=0;i<12;i++) c[s[i]++; for(i=l;i<5;i++) printf("%d",c[i]); printf("\n"); } 程序的运行结果是

    A.1 2 3 4

    B.2 3 44

    C.4 3 3 2

    D.1 1 2 3


    正确答案:C
    解析:在for(i=0;i12;i++)c[s[i]]++中,数组元素s[i]的值作为数组c的下标,当退出循环时,数组c的4个元素的值分别为4、3、3、2。

  • 第10题:

    下面程序把数组元素中的最大值放入a[0]中。则在if语句中的条件表达式应该是 main() {inta[10]={6,7,2,9,1,10,5,8,4,3},*p=a,i; for(i=0;i<10;i++,p++) if(________)*a=*p; printf("%d",*a); }

    • A、p>a
    • B、*p>a[0]
    • C、*p>*a[0]
    • D、*p[0]>*a[0]

    正确答案:B

  • 第11题:

    假设堆内存分配均成功,则下面程序段完全正确的是()。

    • A、int*p=newint(3);cout<;<;*p;deletep;
    • B、int*p=newint[5]={1,2,3,4,5};for(inti=0;i<;5;i++)cout<;<;p;delete[]p;
    • C、int*p=newint[5];for(inti=0;i<;5;i++,p++){*p=i;cout<;<;*p;}delete[]p;
    • D、以上程序段均正确

    正确答案:A

  • 第12题:

    单选题
    有以下程序 #include  main() {  int s[12]={1,2,3,4,4,3,2,1,1,1,2,3},c[5]={0},i;   for(i=0;i<12;i++)   c[s[i]]++;  for(i=1;i<5;i++)   printf("%d",c[i]);  printf(""); } 程序的运行结果是(  )。
    A

    4332

    B

    2344

    C

    1234

    D

    1123


    正确答案: D
    解析:
    s[i]元素作为c数组的下标,使c数组元素自增,执行完毕后,c[1]自增4次,c[2]自增3次,c[3]自增3次,c[4]自增2次,c数组元素为04332,按题目要求输出,4332。答案选择A选项。

  • 第13题:

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

    下列程序的输出结果是( )。 #inclUde<stdio.h> main() { inta[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.15

    B.10

    C.7

    D.8


    正确答案:B
    解析: 本题涉及字符串最基本的两个概念:①字符串的长度是指字符串中字符的个数,但不包括字符串结束符;②以反斜杠“\”开头的特殊字符序列,意思是把反斜杠后面的字符序列转换成特定的含义,而不是原来的含义,不包含在字符串长度之内,“\”连同后面的字符为一个长度。

  • 第14题:

    以下程序 int aa[3][3]={{2},{4},{6}}; main() { int i,*p=&aa[0][0]; for(i=0;i<2;i++){ if(i==0)aa[i][i+1]=*p+1; else ++p; printf("%d",*p); } } 的输出是________。

    A.23

    B.26

    C.33

    D.36


    正确答案:A
    解析:观察题目,可以发现,*p=&aa[0][0]语句实际是将数组aa的首地址赋给了指针变量p,将i的值带入for循环中,i=0时,aa[0][1]=3;*p=2;*p输出的是指针所指向数组值,此时p所指向的是aa[0][0],输出2,而i=1时执行了++p操作使指针向后移动指向了aa[0][1],所以在输出*p时应为3。

  • 第15题:

    有以下程序: main() { int a[3][3], *p, i; p=&a[0][0]; for(i=0; i<9; 1++)p[i]=i; for (i=0; i<3; i++)printf("% d", a[1][i]); 程序运行后的输出结果是______。

    A.0 1 2

    B.1 2 3

    C.2 3 4

    D.3 4 5


    正确答案:D
    解析:p指向的a的首地址,由于C语言是行优先存储的,一维数组p就依次存放了a中从第0行到第2行的所有元素,因此a[1][i]就对应了p[3]~p[5]。

  • 第16题:

    有以下程序: main() { int a[3][3],*p,i; p=&a[0][0]; for(i=0;i<9;i++)p[i]=i; for(i=0;i<3;i++)printf("%d",a[1][i]); } 程序运行后的输出结果是 ______。

    A.0 1 2

    B.1 2 3

    C.2 3 4

    D.3 4 5


    正确答案:D
    解析:p指向的a的首地址,由于C语言是行优先存储的,一维数组p就依次存放了a中从第0行到第2行的所有元素,因此a[1][i]就对应了p[3]~p[5]。

  • 第17题:

    下述程序的输出结果是( )。 #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
    根据判断本题共进行三次for循环,第一次执行for循环,p[1][0]=p[1][0]-1=3;第2次执行for循环,p[1][1]=p[1][1]-1=4;第3次执行for循环,[1][2]=1,最后输出的是a[o][1]+a[1][1]+a[1][2]=2+4+1=7。

  • 第18题:

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

    下列程序的输出结果是( )。 #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。

  • 第19题:

    若有下面的程序片段: 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。注意:数组元素的引用方法。

  • 第20题:

    有以下程序 main() { int a[3][3],*p,i; p=&a[0][0]; for(i=O;i<9;i++)p[i]=i; for(i=O;i<3;i++)printf("%d",a[1][i]); } 程序运行后的输出结果是______。

    A.0 1 2

    B.1 2 3

    C.2 3 4

    D.3 4 5


    正确答案:D

  • 第21题:

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


    正确答案:C
    C

  • 第22题:

    有如下程序段: int total = 0; for ( int i = 0; i < 4; i++ ){ if ( i == 1) continue; if ( i == 2) break;total += i;} 则执行完该程序段后total的值为()

    • A、0
    • B、1
    • C、3
    • D、6

    正确答案:A

  • 第23题:

    若有以下程序段,则数组b中列下标为偶数的元素之和是() int a[12],b[3][4],i,j; for(i=0;i<12;i++)a[i]=i+1;for(i=0;i<3;i++) for(j=0;j<4;j++)b[i][j]=a[i*4+j]

    • A、42
    • B、15
    • C、36
    • D、24

    正确答案:C