itgle.com
更多“设有以下类和对象的定义: class A { public: int m; … }; A k1,k2,*p1,* p2; 则下面针对成员变量m的引用,错误的是A.k1.m=1B.k2->m=2C.p1->m=3D.(*p2).m=4”相关问题
  • 第1题:

    有以下程序:include<stdio.h>main( ) { int a,b,k,m,*pl,*p2; k=1,m=8; p1=&k,p2=&a

    有以下程序:

    include<stdio.h>

    main( )

    { int a,b,k,m,*pl,*p2;

    k=1,m=8;

    p1=&k,p2=&m;

    a=/*pl-m;b=*p1+*p2+6;

    printf("%d",a);printf("%d\n",b);

    }

    编译时编译器提示错误信息,你认为出错的语句是( )。

    A.a=/*pl-m;

    B.b=*p1+*p2+6;

    C.k=1,m=8;

    D.pl=&k,p2-&m;


    正确答案:A

    本题考查指针,pl=&k表示P指向k的地址,则*p=k,依次类推,在对指针进行赋值时没有错误。a=/*p+m赋值,在c语言中"/*"表示的注释,所以答案选择A。

  • 第2题:

    执行以下程序后,a,b的值分别为

    main()

    { int a,b,k=4,m=6,*p1=&k,*p2=&m;

    a=p1==&m;

    b=(*p1)/(*p2)+7;

    printf("a=%d\n",A.;

    printf("b=%d\n",B.;

    }

    A.-1,5

    B.1,6

    C.0,7

    D.4,10


    正确答案:C

  • 第3题:

    给出下列代码,如何使成员变量m被方法fun( )直接访问?Class Test{private int m;public static void fun( ){} }

    A.将private int m改为protected int m

    B.将private int m改为public int m

    C.将private int m改为static int m

    D.将private int m改为int m


    正确答案:C

  • 第4题:

    给出下列代码,如何使成员变量m被方法fun( )直接访问? class Test{ private int m; public static void fun( ){ … } }

    A.将private int m改为protected int m

    B.将private int m改为public int m

    C.将private int m改为static i

    D.将private int m改为int m


    正确答案:C
    解析:在静态方法中不能直接访问非静态的成员,如果要在fun()中直接访问变量m,应将变量m用static修饰。

  • 第5题:

    有如下类定义:

    class XX{

    int xdata;

    public:

    xx(int n=O):xdata(n){}

    };

    class YY:public XX{

    int ydata;

    public:

    YY(int m=0,int n=O):XX(m),ydata(n){}

    };

    YY类的对象包含的数据成员的个数是

    A.1

    B.2

    C.3

    D.4


    正确答案:B
    解析:派生类的数据成员包括其基类的数据成员和派生类本身新增的数据成员,由于YY继承了XX,所以YY类的对象包含2个数据成员,即基类中的成员xdata和新增成员ydata。

  • 第6题:

    有如下程序: include using namespace std; class Base{ public: int m,n; }; class D

    有如下程序:

    include<iostream>

    using namespace std;

    class Base{

    public:

    int m,n;

    };

    class Derived1:【 】Base{};

    class Derived2:public Derived1{

    public:

    void SetMN(int M,int N){m=M;n=N;}

    int GetSumMN(){return(m+n);}

    };

    int main() {

    Derived2 objD;

    ohjD. SetMN(3,4);

    cout<<"M+N="<<objD, m+objD, n<<endl;

    return 0

    }

    编译时只有“cout<<"M+N"<<objD.m+objD.n<<endl;”有语法错误,程序的其他地方没有语法错误。请判断下划线处使用的关键字是什么。


    正确答案:protected
    protected 解析:protected:可以被该类中的函数、子类的函数以及其友元函数访问。但不能被该类的对象访问。

  • 第7题:

    有如下类定义: class Test { private int x; public int y; public void setX (int m) {x=m;} public int getX( ) {return x;} }现用Test t=new Text();生成一个对象t,则如下语句中,错误的是( )。

    A.t.x=10;

    B.t.y=10;

    C.t. setX(10);

    D.int m=t.getX( );


    正确答案:A
    解析:本题考查public和private修饰符的访问权限。public指明变量和方法为公有,可以通过其对象直接访问,因此,选项B、C、D都是正确的访问方法。private指明变量为私有访问,只能被该类自己访问或调用,因此,A选项中不能通过其对象来访问私有变量。

  • 第8题:

    设有以下类和对象的定义: ClaSSA {public: intm; }; Ak1,k2,*p1,*p2; 则下面针对成员变量m的引用,错误的是( )。

    A.k1.m=1

    B.k2→m=2

    C.p1→m=3

    D.(*p2).m=4


    正确答案:B
    B。【解析】A*p1,A*p2为指向A类对象的指针,故“p1→m=3,(*p2).m=4”是正确的。但k2不是指针,k2→m的表示是错误的。

  • 第9题:

    有如下程序:includeusing namespaee std;class Pair{int m;int n;public:Pair(int i,

    有如下程序: #include<iostream> using namespaee std; class Pair{ int m; int n; public: Pair(int i,int j):m(i),n(j){ } boot operator>(pair P)const;//需在类体外给出定义 }; int main( ){ Pair pl(3,4),p2(4,3),p3(4,5); cout<<(pl>p2)<<(p2>p1)<<(p2>p3)<<(p3>p2); retum 0; } 运算符函数operator>的功能是比较两个Pair对象的大小,当左边对象大时,返回true,否则返回false。比较规则是首先比较两对象的m成员,m大者为大;当m相等时比较n,n大者为大。程序输出0101,下列对运算符重载函数的正确定义是

    A.bool Pair::operator>(Pair P)eonst

    B.bool Pair::operator>(Pair P) {if(m!=P.m)return m>p.In;return n>p.n;} {if(m!=P.m)return m>p.m;return n>p.n;}

    C.bool Pair::operator>(Pair P)eonst

    D.bool Pair::operator>(Pair P) {if(m>p.m)return true;return n>p.n;} {if(Ul>p.m)return true;return n>p.n;}


    正确答案:C

  • 第10题:

    假定变量m定义为“int m=7;”,则下面正确的语句为()。

    Aint p=&m;

    Bint *p=&m;

    Cint&p=*m;

    Dint *p=m;


    B

  • 第11题:

    若有说明:int*p1,*p2,m=5,n=9;以下均是正确赋值语句的选项是()

    • A、p1=&m;p2=&p1;
    • B、p1=&m;p2=&n;*p1=*p2;
    • C、p1=&m;p2=p1
    • D、p1=&m;*p2=*p1;

    正确答案:B

  • 第12题:

    单选题
    有以下程序:#include main(){ int a,b,k,m,*p1,*p2; k=1,m=8; p1=&k,p2=&m; a=/*p1-m; b=*p1+*p2+6; printf(%d,a); printf(%d,b);}编译时编译器提示错误信息,你认为出错的语句是(  )。
    A

    a=/*p1-m;

    B

    b=*p1+*p2+6;

    C

    k=1,m=8;

    D

    p1=&k,p2=&m;


    正确答案: D
    解析:
    a=/*p1-m;语句不符合语法规范,可写作a/=(*p1-m);,表示a=a/(*p1-m);。答案选择A选项。

  • 第13题:

    有如下类声明: class MyBASE { int k: public; void set(int n){k=n;} int get() const{return k;} }; class MyDERIVED: protected MyBASE { protected: int j; public: void set(int m, int n){MyBASE::set(m);j=n;} int get() const{return MyBASE::get()+j;} }; 则类MyDERIVED中保护的数据成员和成员函数的个数是( )。

    A.4

    B.3

    C.2

    D.1


    正确答案:B

  • 第14题:

    若有说明:int*p1,*p2,m=3,n;则p1=&m;p2=p1;是正确的赋值语。()

    此题为判断题(对,错)。


    参考答案:正确

  • 第15题:

    设有以下程序: include using namespace std; int main() {inta,b,k:4,m=6,*p1=&k

    设有以下程序:

    include<iostream>

    using namespace std;

    int main()

    {

    int a,b,k:4,m=6,*p1=&k,*p2=&m;

    a=p1==&m;

    b=(*p1)/(*p2)+7;

    cout<<a<<b<<end1;

    return 0;

    }

    执行该程序后,a的值为【 】,b的值为【 】。


    正确答案:0 7
    0 7 解析:本题考核的知识点是有关指针的运算。程序中定义了两个指针变量p1和p2,并通过赋初值让它们分别指向了变量k和m。语句“a=p1==&m;”中先执行关系运算符“p1==&m”,显然是0(假),然后把0赋值给a。接着执行语句“b=(*p1)/(*p2)+7”,此处*p1的值就是k的值4,*p2的值就是m的值6,即把“4/6+7”的结果赋给b,b的值为7。

  • 第16题:

    有如下类声明: class MyBASE{ int k; public: void set(iht n){k=n;} int get()coast{return k;} }; class MyDERIVED:pnoted My BASE { protected: int j; public: void set(int m,int n){MyBASE::set(m);j=n;} int get()const{return MyBASE::get()+j;} }; 则类MyDERIVED中保护的数据成员和成员函数的个数是

    A.4

    B.3

    C.2

    D.1


    正确答案:B
    解析:protected派生:pnvate->不可见;protected->private;public->protected。

  • 第17题:

    有如下类声明: class MyBASE{ int k; public: void set(int n){k=n;} int get( )const{return k;} }; class MyDERIVED:protected MyBASE{ protected: intj; public: void set(int m,int n){MyBASE::set(m);j=n;} int get( )const{return MyBASE::get( )+j;} }; 则类MyDERIVED中保护的数据成员和成员函数的个数是

    A.4

    B.3

    C.2

    D.1


    正确答案:B
    解析:在保护派生的单继承中,基类的公有数据成员和成员函数在派生类中成为保护成员。

  • 第18题:

    若有定义语句:int m[]={5,4,3,2,1},i=4;,则下面对m数组元素的引用中错误的是______。

    A.m[-i]

    B.m[2*2]

    C.m[m[0]]

    D.m[m[i]]


    正确答案:C
    解析:一维数组的定义方式为:类型说明符 数组名[常量表达式]。其中“常量表达式”表示元素的个数,即数组长度。元素的下标从0开始,最大下标是元素个数减一。本题定义了一个由5个元素(m[0[到m[4])组成的数组。选项A表示对m[3]的引用;选项B表示对m[4]的引用;由于m[0]的值为5,所以选项C表示m[5],但由于m数组元素的最大下标为4,所以本引用下标越界;由于m[i]即m[4]的值为1,所以选项D表示对m[1]的引用。

  • 第19题:

    有以下程序include <stcli0.h>main( ){ int a,b,k,m,*p1,*p2; k=1,m=8; p1=&k,p2=&am

    有以下程序

    #include <stcli0.h>

    main( )

    { int a,b,k,m,*p1,*p2;

    k=1,m=8;

    p1=&k,p2=&m;

    a=/*p1 -m; b=*p1+*p2+6;

    printf(”%d ”,a); printf(”%d\n”b);

    }

    编译时编译器提示错误信息,你认为出错的语句是

    A) a=/*p1- m;

    B)b=*p1+*p2+6;

    C)k=1,m=8;

    D)p1=&k, p2=&m;


    正确答案:D
    【答案】D
    【知识点】C语言书写规范
    【解析】D中语句应为p1=&k,p2=&m;中间的逗号应变成分号。

  • 第20题:

    有以下程序: include<stdio.h> main( ) { int a,b,k,m,*pl,*p2; k=1,m=8; p1=&

    有以下程序: #include<stdio.h> main( ) { int a,b,k,m,*pl,*p2; k=1,m=8; p1=&k,p2=&m; a=/*pl-m;b=*p1+*p2+6; printf("%d",a);printf("%d\n",b); } 编译时编译器提示错误信息,你认为出错的语句是( )。

    A.a=/*pl-m;

    B.b=*p1+*p2+6;

    C.k=1,m=8;

    D.pl=&k,p2-&m;


    正确答案:A
    本题考查指针,pl=&k表示P指向k的地址,则*p=k,依次类推,在对指针进行赋值时没有错误。a=/*p+m赋值,在c语言中"/*"表示的注释,所以答案选择A。

  • 第21题:

    假定变量m定义为int m=7;则定义变量p的正确语句为( )。

    A.int p=&m;

    B.int *p=&m;

    C.int &p=*m;

    D.int *p=m;


    正确答案:B
    解析:将变量m的地址赋给指针p。

  • 第22题:

    若有说明:int *p1,*p2,m=5,n; 以下都是正确的赋值语句的选项是()。

    • A、p1=&m; p2=&p1;
    • B、p1=&m; p2=&n; *p1=*p2;
    • C、p1=&m; p2=p1;
    • D、p1=&m; *p2=*p1;

    正确答案:C

  • 第23题:

    单选题
    若有说明:int *p1,*p2,m=5,n; 以下都是正确的赋值语句的选项是()。
    A

    p1=&m; p2=&p1;

    B

    p1=&m; p2=&n; *p1=*p2;

    C

    p1=&m; p2=p1;

    D

    p1=&m; *p2=*p1;


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

  • 第24题:

    单选题
    若有定义语句:int m[]={5,4,3,2,1},i=4;,则下面对m数组元素的引用中错误的是(  )。
    A

    m[--i]

    B

    m[2*2]

    C

    m[m[0]]

    D

    m[m[i]]


    正确答案: A
    解析:
    在C语言中,数组的下标是从0开始的,所以它的上限是数组元素个数减1。如果超过这个范围来引用数据元素就会溢出,造成运行时错误。本题的数组m有5个元素,所以它的下标范围是0~4。A项,--i的值为3;B项,2*2的值为4;C项,m[0]等于5,超出范围,出现溢出错误;D项,m[i]的值为4,即m[4]的值为1。答案选择C选项。