完整版C++试题及答案推荐文档.docx

上传人:b****1 文档编号:14858097 上传时间:2023-06-27 格式:DOCX 页数:20 大小:21.87KB
下载 相关 举报
完整版C++试题及答案推荐文档.docx_第1页
第1页 / 共20页
完整版C++试题及答案推荐文档.docx_第2页
第2页 / 共20页
完整版C++试题及答案推荐文档.docx_第3页
第3页 / 共20页
完整版C++试题及答案推荐文档.docx_第4页
第4页 / 共20页
完整版C++试题及答案推荐文档.docx_第5页
第5页 / 共20页
完整版C++试题及答案推荐文档.docx_第6页
第6页 / 共20页
完整版C++试题及答案推荐文档.docx_第7页
第7页 / 共20页
完整版C++试题及答案推荐文档.docx_第8页
第8页 / 共20页
完整版C++试题及答案推荐文档.docx_第9页
第9页 / 共20页
完整版C++试题及答案推荐文档.docx_第10页
第10页 / 共20页
完整版C++试题及答案推荐文档.docx_第11页
第11页 / 共20页
完整版C++试题及答案推荐文档.docx_第12页
第12页 / 共20页
完整版C++试题及答案推荐文档.docx_第13页
第13页 / 共20页
完整版C++试题及答案推荐文档.docx_第14页
第14页 / 共20页
完整版C++试题及答案推荐文档.docx_第15页
第15页 / 共20页
完整版C++试题及答案推荐文档.docx_第16页
第16页 / 共20页
完整版C++试题及答案推荐文档.docx_第17页
第17页 / 共20页
完整版C++试题及答案推荐文档.docx_第18页
第18页 / 共20页
完整版C++试题及答案推荐文档.docx_第19页
第19页 / 共20页
完整版C++试题及答案推荐文档.docx_第20页
第20页 / 共20页
亲,该文档总共20页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

完整版C++试题及答案推荐文档.docx

《完整版C++试题及答案推荐文档.docx》由会员分享,可在线阅读,更多相关《完整版C++试题及答案推荐文档.docx(20页珍藏版)》请在冰点文库上搜索。

完整版C++试题及答案推荐文档.docx

完整版C++试题及答案推荐文档

C++考试试卷

                                                                                                

得分

      

一、单项选择(每空1分,共20分)

(注意选项填写到下面表格中!

1

2

3

4

5

6

7

8

9

10

 c

 b

 d

 c

 b

 

 

 

 

 

11

12

13

14

15

16

17

18

19

20

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1.已知:

char*s="123456";则cout<

A)123456      B)3         C)3456       D)2

2.已知:

char*s="abcde";则sizeof(s)、sizeof(*s)、strlen(s)的值依次为(   )。

      A)615        B)415      C)654       D)445        

3.下列语句中正确的是(   )。

A)char*s;*s="abcdefg";

B)char*s;cin>>s;

C)char*s1="abcd",*s2="efghijk";strcpy(s1,s2);

D)char*s="abcdefg";cout<<*s;

4.  C++中,关于构造函数和析构函数,正确的描述是(   )。

A)在定义类时,必须自定义构造函数和析构函数,在创建对象时自动调用构造函数,在释放对象时自动调用析构函数

B)构造函数和析构函数均可以重载

C)已知类Student以及Student*p;在使用p=newStudent;时自动调用无参构造函数创建动态对象,在deleltep;时自动调用析构函数释放动态对象

D)构造函数和析构函数都可以成为虚函数

5.关于拷贝构造函数的描述正确的是(   )。

A)通常的拷贝构造函数的参数是对象的指针类型

B)如果不自定义拷贝构造函数,系统提供默认的拷贝构造函数

C)如果有自定义的构造函数,系统就不再提供拷贝构造函数

D)如果需要用已有对象为新创建的对象初始化时,就必须自定义拷贝构造函数

6.有关静态成员的描述错误的是(   )。

A)某个类的静态数据成员由该类的所有对象所共享

B)类的公有静态数据成员既可以用类的对象访问,也可以直接用作用域运算符“:

:

”通过类名来访问         

C)静态数据成员既可以是私有成员,也可以是公有成员             

D)类中一旦定义了静态数据成员,就必须定义静态成员函数,以便对静态数据成员进行操作

7.一个类的友元函数或友元类能够通过成员访问运算符访问该类的(   )。

A)所有成员   B)私有成员       C)保护成员       D)公有成员

8.下面关于继承方式的描述中错误的是(   )。

A)公有继承时,基类的公有成员和保护成员在派生类中都成为公有成员

B)私有继承时,基类的公有成员和保护成员在派生类中都成为私有成员

C)保护继承时,基类的公有成员和保护成员在派生类中都成为保护成员 

D)无论哪种继承方式,基类中的私有成员在派生类中都无法直接访问

9.类型兼容是指在基类对象可以出现的地方,都可以使用公有派生类的对象,已知:

  classBaseClass

  { //…};

  classDerivedClass:

publicBaseClass

  { //…};

  BaseClassb,*pb;

  DerivedClassd,*pd;

下面不属于类型兼容的是(   )。

A)b=d;

B)BaseClass&bb=d;

C)pd=&b;     

D)pb=&d;

10.在派生类中重新定义虚函数时,除了(   ),其他方面都必须与基类中相应的虚函数保持一致。

A)参数个数        B)参数类型        C)函数名称     D)函数体

11.下列运算符中,必须使用成员函数进行重载的是(   )。

A)==                   B)=                  C)>>                   D)++

12.下列关于运算符重载的描述中,错误的是(   )。

A)运算符重载不可以改变优先级

B)运算符重载不可以改变结合性

C)运算符重载不可以改变运算符的操作数个数

D)加法运算符“+”和赋值运算符“=”都重载之后,意味着“+=”也被重载了

13.有关运算符重载的说法错误的是(   )。

A)在一个类中,可以对一个操作符进行多次重载

B)重载赋值运算符“=”时,为了保持原有特性,重载运算符函数中应该使用返回语句“return*this;”

C)C++中所有的运算符都可以被重载                    

D)如果在某个类中使用成员函数对运算符重载,其左操作数必须是该类的对象

14.已知某个类的友元函数重载了+=和-,a,b,c是该类的对象,则“a+=b-c”被C++编译器解释为(   )。

A)operator+=(a,operator-(b,c))   

B)a.operator+=(b.operator-(c))                 

C)operator+=(a,b.operator-(c))

D)a.operator+=(operator-(b,c))

15.下面4个选项中,专门用于读取单个字符的是(   )。

A)cin.read()    B)cin.get()   C)cin.put()   D)cin.getline()

16.下列关于getline()函数的叙述中,错误的是(   )。

A)getline()函数仅用于从键盘而不能从文件读取字符串

B)getline()函数读取字符串长度是受限制的

C)getline()函数读取字符串时,遇到终止符就停止

D)getline()函数中所使用的终止符默认是换行符,也可指定其他终止符

17.打开文件的方式中,(   )以追加方式打开文件。

A)ios:

:

in       B)ios:

:

out    C)ios:

:

app    D)ios:

:

trunc

18.当使用ofstream流类定义一个流对象并打开一个磁盘文件时,文件的隐含打开方式为(   )。

A)ios:

:

out|ios:

:

binary         

B)ios:

:

in|ios:

:

binary

C)ios:

:

out                       

D)ios:

:

in

19.有关函数模板和模板函数说法错误的是(   )。

A)函数模板只是对函数的描述,编译器不为其产生任何执行代码,所以它不是一个实实在在的函数

B)模板函数是实实在在的函数,它由编译系统在遇到具体函数调用时所生成,并调用执行

C)函数模板需要实例化为模板函数后才能执行

D)当函数模板和一般函数同名时,系统先去匹配函数模板,将其实例化后进行调用

20.一个(   )允许用户为类定义一种模式,使得类中的某些数据成员及某些成员函数的返回值能取任意类型。

A)类模板     B)模板类    C)函数模板     D)模板函数

 

得分

     

   二、判断题(每空1分,共20分)

注意:

请将判断题结果(正确为T,错误为F)

填写到下面表格中!

1

2

3

4

5

6

7

8

9

10

 

 

 

 

 

 

 

 

 

 

11

12

13

14

15

16

17

18

19

20

 

 

 

 

 

 

 

 

 

 

 

 

 

1.类定义中的成员默认的访问权限是private。

2.一个类中的保护成员和公有成员类似,在程序的任何地方都可以被访问。

3.系统提供的缺省构造函数没有参数,所以自定义构造函数必须带有参数。

4.一旦自定义了构造函数,系统便不再提供缺省的构造函数。

5.一个类只能有一个构造函数和一个析构函数。

6.静态数据成员必须在类中进行定义和初始化。

7.静态成员函数中不能访问非静态成员。

8.重载插入运算符“<<”必须采用成员重载。

9.如果类A是类B的友类,那么类A中的所有成员函数都可以访问类B中的所有成员。

10.释放派生类的对象时,首先调用基类的析构函数,然后调用派生类的析构函数。

11.拥有纯虚函数的类称为虚拟基类,它不能用来定义对象。

12.虚函数只有在有继承的情况时才会存在。

13.已知:

classBase1{//…};

         classBase2{//…};

         classDerived:

publicBase1,publicBase2

        {  Derived():

Base2(),Base1(){}

            //…

        };

 创建Derived类的对象时,先调用Base2的构造函数,然后调用Base1的构造函数,最后调用Derived的构造函数。

14.基类的指针或引用调用虚函数时采用后期绑定。

15.由抽象基类继承得到的派生类肯定是具体类。

16.友元函数内能够访问任何对象的任何成员。

17.对二元运算符采用成员函数重载时,只需要一个参数,而且该参数可以是内部类型。

18.对一元运算符采用某个类的友元函数重载时需要一个参数,参数为该类的对象,不能是其他类型。

19.C++的输入/输出流库中,ios类是一个虚基类,istream类、ostream类以及streambuf类都是ios类的派生类。

20.设inf是一个ifstream类的流对象,则inf.seekg(10,ios:

:

beg);表示将文件指针从文件当前位置向后移动10个字节。

 

得分

      

      三、读程序写结果(每空2分,共32分)

        (注意将结果写在下面相应横线上!

⑴                ⑵               ⑶               ⑷                 

⑸               ⑹                ⑺               ⑻                 

⑼               ⑽               ⑾_               ⑿                

⒀               ⒁               ⒂                ⒃                

 1.写出下面程序的运行结果。

#include

classA

{public:

    A()

    { cout<<"A:

:

A()called.\n"; }

    virtual~A()

    { cout<<"A:

:

~A()called.\n"; }                                 

};

classB:

publicA

{ public:

     B(inti)

     { cout<<"B:

:

B()called.\n";

              buffer=newchar[i]; }

     virtual~B()

     { delete[]buffer;

        cout<<"B:

:

~B()called.\n"; }

  private:

     char*buffer; 

};

voidfun(A*a)

{ deletea; }

voidmain()

{ A*b=newB(10);

  fun(b);

}

 

运行结果:

     ⑴    

     ⑵    

     ⑶    

     ⑷    

 

2.写出下面程序的运行结果。

#include

classShape

{

public:

 voidDraw()

 {

        cout<<"Shape"<

 }

 virtualvoidPrint()=0;   

};

classCircle:

publicShape

{

private:

 doubler;

public:

 voidDraw()

 {

        cout<<"Circle"<

 }

 voidSetData(doubleradius)

 {

        r=radius;

 }

 voidPrint()

 {

        cout<<"area:

"<<3.14*r*r<

 }

};

classRectangle:

publicShape

{

private:

 doublea,b;

public:

 voidDraw()

 {

        cout<<"Rectangle"<

 }

 voidSetData(doublex,doubley)

 {

        a=x,b=y;

 }

 voidPrint()

 {

        cout<<"area:

"<

 }

};

voidmain()

{

 Circlec;

 Rectangler;

 Shape*sp1=&c;

 Shape&sp2=r;

 c.SetData(10);

 r.SetData(3,5);

 sp1->Draw();

 c.Print();

 sp2.Draw();   

 r.Print();

}

运行结果:

     ⑸    

     ⑹    

     ⑺    

     ⑻    

 

3.写出下面程序的运行结果(注:

运行结果中首行的空白行不考虑)。

#include

classCArray

{public:

    CArray(inti)

    { Length=i;

       Buffer=newchar[Length+1];  }

    ~CArray()

    { delete[]Buffer; }

    intGetLength()

    { returnLength; }

    char&operator[](inti);

 private:

    intLength;

    char*Buffer;

};

char&CArray:

:

operator[](inti)

{ staticcharch;

  if(i=0)

      returnBuffer[i];

  else

  {  cout<<"\nIndexoutofrange.";

      returnch; }

}

 voidmain()

{ intcnt;

  CArraystring1(6);

  char*string2="Nankai";

  for(cnt=0;cnt<8;cnt++)

     string1[cnt]=string2[cnt];

  cout<

  for(cnt=0;cnt<8;cnt++)

     cout<

  cout<<"\n";

  cout<

}

 

运行结果:

     ⑼    

     ⑽    

     ⑾    

     ⑿    

     ⒀    

     ⒁    

 

4.写出下面程序的运行结果。

#include

voidfun(char*s)

{

 intn=0;

 while(s[n]!

='\0')

        n++;

 chart,*p=s+n-1;

 while(s

 {

        t=*s;

        *s=*p;

        *p=t;

        s++;

        p--;

 }

}

voidmain()

{

 charstr[]="abcdefg";

 fun(str);

 cout<

 fun(str+1);

 cout<

}

运行结果:

     ⒂    

     ⒃    

 

 

得分

      

     四、程序填空(每空2分,共28分)

       (注意将结果写在下面相应横线上!

⑴                           ⑵                         ⑶                        

⑷                      ⑸                         

⑹                      ⑺                         ⑻                        

⑼                      ⑽                          ⑾                        

⑿                      ⒀                         ⒁                        

1.下面的程序是一个类模板,可实现求三个变量的和,请将程序补充完整。

#include

     ⑴            

classff

{   Typea1,a2,a3;

  public:

      ⑵                

       { a1=b1;a2=b2;a3=b3; }

      ⑶                  

    { returna1+a2+a3; }

};

voidmain()

{    ffx(12,13,14),y(16,17,18);

      cout<

}

 

2.下面的程序将一个普通函数作为类的友元函数,求坐标点之和,并且程序输出结果为2,2,4,请将程序补充完整。

#include

classPoint

{   

       intX,Y;

  public:

            ⑷              

    { X=x;Y=y;Countp++; }     

    Point(Point&p)

    { X=p.X;Y=p.Y;Countp++;}

       ~Point()

    {Countp--; }    

           ⑸               

    staticintCountp;

       voiddisplay(){cout<

};

Pointmyfun(Pointp1,Pointp2,Pointp3)

{ Pointtmp(p1.X+p2.X+p3.X,p1.Y+p2.Y+p3.Y);

          ⑹                 

}

      ⑺                 

voidmain()

{  Pointpp0,pp1(1,2),pp2

(1);

   Pointp=myfun(pp0,pp1,pp2);

      p.display();

      cout<<       ⑻        <

}

 

3.下面的程序将一个已有文件的内容复制到另一个文件中。

请将程序补充完整。

#include

#include

#include

voidmain()

{       ⑼                  

  infile.open("d:

\\file1.txt",ios:

:

in);

  if(!

infile)

  { cout<<"file1.txtcan'topen.\n";

       abort();  }

  outfile.open("d:

\\file2.txt",ios:

:

out);

  if(!

outfile)

  { cout<<"file2.txtcan'topen.\n";

       abort();   }

  charstr[80]="\0";

  while(!

infile.eof())

  { infile.read(str,sizeof(str));

            ⑽               

     cout<

  }

  cout<

  infile.close();

         ⑾                  

}

 

4.ARRAY类的定义如下,构造函数把参数n的值赋给s,给v动态分配长度为n的数组空间,然后利用数组参数a初始化v所指向的数组。

请将类定义补充完整。

classARRAY

{   int*v;

    ints;

  public:

    ARRAY(inta[],intn);

    ~ARRAY()

    { delete[]v; }                                 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2