更多“若有说明:int n=2,*p=&n,*q=p;,则以下非法的赋值语句是()。A.p=q;B.*p=*q;C.n=*q;D.p=n: ”相关问题
  • 第1题:

    设有定义:int n1=0,n2,*p=&n2,*q=&n1;,以下赋值语句中与n2=n1;语句等价的是()。A)*p=*q; B)p=q;C)*p=&n1; D)p=*q;


    正确答案:A
    B项是将n1的地址赋给p,使p也指向n1,C项表达式错误,应该p=&n1,和B一样的效果,D项也是表达式错误。

  • 第2题:

    设有定义:int n1=0,n2,*p=&n2,*q=&n1;,下列赋值语句中与n2=n1;语句等价的是 ( )。

    A.*p=*q;

    B.p=q;

    C.*p=&n1;

    D.p=*q;


    正确答案:A
    解析: 在定义指针变量p和q时,分别把变量n2和n1的地址赋给了指针变量p和q,所以*p和*q中内容就分别是变量n2和n1的值,所以语句*p=*q与语句n2=n1等价。因此选项A)正确。

  • 第3题:

    设有定义int n=0,*p=&n,**q=&p;,则下列选项中正确的赋值语句是

    A.p=1;

    B.*q=2;

    C.q=p;

    D.*p=5;


    正确答案:D

  • 第4题:

    设有定义:int n1=0,n2,*p=&n2,*q=&n1;,以下赋值语句中与n2=n1;语句等价的是 ______。

    A.*p=*q;

    B.p=q;

    C.*p=&n1;

    D.p=*q;


    正确答案:A
    解析:由定义*p=&n2,*q=&n1,p指向n2的地址,q指向n1的地址,即*p=n2,*q=n1,B、C、D选项只是让p也指向n1的地址,都没有将n1赋值给n2。

  • 第5题:

    现有如下定义:int a,b,*p,*q;,则下列赋值语句错误的是

    A.p=&a;

    B.q=&b;

    C.p=q;

    D.p=a;


    正确答案:D

  • 第6题:

    若有定义int *p,n;则通过语句scanf能够正确读入数据的程序段是( )。

    A.p=&n;scanf("%d",&p);

    B.p=&n;scanf("%d",*p);

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

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


    正确答案:D
    解析:通过定义int*p,p是一个整型指针,p=&n是使p指向变量n,而p是一个指针,输入时不需再用地址运算符。

  • 第7题:

    若有定义语句:int u[4][10],*P,*q[4];且0≤i<4,则错误的赋值是

    A.p=a

    B.q[i]=a[i]

    C.p=a[i]

    D.p=&a[2][1]


    正确答案:A
    解析:直接将二维数组a赋给p不合法,两者类型不匹配。

  • 第8题:

    有以下程序includevoid f(int *p,int *q);main(){ int m=1,n=2,*r=&m;f(r, &n

    有以下程序 #include<stdio.h> void f(int *p,int *q); main() { int m=1,n=2,*r=&m; f(r, &n); printf("%d,%d",m,n); } void f(int*p,int*q) {p=p+1; *q=*q+1;) 程序运行后的输出结果是______。

    A.1,3

    B.2,3

    C.1,4

    D.1,2


    正确答案:A
    解析:本题主要考查函数实参和形参之间的传递,C语言规定,实参变量对形参变量的数据传递是“值传递”,即单向传递,只能由实参传绐形参,而不能由形参传回来给实参。f(r&n)把n的地址传递给q,通过地址传递的函数可以有返回值,因此,n的值为q的返回值3,又因为p是形参变量没有返回值,所以m的值没有改变,因此,选项A是正确的。

  • 第9题:

    设有定义:int n=0,*p=&n,**q=&p;则以下选项中,正确的赋值语句是( )

    A.p=1

    B.*q=2;

    C.q=p;

    D.*p=5;


    正确答案:D
    解析:选项A),B),C)的指针赋值表达方式都不正确,*p=5表示将整数5放到指针p所向的存储 单元中。

  • 第10题:

    若有定义语句:"int a[4][10],*P,*q[4];"且0≤i<4,则错误的赋值是( )。

    A.D=a

    B.q[i]=a[i]

    C.p=a[l]

    D.P=&a[2][1]


    正确答案:A
    数组名是一个存放一个数组首地址的值,是一个地址常量。而p=a不是合法的,因为p和a的基本类型不同。

  • 第11题:

    设有定义:intn1=0,n2,*p=&n2,*q=&n1;,以下赋值语句中与n2=n1;语句等价的是()

    • A、*p=*q;
    • B、p=q;
    • C、*p=&n1
    • D、p=*q;

    正确答案:A

  • 第12题:

    单选题
    若有说明:intn=2,*p=&n,*q=p,则以下非法的赋值语句是:()
    A

    p=q

    B

    *p=*q

    C

    n=*q

    D

    p=n


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

  • 第13题:

    (27)有以下程序

    #include <stdio.h>

    void f(int *p,int *q );

    main()

    { int m=1,n=2,*r=&m;

    f(r,&n);printf(“%d,%d”,m,n);

    }

    void f(int *p,int *q)

    {p=p+1;*q=*q+1;}

    程序运行后输出的结果是

    A)1,3 B)2,3 C)1,4 D)1,2


    正确答案:A

  • 第14题:

    设有定义:int n=0,*p=&n,**q=&p;,则以下选项中,正确的赋值语句是( )。

    A.p=1;

    B.*q=2;

    C.q=p;

    D.*p=5;


    正确答案:D
    解析:本题中首先定义了整型变量n,其初值为0,接着定义一个指针变量p并让它指向n,然后定义了一个指向指针的指针变量q,并让它指向p。选项A中将常量1赋给指针p,而p的值应为地址,所以不正确。选项B中*p的值也应为地址,故将常量 2复制给*p不正确。选项C中将p的值赋给q,使q也指向p所指向的存储单元,该存储单元中存放的是常量0,而q被定义为一个指向指针的指针变量,它所指向的存储单元中应该存放的是地址值,故不正确。所以,4个选项中选项D符合题意。

  • 第15题:

    若有定义语句:"int a[4][10],*P,*q[4];"且0≤i<4,则错误的赋值是( )。A.D=aB.q[i]=a[i]C.p=a[l]D.

    若有定义语句:"int a[4][10],*P,*q[4];"且0≤i<4,则错误的赋值是( )。

    A.D=a

    B.q[i]=a[i]

    C.p=a[l]

    D.P=&a[2][1]


    正确答案:A
    数组名是一个存放一个数组首地址的值,是一个地址常量。而p=a不是合法的,因为p和a的基本类型不同。

  • 第16题:

    若有说明:int *p,m=5,n;,以下正确的程序段是

    A.p=&n;scanf("%d",&p);

    B.p=&n;scanf("%d",*p)

    C.scanf("%d",&n);*p=n;

    D.p=&n;*p=m;


    正确答案:D
    解析:&是求址运算符,"*"是指变量说明符。选项A)、B)应改为scanf("%d",p);选项C)中指针变量p未指向一确定的内存单元,不能为其赋值,并且这样做很危险,建议不使用。

  • 第17题:

    若有定义语句:int a[4][10],* P,* q[4];且0<=i<4,则错误的赋值是( )。

    A.P=a

    B.q[i]=a[i]

    C.p=a[i]

    D.p=&a[2][1]


    正确答案:A
    二维数组名是指向指针的指针,所以a和q都为指向指针的指针,而P为指向int类型的指针。所以选项A)是将一个指向int类型的指针用来指向一个指针的指针,显然是错误的。其他几个选项都是正确的赋值,其中选项D)是用&返回整数的地址,然后赋值给P。

  • 第18题:

    设有定义:int n=0,*p=&n,**q=&p;,则以下选项中,正确的赋值语句是 ______。

    A.p=1;

    B.*q=2

    C.q=p

    D.*p=5


    正确答案:D
    解析:本题中n是int型变量,p是指向int型的指针变量,q是指向指针的指针变量,故正确答案为D。

  • 第19题:

    若有以下定义和语句: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选项为所选。

  • 第20题:

    有以下程序include<stdio.h>int*f(int*p,int*q);main( ){int m=1,n=2,*r=&m;r=f(r,&am

    有以下程序

    include<stdio.h>

    int*f(int*p,int*q);

    main( )

    {int m=1,n=2,*r=&m;

    r=f(r,&n);printf(”%d\n”,*r);

    }

    int-f(int*P,int*q)

    (return(*p>*q)?p:q;)

    程序运行后的输出结果是______。


    正确答案:2
    2 解析:函数f的返回值的类型是int*,作用是返回两个int*型指针所指变量中值大的那个指针的。本题中定义了一个int*型指针r并置初值&m,即指针r指向m。r=f(r,&n),由于m的值小于n值,所以f函数返回值为&n,所以输出为2,即n值。

  • 第21题:

    设有定义:int nl=0,n2,*p=&n2,*q=&n1;,下列赋值语句中与n2=n1;语句等价的是( )。

    A.*p=*q;

    B.p=q;

    C.*p=&n1;

    D.p=*q;


    正确答案:A
    解析:在定义指针变量p和q时,分别把变量n2和n1的地址赋给了指针变量p和q,所以*p和*q中内容就分别是变量n2和n1的值,所以语句*p=*q与语句 n2=n1等价。因此选项 A正确。

  • 第22题:

    设X~N(μ,4^2),y~N(μ,5^2),令p=P(X≤μ一4),q=P(Y≥μ+5),则().

    A.p>q
    B.pC.p=q
    D.p,q的大小由μ的取值确定

    答案:C
    解析:
    ,得p=q,选(C).

  • 第23题:

    若有说明:intn=2,*p=&n,*q=p,则以下非法的赋值语句是:()

    • A、p=q
    • B、*p=*q
    • C、n=*q
    • D、p=n

    正确答案:D

  • 第24题:

    单选题
    有以下程序:#include void f(int*p,int*q);main(){ int m=1,n=2,*r=&m; f(r,&n); printf("%d,%d",m,n);}void f(int*p,int*q){ p=p+1; *q=*q+1;}程序运行后的输出结果是(  )。
    A

    1,3

    B

    2,3

    C

    1,4

    D

    1,2


    正确答案: D
    解析:
    语句p=p+1;只改变指针p的地址,与p的内容无关,所以m值没有改变,而语句*q=*q+1;是改变该指针所指地址中的内容,所以n变为3,m不变,仍为1,答案选择A选项。