学年第一学期C++期末复习题网上的.docx

上传人:b****8 文档编号:11251235 上传时间:2023-02-26 格式:DOCX 页数:19 大小:28.52KB
下载 相关 举报
学年第一学期C++期末复习题网上的.docx_第1页
第1页 / 共19页
学年第一学期C++期末复习题网上的.docx_第2页
第2页 / 共19页
学年第一学期C++期末复习题网上的.docx_第3页
第3页 / 共19页
学年第一学期C++期末复习题网上的.docx_第4页
第4页 / 共19页
学年第一学期C++期末复习题网上的.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

学年第一学期C++期末复习题网上的.docx

《学年第一学期C++期末复习题网上的.docx》由会员分享,可在线阅读,更多相关《学年第一学期C++期末复习题网上的.docx(19页珍藏版)》请在冰豆网上搜索。

学年第一学期C++期末复习题网上的.docx

学年第一学期C++期末复习题网上的

2009-2010学年第一学期C++期末复习题网上的

1.下列语句中错误的是(D)

A.int*p=newint(10);  B.int*p=newint[10];  C. int*p=newint;  D.int*p=newint[40](0)

2.假设已经有定义char*constname=”chen”;下面的语句中正确的是(A)

A.name[3]=’q’;       B.name=”lin”;         C.name=newchar[5]  D.name=newchar(‘q’);

3.下面的类型声明中正确的是(D)

A.int&a[4]          B.int&*p;            C.int&&q;         D.intI,*p=&I;

4.在声明类时,下面的说法正确的是(C)

A.可以在类的声明中给数据成员赋值            B.数据成员的数据类型可以是register

C.private、public、protected可以按任意顺序出现 D.没有用private、public、protected定义的数据成员是公有成员

5.构造函数是在(B)时被执行的。

A.程序编译          B.创建对象           C.创建类          D.程序装入内存

6.在下面有关友元函数的描述中,正确的说法是(A)

A.友元函数是独立于当前类的外部函数         B.一个友元函数不能同时定义为两个类的有友元函数

C.友元函数必须在类的外部定义                D.在外部定义友元函数时,必须加关键字friend

7.使用派生类的主要作用是(A)

A.提高代码的可重用性 B.提高程序的运行效率  C.加强类的封装性   D.实现数据的隐藏

8.关于虚函数,正确的描述是(A)

A.构造函数不能是虚函数B.析构函数不能是虚函数C.虚函数可以是友元函数D.虚函数可以是静态成员函数

9.如果在基类中将成员函数show声明为不带返回值得纯虚函数,正确的写法是(C)

A.virtualshow()=0;    B.virtualvoidshow()   C.virtualvoidshow()=0; D.voidshow()=0virtual;

10.使用myFile.open(“sales.dat”,ios:

:

app)语句打开文件sales.dat后,则(A)

A.该文件只能用于输出 B.该文件只能用于输入 C.该文件既能用于输出,又能用于输入 D.若该文件存在,则清除该文件的内容

二、分析下列程序中的错误,并说明原因(前2题每题6分,第三题8分,共20分)

 

1.#include"iostream.h"

classstudent

{

 charname[10];

 intage;

 floataver;

 voidprintStu(){}

};

voidmain()

{

studentp1,p2,p3;

 p1.age=16;

//…

}

2.#include"iostream.h"

classstack

{

public:

 stack(intsz);

private:

 char*p;

 intsize;

};

stack:

:

stack(intsz)

{

 p=newchar[size=sz];

}

voidmain()

{

 stackstt;

 //...

}

 3.#include"iostream.h"

classCTest

{

public:

constinty2;

CTest(inti1,inti2):

y1(i1),y2(i2)

{

y1=10;

x=y1;

}

intreadme()const;

//...

private:

 intx;

 constinty1;

};

intCTest:

:

readme()const

{

 inti;

 i=x;

 x++;

 returnx;

}

voidmain()

{

 CTestc(2,8);

 inti=c.y2;

 i=c.y1;

}

 三、写出下列程序的运行结果(前2题每题6分,第三题8分,共20分)

 1.#include"iostream.h"

classtoy 

{

public:

 toy(intq,intp)

 {quan=q;price=p;}

 intget_quan()

 {returnquan;}

 intget_price()

 {returnprice;}

private:

 intquan,price;

};

intmain()

{

 toyop[2][2]={toy(10,20),toy(30,48),toy(50,68),toy(70,80)};

 inti;

 for(i=0;i<2;i++)

 {

 cout<

 cout<

      cout<

 cout<

 }

 cout<<"\n";

 return0;

}

 

2.#include"iostream.h"

classStock

{

public:

 voidprint()

 {cout<<"Stockclass.\n";}

};

classDer1_Stock:

publicStock

{

public:

 voidprint()

 {cout<<"Deri1_Stockclass.\n";}

};

classDer2_Stock:

publicStock

{

public:

 voidprint()

 {cout<<"Deri2_Stockclass.\n";}

};

voidmain()

{

 Stocks1;

 Stock*ptr;

 Der1_Stockd1;

 Der2_Stockd2;

 ptr=&s1;

 ptr->print();

 ptr=&d1;

 ptr->print();

 ptr=&d2;

 ptr->print();

}

3.#include"iostream.h"

classA

{

public:

 A(inti):

xi(i){}

 A(){xi=0;}

 friendAoperator++(Aa);

 friendAoperator--(A&a);

 voidprint();

private:

 intxi;

};

Aoperator++(Aa)

{

 ++a.xi;

 returna;

}

Aoperator--(A&a)

{

  --a.xi;

 returna;

}

voidA:

:

print()

{cout<

voidmain()

{

 Ai(7);

 ++i;

 i.print();

 --i;

 i.print();

}

 二 1.答案:

p1.age=16;有错(3分),因为age是私有数据成员,不能直接访问(3分)

2.答案:

stackstt;有错,(3分)类中没有定义无参构造函数(3分)

 3.答案:

错误1:

y1=10;有错(2分),y1是常成员,不能修改(1分)

错误2:

x++;有错(2分),readme函数是常成员函数,不能修改对象的数据成员(1分)

错误3:

i=c.y1;有错(1分),y1是私有变量,不能直接存取(1分)

三 1.答案:

10,20;30,48;50,6870,80

2.答案:

Stockclass.

    Stockclass.

    Stockclass.

3.答案:

7

    6

B卷

一、选择题(每题2分,共20分,答案填写在题后的表格内)

1.假设已经有定义constchar*constname=”chen”;下面的语句中正确的是(D)

A.name[3]=’a’;      B.name=”lin”;       C.name=newchar[5]        D.cout<

2.假设已经有定义const char*name=”chen”;下面的语句中错误的是(A)

A.name[3]=’q’;      B.name=”lin”;       C.name=newchar[5]        D.name=newchar(‘q’);

3.在下面有关对构造函数的描述中,正确的是(B)

A.构造函数可以带有返回值 B.构造函数的名字与类名完全相同 C.构造函数必须带有参数 D.构造函数必须定义,不能缺省

4.在下面有关析构函数特征的描述中,正确的是(C)                                      

 A.一个类可以定义多个析构函数B.析构函数名与类名完全相同C.析构函数不能指定返回类型 D.析构函数可以有一个或多个参数

5.在下面有关静态成员函数的描述中,正确的是(B)

A.在静态成员函数中可以使用this指针              B.在建立对象前,就可以为静态数据成员赋值

C.静态成员函数在类外定义时,要用static前缀       D.静态成员函数只能在类外定义

6.友元的作用之一是(A)

A.提高程序的运行效率 B.加强类的封装性   C.实现数据的隐藏性      D.增加成员函数的种类

7.假设已经定义好了一个类student,现在要定义类derived,它是从student私有派生的,定义类derived的正确写法是(C)

A.classderived:

:

studentprivate            B.classderived:

studentpublic

C.classderived:

privatestudent{//… }    D.classderived:

:

publicstudent{//… }

8.要实现动态联编,派生类中的虚函数(D)

A.返回的类型可以与虚函数的原型不同B.参数个数可以与虚函数的原型不同C.参数类型可以与虚函数的原型不同D.以上都不对

9.有关运算符重载正确的描述是(D)

A.C++语言允许在重载运算符时改变运算符的操作个数  B.C++语言允许在重载运算符时改变运算符的优先级

 C.C++语言允许在重载运算符时改变运算符的结合性   D.C++语言允许在重载运算符时改变运算符的原来的功能

10.假设定义了函数模板:

template

Tmax(Tx,Ty)

{return(x>y)?

x:

y;}

并定义了inti=6;charc=’a’;错误的调用语句是(D)

A.max(i,i)        B.max(c,c)          C.max((int)c,i)          D.max(i,c)

二、分析下列程序中的错误,并说明原因(前2题每题6分,第三题8分,共20分)

1.#include"iostream.h"

 classpoint

{public:

 intx,y;

 private:

 point(){x=1;y=2;}};

voidmain()

{pointcpoint;

cpoint.x=2;}

2.#include"iostream.h"

template

classStack

{public:

 Stack(intsz)

 {v=p=newT[size=sz];}

 ~Stack()

 {delete[]v;}

 voidpush(Tx)

 {*p++=x;}

 Tpop()

 {return*--p;}

 intlenth()const

 {return(p-v);}

 private:

 T*v,*p;

 intsize;};

voidmain()

{Stack obj(5);

 obj.push(10);}

3.#include"iostream.h"

classstudent

{intsno;

 intage;

voidprintStu();

voidsetSno(intd);};

voidprintStu()

{cout<<”\nStudentNo.is“<

voidsetSno(intd)

{sno=d;}

voidsetAge(inta)

{age=a;}

voidmain()

{studentlin;

lin.setSno(20021);

lin.setAge(20);

lin.printStu();}

三、写出下列程序的运行结果(前2题每题6分,第三题8分,共20分)

1.#include"iostream.h"

classb1

{public:

 b1(intii)

 {i=ii;}

 voiddisplay()

 {cout<

protected:

 inti;};

classb2

{public:

 b2(intjj)

 {j=jj;}

 voiddisplay()

 {cout<

protected:

 intj;};

classb3:

publicb1,publicb2

{public:

 b3(intii,intjj,intkk):

b1(ii),b2(jj)

 {k=kk;}

 voidsetall(intii,intjj,intkk)

 {i=ii;j=jj;k=kk;}

 voiddisplay()

 {cout<

 cout<

 cout<

private:

 intk;};

voidmain()

{b1o1(40);

 o1.display();

 b2o2(50);

 o2.display();

 b3o3(10,20,30);

 o3.display();

 o3.setall(50,60,70);

 o3.display();}

2.#include"iostream.h"

classStock

{public:

 virtualvoidprint()

 {cout<<"Stockclass.\n";}};

classDer1_Stock:

publicStock

{public:

 voidprint()

 {cout<<"Deri1_Stockclass.\n";}};

classDer2_Stock:

publicStock

{public:

 voidprint()

 {cout<<"Deri2_Stockclass.\n";}};

voidmain()

{Stocks1;

 Stock*ptr;

 Der1_Stockd1;

 Der2_Stockd2;

 ptr=&s1;

 ptr->print();

 ptr=&d1;

 ptr->print();

 ptr=&d2;

 ptr->print();}

3.#include

constintsize=10;

template     //声明一个类模板

classstack

{public:

   voidinit(){tos=0;}

   voidpush(Typech);  //参数取Type类型

   Typepop();          //返回类型取Type类型

 private:

    Typestck[size]; //数组的类型为类型参数Type,即可取任意类型                  

    inttos;};

template

voidstack:

:

push(Typeob)

{if(tos==size){cout<<"stackisfull";return;}

   stck[tos]=ob;tos++;}

template

Typestack:

:

pop()

 {if(tos==0)

   {cout<<"stackisempty";

       return0;}

   tos--;

   returnstck[tos];}

intmain()

{   //定义字符堆栈

 stacks1,s2;  //创建两个模板参数为char型的对象

                               

 inti;

 s1.init(); s2.init();

 s1.push('a');s2.push('x');

 s1.push('b');s2.push('y');

 s1.push('c');s2.push('z');

 for(i=0;i<3;i++)cout<<"pops1:

"<

 for(i=0;i<3;i++)cout<<"pops2:

"<

 return0;}

二、分析下列程序中的错误,并说明原因(前2题每题6分,第三题8分,共20分)

1.答案:

pointcpoint;是错误的(3分),因为构造函数是私有成员(3分)

2.答案:

Stack obj(5);有错(3分),因为Stack是类模板,应将模板实例化,才可定义对象(3分)

3.答案:

错误1:

printStu、setSno两个成员函数不是公有成员,不允许在类外访问(4分)

    错误2:

成员函数在类外定义,应加上类名“student:

”(2分)

    错误3:

setAge函数应在类中说明(2分)

三、写出下列程序的运行结果(前2题每题6分,第三题8分,共20分)

1.答案:

40 50 10 20 30 506070

2.答案:

Stockclass.

    Deri1_Stockclass.

    Deri2_Stockclass.

3.答案:

pops1:

c

    pops1:

b

    pops1:

a

    pops2:

z

    pops2:

y

    pops2:

x

A 卷 

一、单项选择题:

(每小题2分,共20分)

1、假设已经有定义constchar*name=”chen”;下列语句中错误的是_____________

A.name[3]=’q’     B.name=”lin”     C.name=newchar[5]      D.name=newchar(‘q’)

2、在下列关键字中,用于说明类中公有成员的是____________

A.public          B.private         C.protected        D.friend

3、下列哪项不是面向对象程序设计的主要特征_______________。

A.封装          B.继承           D.多态          D.结构

4、构造函数是在__________时被执行的。

A.程序编译     B.创建对象    C.创建类     D.程序装入内存

5、在下面有关析构函数的描述中,正确的是____________

A.一个类中可以定义多个析构函数

B.析构函数的名字和类名完全相同

C.析构函数不能指定返回类型

D.析构函数可以有一个或多个参数

6、使用派生类的主要原因是_______________

A.提高代码的可充用性  B.提高程序的运行效率  C.加强类的封装性 D.实现数据的隐藏

7、下列的各函数中,___________不是类的成员函数.

A.构造函数        B.析构函数        C.友元函数        D.拷贝构造函数

8、关于虚函数,正确的描述是_______________

A.构造函数不能是虚函数          B.析构函数不能是虚函数

C.虚函数可以是友元函数          D.虚函数可以是静态成员函数

9、友元的作用之一是____________

A.提高程序的运用效率             B.加强类的封装性

C.实现数据的隐藏性               D.增加成员函数的种类

10、在下面有关静态成员函数的描述中,正确的是________________

A.在静态成员函数中可以使用this指针

B.在建立对象前,就可以为静态数据成员赋值

C.静态成员函数在类外定义时,要用static前缀

D.静态成员函数只能在类外定义

得 分

评卷人

 二、判断题:

(每题1分,共10分)

(      )1、使用关键字class定义的类中缺省的访问权限是私有(private)的。

(      )2、构造函数和析构函数都不能重载。

(      )3、说明或定义对象时,类名前不需加关键字class。

(       )4、可以在类的构造函数中对静态数据成员进行初始化。

(       )5、protected和private区别在于protected成员可以被派生类访问,而private成员则不能被派生类访问。

(       )6、在C++中,封装是通过类实现的。

(       )7、无论何时编译器都为类构造一个无参数的缺省的构造函数。

(       )8、无论什么方式的继承,基类的私有成员都不能被派生

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

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1