参考答案和解析
1
更多“以下程序段执行后,变量b的值是()。 int a[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3], b; b=p[5];”相关问题
  • 第1题:

    有以下程序段: int a[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],b; b=p[5]; b中的值是( )。

    A.5

    B.6

    C.8

    D.9


    正确答案:D
    解析:C语言中规定:一个数组名代表它的起始地址。本题中,定义了一个长度为10的数组a并赋初值,数组名a就是数组的起始地址,由于数组下标是从0开始,因此a[0]的地址也是a的值,a[1]的地址可以用a+1表示,也就是说a+1指向数组a中下标为1的元素,同样a+i是a[i]的地址,*p=&a[3]表明指针变量p指向元素a[3],即p指向数组a的第4个元素4,p[5]的值应为数组a中的第9个元素的值即a[8]的值,即p[5]=9,所以b=9。故4个选项中选项D符合题意。

  • 第2题:

    有以下程序段: int a[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],b; b=p[5];则b中的值是( )。

    A.5

    B.6

    C.8

    D.9


    正确答案:D
    解析:p为指向整型数据的指针变量,存放的是a[3]的地址,即p指向数组{4,5,6,7,8,9,10},b=p[5],因此,b中的值是9。

  • 第3题:

    以下程序段执行后,a的值为______。 int*p,a=10,b=1; p=&a;a=*p+b;

    A.11

    B.12

    C.10

    D.编译出错


    正确答案:A
    解析:p是指向整型变量的整型指针,并赋值为指向a,*p表示指针p所指向单元的内容,即为a,等于10,a=*p+b=10+1=11。

  • 第4题:

    执行以下的程序段后,m的值是 ______ 。 int a[2][3]={{(1,2,3),{4,5,6}} int m,*p; p=aa[0][0]; m=p[4];

    A.4

    B.5

    C.3

    D.不确定


    正确答案:B
    解析:程序中定义了一个指向整型变量的指针变量,并对其赋值为二维整型数组a的首元素的地址。p[4]等价于*(p+4),即二维数组a中第四个元素的值,而a是一个2*3的二维数组,其第四个元素为a[1][1],即5。

  • 第5题:

    执行以下程序段后,m的值为______。 int a[2][3]={ {1,2,3},{4,5,6} }; int m,*p; p=&a[0][0]; m=(*p)*(*(p+2))*(*(p+4));

    A.15

    B.14

    C.13

    D.12


    正确答案:A

  • 第6题:

    执行以下的程序段后,m的值是______。 int a[2][3]={1,2,3},{4,5,6}}; int m,*p; p=&a[0][0]; m=p[4];

    A.4

    B.5

    C.3

    D.3不确定


    正确答案:B
    解析:程序中定义了一个指向整型变量的指针变量,并对其赋值为二维整型数组a的首元素的地址。p[4]等价于*(p+4),即二维数组a中第四个元素的值,而a是一个2*3的二维数组,其第四个元素为a[1][1],即5。

  • 第7题:

    有以下程序: main() { int a[10]={1,2,3,4,5,6,7,8,9,10),*p=&a[3],*q=p+2; printf("%d\n",*p+*q); } 程序运行后的输出结果是( )。

    A.16

    B.10

    C.8

    D.6


    正确答案:B
    解析:题目中首先定义了一个int型数组a并初始化了,然后定义了两个指针变量p和q,并分别初始化p为指向数组元素a[3]、q指向p后面的第2个元素即指向a[5]。所以最终输出的值为a[3]+a[5]的值10。应该选B。

  • 第8题:

    有以下程序: main() {int a[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],*q=p+2; printf("%d\n",*p+*q); }

    A.16

    B.10

    C.8

    D.6


    正确答案:B
    解析:本题定义了一维数组a和两个指针变量。指针变量p的初值为第4个数组元素的地址,指针变量q的初值为,第6个数组元素的地址。*p+*q=4+6=10。

  • 第9题:

    执行下列程序段后,变量y的值为( ) int x[]={1,2,3,4},y,*p=&x[1]; y=(*--P)++;

    A.1

    B.2

    C.3

    D.4


    正确答案:A
    从数据定义语句中可以得出下列结论:指针变量P指向的数组元素是x[1]。再来分析赋值句的右边表达式“(*--p)++”,其中的“--”优先于“*”先计算“--p”,使得p指向数组元素x[0];所以“(*--p)”就是数组元素a[0],再计算其后的“++”,由于“++”是后缀,所以表达式的值就是数组元素x[0]的值,为1,然后再对数组元素x[0]加1。因此变量y的值是1。本题答案应选A。

  • 第10题:

    试题27

    有以下程序

    #include <stdio.h>

    void fun(int *p)

    { printf(“%d\n”,p[5]);}

    main()

    { int a[10]={1,2,3,4,5,6,7,8,9,10};

    fun(&a[3]);

    }

    程序运行后的输出结果是()

    A.5

    B.6

    C.8

    D.9


    正确答案:D
    试题27分析
    函数调用fun(&a[3])是使p=&a[3],即*p=4,所以p[5]=9。
    试题27答案
    D

  • 第11题:

    若有以下定义      int a〔 〕={1,2,3,4,5,6,7,8,9,10),*p=a;    则值为3的表达式是()   

    • A、p+=2,*(p++)
    • B、p+=2,*++p
    • C、p+=3,*p++
    • D、p+=2,++*P

    正确答案:A

  • 第12题:

    单选题
    以下程序段执行完毕后,变量a和b的值分别是() int a=4,b=5,*p1=&a,*p2=&b; a=2*(*p1%-*p2)+5; b=*p1**p2++;
    A

    13,65

    B

    -3,-15

    C

    -3,-18

    D

    13,78


    正确答案: C
    解析: 暂无解析

  • 第13题:

    若有以下说明: int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a; 则值为6的表达式是_______。

    A.*p+6

    B.*(p+6)

    C.*p+=5

    D.p+5


    正确答案:C
    解析:选项A,*p+6,其值等于1+6=7;选项B,*(p+6),其值等于a[6]=7;选项C,*p+=5,其值等于*p=*p+5=1+5=6;选项D,p+5是个地址值。

  • 第14题:

    有以下程序:includemain(){int a [10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3], *q=p+2;

    有以下程序: #include <stdio.h> main() { int a [10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3], *q=p+2; prinff("%d\n";*p+*q); } 程序运行后的输出结果是( )。

    A.16

    B.10

    C.8

    D.6


    正确答案:B
    解析:由变量的定义可知,指针变量p初始化为&a[3],即*P的值为4;指针变量q初始化为p+2,即&a[3]+2,所以*q的值为6,*p+*q的值为10。

  • 第15题:

    有以下程序 main ( ) int a[10]={1,2,3,4,5,6,7,8,9,10},*p=.&a[3], *q=p+2; print f ("%d\n" , *p+*q); 程序运行后输出结查是

    A.16

    B.10

    C.8

    D.6


    正确答案:B
    解析:本题考查的是指针的简单应用。题目中首先定义了一个int型数组a并初始化了,然后定义了两个指针变量p和q,并分别初始化p为指向数组元素a[3]、q指向p后面的第2个元素即指向a[5]。所以最终输出的值为a[3]+a[5]的值10。应该选B。

  • 第16题:

    有如下程序段: int a[10]={1,2,3,4,5,6,7,8,9,10}; int *p=&a[3],b;b=P[5];则b的值是( )。

    A.5

    B.6

    C.9

    D.8


    正确答案:C
    解析:p=&a[3]将指针指向数组a的第4个元素,p[5]则是数组a的第9个元素,而a[8]=9,所以b=9。

  • 第17题:

    执行以下的程序段后,m的值是______。 int a[2][3]={{1,2,3},(4,5,6}}; int m,*p; p=&a[0][0]; m=p[4];

    A.4

    B.5

    C.3

    D.不确定


    正确答案:B
    解析:程序中定义了一个指向整型变量的指针变量,并对其赋值为二维整型数组a的首元素的地址。P[4]等价于*(p+4),即二维数组a中第四个元素的值,而a是一个2*3的二维数组,其第四个元素为a[1][1],即5。

  • 第18题:

    有以下程序

    main()

    { int a[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],*q=p+2;

    printf("%d\n",*p+*q);}

    程序运行后的输出结果是


    正确答案:8
    8 解析:*p=&a[3],即*p=4,*q=p+ 2;即*q=6,所以*p+*q=10。

  • 第19题:

    有程序段: int * p,a,b=1; p=&a; *p=10;a=* p+b; 执行该程序段后,a的值是 ( )

    A.12

    B.11

    C.10

    D.编译出错


    正确答案:B

  • 第20题:

    若有以下的定义, int a[ ]={1,2,3,4,5,6,7,8,9,10},*p=a;则值为3的表达式是 ______。

    A.p+=2,*(p++)

    B.p+=2,*++p

    C.p+=3,*p++

    D.p+=2,++*p


    正确答案:A

  • 第21题:

    有如下程序段 int*p,a=10,b=3; p=&a; a=*p+b;执行该程序段后,a的值为______。

    A.11

    B.12

    C.13

    D.14


    正确答案:C

  • 第22题:

    有以下程序段int?a[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],b;b=p[5];b中的值是()

    • A、5
    • B、6
    • C、8
    • D、9

    正确答案:D

  • 第23题:

    以下程序段执行完毕后,变量a和b的值分别是() int a=4,b=5,*p1=&a,*p2=&b; a=2*(*p1%-*p2)+5; b=*p1**p2++;

    • A、13,65
    • B、-3,-15
    • C、-3,-18
    • D、13,78

    正确答案:A

  • 第24题:

    单选题
    有以下程序: #include  void fun(int *p) {  printf("%d",p[5]); } main() {  int a[10]={1,2,3,4,5,6,7,8,9,10};  fun(&a[3]); } 程序运行后的输出结果是(  )。
    A

    5

    B

    6

    C

    8

    D

    9


    正确答案: C
    解析:
    fun函数的功能是在屏幕上打印输入参数p后的第五个元素。在main中,a[3]的值为4,&a[3]即为取a[3]所指内容的地址,即指针p指向a[3]的地址,故p[5]应为a[3+5]=a[8]=9。答案选择D选项。