参考答案和解析
正确答案: C
解析:
scanf中地址列表需要取地址,即&a形式,故AC项错误;p为指针类型,本身就是c的地址,因此不用再取地址。答案选择B选项。
更多“若有定义语句int a,b,c,*p=&c;接着执行以下选项中的语句,则能正确执行的语句是(  )。”相关问题
  • 第1题:

    若有一些定义和语句 include int a=4,b=3,*p,*q,*w; p=&a; q=&b; w=q; q

    若有一些定义和语句 #include <stdio.h> int a=4,b=3,*p,*q,*w; p=&a; q=&b; w=q; q=NULL; 则以下选项中错误的语句是

    A.*q=0;

    B.w=p;

    C.*p=va;

    D.*p=*w;


    正确答案:A
    解析:给一指针赋空值的正确语句是q=NULL;或q='\0';或q=0;。选项B)的含义为使指针p指向指针q所指向的存储单元。选项C)的含义为使指针P指向变量a所在的存储单元。选项D)的含义为把指针a赋给指针p。

  • 第2题:

    若有定义:int a=6,b=8,c=14;接着顺序执行下列语句后,变量c中的值是__________。

    c=(b-=(a-5));

    a=(c%3) (a=8);


    正确答案:
    7【解析】本题考查基本赋值运算符和赋值表达式。c=b-=(a-5)) 等价于c=b-(a-5)-7,c%3=1,a=c%3) (a=8)=9,但c的值在第二条语句只能够并没有被改变,因此c的值还是7。

  • 第3题:

    有定义语句:int*p[4],以下选项中与此语句等价的是( )。

    A.int p[4];

    B.int**p;

    C.int*(p[4]);

    D.int(*p)[4];


    正确答案:C

  • 第4题:

    若有定义语句:“int year=2009,*p=&year;”,以下不能使变量year中的值增至2010的语句是( )。

    A.*p+=1;

    B.(*p)++;

    C.++(*p);

    D.*++P


    正确答案:D

  • 第5题:

    若在定义语句int a ,b,c,* P=&c;之后,接着执行以下选项中的语句,则能正确执行的语句是( )。

    A.

    B.

    C.

    D.


    正确答案:D
    seartf函数中的输入项必须是指针,只有选项D)符合这个要求。

  • 第6题:

    若有定义语句:int a[2][3],*p[3];,则以下语句中正确的是( )。A.p=a; B.p[0]=a;

    若有定义语句:int a[2][3],*p[3];,则以下语句中正确的是( )。

    A.p=a;

    B.p[0]=a;

    C.p[o]=&a[1][2];

    D.p[1]=&a;


    正确答案:B
    选项B表示把整型数组a[o]的指针赋给p[0]。

  • 第7题:

    若有以下定义和语句 int a=4,b=3,*p, *q, *w; p=&a; q=&b; w=q; q=NULL; 则以下选项中错误的语句是

    A.*q=0

    B.w=p

    C.*p=a;

    D.*p=*w;


    正确答案:D
    解析:指针是一个既强大又危险的技术,C/C++语言之所以灵括高效,原因之一就是采用了指针技术,所以c/C++特别适合开发系统软件和工具软件.在C#语言中已经取消了指针,而且全部属于托管代码。而在dotnet框架中,为了保持兼容性,仍然可以使用C++,但分托管和非托管代码。本题实际上有个圈套,只要注意到题干中“语句”,而且注意到各个选项中都有分号结尾,就可以判断选项D是正确的:语句不是以逗号结尾的。

  • 第8题:

    若有定义语句:int year=2009,*p=&year;,以下不能使变量year中的值增至2010的语句是

    A.*p+=1;

    B.(*p)++;

    C.++(*p);

    D.*p++;


    正确答案:D
    解析:++的优先级比木的高,所以先运算p++,使得p指向了year变量的下一个存储单元中的内容,然后在取其中的值,得到的一个没有意义的数字,*p++自然就不对了。

  • 第9题:

    若在定义语句:int a,b,c,*p=&c;之后,接着执行以下选项中的语句,则能正确执行的语句是( )。

    A.scanf(“%d”,a,b,

    B.scanf(“%d%d%d”,a,b,

    C.scanf(“%d”,p);

    D.scanf(“%d”,&p);


    正确答案:C

  • 第10题:

    若在定义语句:inta,b,c;之后,接着执行以下选项中的语句,则能正确执行的语句是()

    • A、scanf("%d",a,b,c)
    • B、scanf("%d%d%d",&a,&b,&c)
    • C、scanf("%d%d%d",&a,b,c)
    • D、scanf("%d%d%d",a,b,c)

    正确答案:B

  • 第11题:

    单选题
    有定义语句: int *p[4]; 以下选项中与此语句等价的是(  )。
    A

    int p[4];

    B

    int **p;

    C

    int*(p[4]);

    D

    int(*p)[4];


    正确答案: D
    解析:
    题目中定义语句的含义是定义了一个包含4个整数指针元素的数组p。A项,仅定义了一个含有4个整数元素的数组;B项,定义了一个指向整数指针的指针;D项,声明了一个指针变量,它指向的是一个含4个元素的一维数组。答案选择C选项。

  • 第12题:

    单选题
    若有定义语句:int a=12;,则执行语句:a+=a-=a*a;后,a的值是(  )。
    A

    -264

    B

    552

    C

    144

    D

    264


    正确答案: D
    解析:
    赋值运算结合性为自右向左,a+=a-a*a相当于a=a-a*a,a=a+a;自右向左计算过程为a=a-a*a=-132,a=a+a=-264。答案选择A选项。

  • 第13题:

    若在定义语句:int a,b,c,*p=&c;之后,接着执行以下选项中的语句,则能正确执行的语句是( )。

    A.A.scanf("%d",a,b,c);

    B.scanf("%d%d%d",a,b,c):

    C.scanf("%d",p);

    D.scanf("%d",&p);


    正确答案:C
    题中整型指针变量P存放的是变量C的地址。所以本题答案为C。

  • 第14题:

    有如下定义语句:int a[]={1,2,3,4,5);,则对语句int *p=a;正确的描述是( )。

    A.语句int *p=a;定义不正确

    B.语句int *p=a;初始化变量p,使其指向数组对象a的第一个元素

    C.语句int *p=a;是把a[0]的值赋给变量p

    D.语句int *p=a;是把a[1]的值赋给变量p


    正确答案:B

  • 第15题:

    若有以下定义和语句:includeinta=4,b=3,*p,*q,*w;p=&a; q=&b; w=q; q=NULL;则

    若有以下定义和语句: #include<stdio.h> int a=4,b=3,*p,*q,*w; p=&a; q=&b; w=q; q=NULL; 则以下选项中错误的语句是( )。

    A.*q=0;

    B.w=p;

    C.*p=a;

    D.*p=*w;


    正确答案:A
    解析:本题中定义了3个指向整型的指针变量p、q、w,并让p指向a,让q指向b,通过将q的值赋给w,使w也指向b,最后将q指向NULL。因为q指向NULL,所以选项A中对q所指地址进行写入是非法的。故A选项为所选。

  • 第16题:

    设有定义:int x=o,* P;,立刻执行以下语句,正确的语句是( )。

    A.p=x;

    B.* p=x;

    C.p=NULL;

    D.* p=NULL;


    正确答案:C
    如果没有把P指向一个指定的值,*P是不能被赋值的。定义指针变量不赋初始值时默认为null。

  • 第17题:

    若有以下定义和语句 int a=4.b=3.* p, * q, * w; p=&a;q=& b; w=q;q=NULL; 则以下选项中错误的语句是

    A.*q=0;

    B.w=p;

    C.*p=a;

    D.*p=* w;


    正确答案:D
    解析:考生遇到这么复杂的变量间关系时,可以在草稿纸上画出各个变量的内存存放示意图,然后用箭头指向表示指针变量与其他变量之间的关系。如果能够清晰的画出这些变量间关系,则可以会让你容易的判断出正确答案为D。

  • 第18题:

    若有定义语句:int a[21[3],* P[3];则以下语句中正确的是( )。

    A.p:a;

    B.p[0]=a;

    C.p[O]=&a[1][2];

    D.1a[1]=&a;


    正确答案:C
    A选项错误,因为P是指向一个指针数组,作为数组名,不能指向别的地方。B选项错误,因为P[0]是一个int指针,也就是int-;而a是一个指向指针的指针in‘}}。c选项正确,因为p[O]是一个int},a[1][2]是int,&a[1][2]是int+,类型吻合。D选项错误,因为a作为数组名,不能取地址。即使能取,P[1]是int·,&a是int+t;,类型不对。因此C选项正确。

  • 第19题:

    若有一些定义和语句include inta=4, b=3, *p,*q,*w;p=&a;q=&b;w=q;q=NULL;则

    若有一些定义和语句 #include <stdio.h> int a=4, b=3, *p,*q,*w; p=&a; q=&b; w=q; q=NULL; 则以下选项中错误的语句是

    A.*q=0;

    B.w=p;

    C.*p=a;

    D.*p=*w;


    正确答案:A
    解析:本题考核的知识点是指针变量的使用与空指针(NULL)基本概念.本题中定义了3个指向整型的指针变量p、q、w,并让p指向a,让q指向b,通过将q的值赋给w,使w也指向b,最后将NULL赋值给q。由整形变量指针的定义可知,可以给整型指针指向的变量赋一个常数值(表达式),故选项C和选项D是正确的;可以给指针变量赋一个同种类型的指针变量(或地址值),故选项B也是正确的;选项A错误,因为q不指向任何变量,给一个空指针指向的单元赋值是错误的。所以,A选项为所选。

  • 第20题:

    有定义语句:“int*p[4];”,以下选项中与此语句等价的是( )。 A.int p[4];B.int**P;SXB

    有定义语句:“int*p[4];”,以下选项中与此语句等价的是( )。

    A.int p[4];

    B.int**P;

    C.int*(p[4]);

    D.int(*p)[4];


    正确答案:D
    本题int*p[4]的作用是声明一个指针数组,每个元素都是int*型指针。

  • 第21题:

    若有定义:int a[2][3],*p[3]; ,则以下语句中,正确的是()。

    • A、p[0]=&a[1][2];
    • B、p=a;
    • C、p[0]=a;
    • D、p[1]=&a;

    正确答案:A

  • 第22题:

    单选题
    若有定义语句:int year=2009,*p=&year;,以下不能使用变量year中的值增至2010的语句是(  )。
    A

    *p+=1

    B

    (*p)++;

    C

    ++(*p);

    D

    *p++;


    正确答案: D
    解析:
    A项,p所指内容执行增1操作;B项,先取P指针所指的内容,再执行后++运算;C项,先取P指针所指内容,再执行前++运算;D项,实际上是p指针执行++操作,而后取值。答案选择D选项。

  • 第23题:

    单选题
    若有定义语句:int a[2][3],*p[3];则以下语句中正确的是(  )。
    A

    p[0]=&a[1][2];

    B

    p[0]=a;

    C

    p=a;

    D

    p[1]=&a;


    正确答案: D
    解析:
    声明了a是一个二维数组,p是长度为3的int *数组。A项正确,p[0]是int类型指针,可以指向二维数组中的元素。B项错误,p[0]是int类型指针,不能指向二维数组;C项错误,p是int类型指针的数组,一旦定义,不能再次赋值;D项错误,p[1]是int类型的指针,&a是二维数组的地址。答案选择A选项。