2016年9月計(jì)算機(jī)二級(jí)C++備考練習(xí)題及答案(3)

字號(hào):


    (1)關(guān)于友元的概念錯(cuò)誤的是
    A)友元函數(shù)沒(méi)有this指針
    B)調(diào)用友元函數(shù)時(shí)必須在它的實(shí)參中給出要訪(fǎng)問(wèn)的對(duì)象
    C)一個(gè)類(lèi)的成員函數(shù)也可以作為另一個(gè)類(lèi)的友元函數(shù)
    D)只能在類(lèi)的公有段聲明友元
    (2)關(guān)于抽象類(lèi)下面說(shuō)法正確的是
    A)抽象類(lèi)就是其中有函數(shù)定義但沒(méi)有實(shí)現(xiàn)的類(lèi)
    B)抽象類(lèi)是可以被實(shí)例化的
    C)派生類(lèi)不能成為抽象類(lèi)
    D)抽象類(lèi)的子類(lèi)必須實(shí)現(xiàn)父類(lèi)中的純虛函數(shù)
    (3)下面程序的結(jié)果是
    #include
    class test { private:
    int num;
    public:
    test();
    int getint(){return num;}
    ~test();};
    test :: test()
    { num =0;}
    test::~test()
    { cout<<"Destructor is active"< P>
    { test x[3];
    cout<<"Exiting main"<>
    Destructor is active
    Destructor is active
    Destructor is active
    B)Exiting main
    Destructor is active
    Destructor is active
    C)Exiting main
    Destructor is active
    D)Exiting main
    (4)如果表達(dá)式--x+y中,--是作為成員函數(shù)重載的, +是作為成員函數(shù)重載的,則該表達(dá)式還可為
    A)y.operator+(x.operator--(0))
    B)y.operator+(x.operator--())
    C)y.operator+(operator--(x,0))
    D)operator+(x.operator--())
    (5)下列語(yǔ)句不能夠用于打開(kāi)C根目錄下文件test.txt的語(yǔ)句是
    A)ifstream fin; fin.open("C:\\test.txt");
    B)ifstream fin("C:\\test.txt");
    C)A)和B)
    D)ifstream fin; fin("C:\\test.txt");
    (6)以下哪個(gè)基類(lèi)中的成員函數(shù)表示純虛函數(shù)?
    A)virtual void vf (int)
    B)void vf (int)=0
    C)virtual void vf(=0)
    D)virtual void yf(int){ }
    (7)下面程序輸出的結(jié)果是
    #include
    void main()
    { int i;
    int a[3][3]={1,2,3,4,5,6,7,8,9};
    for(i=0;i<3;i++)
    cout << a[i][i] << " ";}
    A)1 5 9
    B)7 5 3
    C)3 5 7
    D)5 9 1
    (8)派生類(lèi)繼承基類(lèi)的方式有
    A)public
    B)private
    C)protected
    D)以上都對(duì)
    (9)下列程序的運(yùn)行結(jié)果為
    #include
    class Location {
    protected:
    int X, Y;
    public:
    void SetX(int myx){X=myx;}
    void SetY(int myy){Y=myy;}
    void showxy(){cout << "X=" << X << " " << "Y=" << Y <>
    private:
    int H, W;
    public:
    void SetH(int myh){H=myh;}
    void SetW(int myw){W=myw;}
    void show(){ cout << "X=" << X << " " << "Y=" << " " << Y << " " << "H=" << H << " " << "W=" << W << endl;}};
    void main()
    { Rectangle r1;
    r1.SetX (3);
    r1.SetY (5);
    r1.SetH (4);
    r1.SetW (6);
    r1.showxy();
    r1.show();}
    A)X=3 Y=5
    X=3 Y=5 H=4 W=6
    B)X=3 Y=5
    X=3 Y=5 H=3 W=6
    C)X=3 Y=5
    X=3 Y=4 H=4 W=6
    D)X=3 Y=5
    X=3 Y=3 H=4 W=6
    (10)有以下程序
    #include
    void ss(char *s,char t)
    { while(*s)
    { if(*s==t)*s=t-′a′+′A′;
    s++;}}
    void main()
    { char str1[100]="abcddfefdbd",c=′d′;
    ss(str1,c); cout << str1;}
    程序運(yùn)行后的輸出結(jié)果是
    A)ABCDDEFEDBD
    B)abcDDfefDbD
    C)abcAAfefAbA
    D)Abcddfefdb
    答案解析:
    (1)D
    解析: C++中的友元可以在一個(gè)類(lèi)中的任何位置聲明,不一定必須在公有段,友元沒(méi)有自己的this指針,調(diào)用友元函數(shù)時(shí)必須在它的實(shí)參中給出要訪(fǎng)問(wèn)的對(duì)象,并且一個(gè)類(lèi)的成員函數(shù)是可以作為另一個(gè)類(lèi)的友元函數(shù)的。
    (2)D
    解析: C++語(yǔ)言中的抽象類(lèi)就是類(lèi)中至少有一個(gè)純虛函數(shù)的類(lèi),抽象類(lèi)不能被實(shí)例化,繼承抽象類(lèi)的類(lèi)必須實(shí)現(xiàn)抽象類(lèi)中的純虛函數(shù)。
    (3)A
    解析: C++語(yǔ)言中析構(gòu)函數(shù)是在程序退出不用該類(lèi)的對(duì)象時(shí)進(jìn)行調(diào)用。
    (4)B
    解析: C++語(yǔ)言中用成員函數(shù)重載--x為:x. operator--(),用成員函數(shù)重載x+y為:x. operator+(y)。
    (5)D
    解析: C++語(yǔ)言中打開(kāi)文件有兩種方式① ifstream fin("test.dat")② ifstream fin;fin.open("test.dat");。
    (6)B
    解析: C++中純虛函數(shù)的定義與虛函數(shù)的關(guān)鍵字一樣,在函數(shù)末尾要加上"=0"。
    (7)A
    解析: 首先,當(dāng)i=0時(shí),數(shù)組中的位置是a[0][0]=1,當(dāng)然,如果用排除法的話(huà),就不用考慮后面的循環(huán)了,因?yàn)樵?個(gè)選項(xiàng)中,第1個(gè)數(shù)為1的選項(xiàng)只有A)。本題執(zhí)行第2次循環(huán)時(shí),i的值為1,則cout函數(shù)中的數(shù)組指向?yàn)閍[1][1]=5,依次循環(huán),可求出答案。
    (8)D
    解析: 派生類(lèi)繼承基類(lèi)的方式有3種:public,private和protected,常用的是public.
    (9)A
    解析: 本題是一道簡(jiǎn)單的成員函數(shù)應(yīng)用題,考生只要按著主函數(shù)中生成的類(lèi)Rectangle的對(duì)象r1進(jìn)行成員函數(shù)的調(diào)用即可得到答案。
    (10)B
    解析: 在內(nèi)存中,字符數(shù)據(jù)以ASCII碼存儲(chǔ),它的存儲(chǔ)形式就與整數(shù)的存儲(chǔ)形式相類(lèi)似。C++語(yǔ)言使字符型數(shù)據(jù)和整型數(shù)據(jù)之間可以通用。也可以對(duì)字符數(shù)據(jù)進(jìn)行算術(shù)運(yùn)算,此時(shí)相當(dāng)于對(duì)它們的ASCII碼進(jìn)行算術(shù)運(yùn)算,在本題中,s++相當(dāng)于s=s+1,即讓s指向數(shù)組中的下一個(gè)元素。