C++复习题.docx

上传人:b****7 文档编号:9834191 上传时间:2023-02-06 格式:DOCX 页数:21 大小:37.59KB
下载 相关 举报
C++复习题.docx_第1页
第1页 / 共21页
C++复习题.docx_第2页
第2页 / 共21页
C++复习题.docx_第3页
第3页 / 共21页
C++复习题.docx_第4页
第4页 / 共21页
C++复习题.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

C++复习题.docx

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

C++复习题.docx

C++复习题

08/09

(2)学期C++程序设计基础复习题

考试题型

填空题

选择题

程序填空

程序阅读

编程题

15分,每空1分

10分,每题1分

30分,每空2分

15分,每题5分

30分,每题10分

一、填空题

1.函数重载的条件是:

___或者_____或者参数顺序不一样。

2.C++标识符只能由字母、_________和___________组成。

3.有数据描述:

inta=7;floatx=2.5,y=4.7;表达式x+a%3*(int)(x+y)%2%4的值为________。

4.若有定义inta=65,b=4,则表达式'a'

5.类的继承方式有:

public、___________和____________三种。

6.在c++语言中,用输出控制字符表示输出一个换行。

7.友元函数的声明须在函数前注明关键词_______________。

8.若由定义inta[10],*p则欲使p指向数组a,可采用__________和___________两种方法。

 

9.增量表达式++y表示成赋值表达式为。

10.定义内联函数的关键字是:

____________。

11.设x=0,y=1则表达式:

x++&&y=++x执行完毕以后,变量x的值为_________。

12.执行“cout<<“x1=”<<8*3;”语句后得到的输出结果为。

13.表达式5>>2的值是__________。

14.在类中常数据成员只能采用_______________的形式进行初始化。

15.面向对象程序设计的三大基本特性是:

____________、继承性和___________。

16.假定a是一个一维数组,则a[i]的指针访问方式为。

17.设a=1,b=2,c=3,表达式:

a||b+c&&b-c的值为___________________________。

18.当在程序中执行到语句时,将结束所在循环类语句或switch语句的执行。

19.假定x和y为整型,其值分别为16和5,则x%y和x/y的值分别为和。

20.在类中定义的静态数据成员其生命周期为_______________。

21.假定一个结构类型的定义为“structC{doublea[5];intn;};”,则该类型的大小为字节。

22.动态内存的分配和释放采用运算符_____________和______________来描述。

23.结构化程序设计的三种基本结构为:

顺序结构、________结构和________结构。

24.

二、选择题

1.对于一个类的构造函数,其函数名与类名(    )。

       A. 完全相同      B. 基本相同      C. 不相同      D. 无关系

2.对于一个类的析构函数,其函数名与类名(    )。

     A. 完全相同      B. 完全不同      C. 只相差一个字符      D. 无关系

  3.类的构造函数是在定义该类的一个(    )时被自动调用执行的。

     A. 成员函数      B. 数据成员      C. 对象      D. 友元函数

  4.类的析构函数是一个对象被(    )时自动调用的。

        A. 建立      B. 撤消      C. 赋值        D. 引用

  5.一个类的构造函数通常被定义为该类的(    )成员。

        A. 公用      B. 保护      C. 私有      D. 友元

  6.一个类的析构函数通常被定义为该类的(    )成员。

        A. 私有      B. 保护      C. 公用      D. 友元

  3.在下面的二维数组定义中,哪一个是正确的?

(  )

      A.inta[5][];     B.inta[](10);

      C.inta[][];      D.inta[][5]={{1,2,3},{4,5}}; 

  4.下面的哪一个函数头格式不正确?

(  )

       A.AA(inta,intb)           B.AA(inta=0,intb)

       C.AA(inta=0,intb=0)       D.AA(inta,intb=0) 

  5.假定要对类AB定义加号操作符重载成员函数,实现两个AB类对象的加法,并返回相加结果,则该成员函数的声明语句为(  )。

        A. ABoperator+(AB&a,AB&b);     B. ABoperator+(AB&a);

        C. operator+(ABa);                D. AB&operator+(); 

  6.当需要使用ostrstream流类定义一个流对象并联系一个字符串时,应在文件开始使用#include命令,使之包含( )文件。

       A.strstrea.h     B.stdlib.h     C.iostream.h   D.fstream.h

7.constint*p说明不能修改( )。

A、p指针B、p指针指向的变量

C、p指针指向的数据类型D、上述A、B、C三者

8.下面的哪一个保留字不能作为函数的返回类型?

()

       A.void     B.int     C.new     D.long

9.假定a为一个数组名,则下面的哪一种表示有错误?

( )

       A.a[i]     B.*++a     C.*a     D.*(a+1)

10.设”inta=12;”,则执行完语句”a+=a*a;”后,a的值是()。

A.12B.144C.156D.288

11.下列函数中,不能重载的函数是()。

A成员函数B非成员函数C构造函数D析构函数

12.设x是一个bool型的逻辑量,y的值为10,则表达式x&&y的值为()。

A.1B.0C.与x值相同D.与x值相反

13.设person是一个类,p1是该类的一个对象,p2是指向p1的指针,getname是该类的一个成员函数,则以下不正确的表达是()。

A、person.getname()B、p1.getname()

C、p1.person:

:

getname()D、p2->getname()

14.下列关于派生类的描述中,错误的是()。

A派生类至少有一个基类

B一个派生类可以作为另一个派生类的基类

C派生类的成员除了自身类的成员外,还包含了其基类的成员

D派生类的成员可以访问其基类中的所有成员

15.如果是类B在类A的基础上构造,那么,就称(   )。

       A. 类A为基类或父类,类B为超类或子类

       B. 类A为基类、父类或超类,类B为派生类或子类 

       C. 类A为派生类,类B为基类

       D. 类A为派生类或子类,类B为基类、父类或超类

    16. C++的继承性允许派生类继承基类的(   )。

       A. 部分特性,并允许增加新的特性或重定义基类的特性

       B. 部分特性,但不允许增加新的特性或重定义基类的特性 

       C. 所有特性,并允许增加新的特性或重定义基类的特性

       D. 所有特性,但不允许增加新的特性或重定义基类的特性

    17. 派生类的成员函数可以直接访问基类的(   )成员。

       A. 所有         B. 公有和保护         C. 保护和私有         D. 私有

    18. 对于公有继承,基类的公有和保护成员在派生类中将(   )成员。

       A. 全部变成公有                  B. 全部变成保护 

       C. 全部变成私有                  D. 仍然相应保持为公有和保护

   19. 对于公有继承,基类中的私有成员在派生类中将 (   )。

       A. 能够直接使用成员名访问        B. 能够通过成员运算符访问

       C. 仍然是基类的私有成员          D. 变为派生类的私有成员

    20. 当保护继承时,基类的(    )在派生类中成为保护成员,在类作用域外不能够通过派生类的对象来直接访问该成员。

       A. 任何成员                      B.公有成员和保护成员 

       C. 保护成员和私有成员            D.私有成员

    21. 在定义一个派生类时,若不使用保留字显式地规定采用何种继承方式,则默认为(   )方式。

       A. 私有继承                      B. 非私有继承

       C. 保护继承                      D. 公有继承

    22. 建立包含有类对象成员的派生类对象时,自动调用构造函数的执行顺序依次为(    )的构造函数。

       A. 自己所属类、对象成员所属类、基类

       B. 对象成员所属类、基类、自己所属类

       C. 基类、对象成员所属类、自己所属类

       D. 基类、自己所属类、对象成员所属类

    23. 当派生类中有和基类一样名字的成员时,一般来说,(  )。

       A. 将产生二义性              B. 派生类的同名成员将覆盖基类的成员

       C. 是不能允许的              D. 基类的同名成员将覆盖派生类的成员

    24. C++中的虚基类机制可以保证:

(  )。

       A. 限定基类只通过一条路径派生出派生类

       B. 允许基类通过多条路径派生出派生类,派生类也就能多次继承该基类

       C. 当一个类多次间接从基类派生以后,派生类对象能保留多份间接基类的成员

       D. 当一个类多次间接从基类派生以后,其基类只被一次继承

    25. 下列对派生类的描述中错误的说法是:

(    )。

       A. 派生类至少有一个基类

       B. 派生类可作为另一个派生类的基类

       C. 派生类除了包含它直接定义的成员外,还包含其基类的成员

       D. 派生类所继承的基类成员的访问权限保持不变

    26. 派生类的对象对其基类中(    )可直接访问。

       A. 公有继承的公有成员

       B. 公有继承的私有成员

       C. 公有继承的保护成员

D. 私有继承的公有成员

27.设置虚基类的目的是( )。

A、简化程序B、消除二义性

C、提高运行效率D、减少目标代码

28.声明:

virtual函数类型函数名(参数表)=0;是声明了一个________。

A.虚函数B.纯虚函数C.虚基类D.友元函数

29.有关多态的概念下面说法错误的是_________。

A.函数的重载是C++中多态性的一种体现,其中操作对象的确定是通过动态关联来实现的

B.运算符重载实质上还是函数的重载,也是多态的体现

C.通过虚函数来实现多态时,操作对象的确定是通过动态关联来完成的。

D.借助类模板来实现多态时,操作对象的确定是通过静态关联来完成的。

30.下列运算符中,不能重载的运算符是()。

A、:

:

B、[]C、&&   D、>>

三、程序阅读

1、分析下列程序的运行结果

#include

usingnamespacestd;

voidswap(int*pa,int*pb)

{

inttemp;

temp=*pa;*pa=*pb;*pb=temp;

}

voidmain()

{

inta,b,*p1=&a,*p2=&b;

cin>>a>>b;

if(a

cout<<"A="<

}

当输入35<回车>

输出结果是:

2、分析下列程序的运行结果

#include

      voidLF(int&x,inty)

{

          x=x+y;

          y=x+y;

          cout<

      } 

      voidmain()

{

          intx=5,y=8;

          cout<

          LF(x,y);

          cout<

      }

3、写出程序的运行结果:

#include

usingnamespacestd;

voidmain()

{

inti,j=4,n=0;

for(i=j;i<4*j;i++)

{

switch(i/j)

{

case0:

case1:

cout<<’*’;break;

case2:

cout<<’#’;

}

n++;

if(n%j==0)cout<

}

}

4、阅读程序,写出运行时输出的结果。

#include

classA

{public:

A(inth,intw):

he(h),we(w){}

~A()

{cout<

private:

inthe,we;

};

classB:

publicA

{public:

B(inth,intw,inth1,intw1,intl):

A(h,w),obj1(h1,w1){len=l;}

~B(){cout<

private:

Aobj1;

intlen;

};

voidmain()

{Bobj(1,2,3,4,5);

}

5、写出程序运行结果:

#include

voidinv(intx[],intn)

{intt,i,j,m=(n-1)/2;

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

{j=n-1-i;

t=x[i];x[i]=x[j];x[j]=t;}

}

voidmain()

{inti,a[10]={3,7,9,11,0,6,7,5,4,2};

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

cout<

cout<

inv(a,10);

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

cout<

cout<

inv(a+2,6);

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

cout<

cout<

}

6、写出程序运行结果:

#include

classadd

{virtualvoidsm()=0;

virtualvoiddisp(){}

};

classadd1:

publicadd

{private:

intm1,n1;

public:

add1(inta,intb)

{m1=a,n1=b;}

virtualvoidsm()

{m1+=n1;n1--;}

virtualvoiddisp()

{cout<<"m1="<

};

classadd2:

publicadd

{private:

intm2,n2;

public:

add2(inta,intb)

{m2=a,n2=b;}

virtualvoidsm()

{m2-=n2;n2++;n2+=5;}

virtualvoiddisp()

{cout<<"m2="<

};

voidmain()

{add1a(4,6);a.sm();a.disp();

add2b(20,12);b.sm();b.disp();

}

7、分析下列程序回答问题。

#include

classA

{

public:

voidf1();

protected:

intj1;

private:

inti1;

};

classB:

publicA

{

public:

voidf2();

protected:

intj2;

private:

inti2;

};

classC:

publicB

{

public:

voidf3();

};

(1)派生类B中成员函数f2()能否访问基类A中的成员:

f1()、j1和i1?

(2)派生类B的对象b1能否访问基类A中的成员:

f1()、j1和i1?

(3)派生类C中的成员函数f3()能否访问直接基类B中的成员:

f2()、j2和i2?

能否访问间接基类A中的成员:

f1()、j1和i1?

(4)派生类C的对象c1能否访问直接基类B中的成员:

f2()、j2和i2?

能否访问间接基类A中的成员:

f1()、j1和i1?

四、程序填空

1、选择法排序

include

voidmain()

{inta[N];

inti,j,t;

for(i=0;i

cin>>a[i];

for(i=0;i

{;

for(j=i+1;j

if(a[min]>a[j])

;

t=a[i];;a[min]=t;

}

for(i=0;i

cout<

cout<<‘\n’;

}

2、起泡法排序:

#include"iostream.h"

#defineN10

voidchange(_______________)

{

intt;

t=m;m=n;n=t;

}

voidarrange(_______________)

{

inti,j;

for(j=1;j

for(i=0;i

if(*(p+i)>*(p+i+1))

_______________;

}

voidmain()

{

inta[N],i;

for(i=0;i

cin>>a[i];

_______________;

for(i=0;i

cout<

}

3、求两个整数的最大公约数

#include"iostream.h"

voidmain()

{intm,n,t,x;

cin>>m>>n;

_______________;

for(x=t;x>=1;x--)

if(m%x==0&&n%x==0)_______________;

cout<

}

4、对10个数用起泡法排序排序。

#include"iostream.h"

___________________

voidchange(_______________)

{

intt;

t=*m;*m=*n;*n=t;

}

voidarrange(int*p)

{

inti,j;

for(j=1;j

for(i=0;i

if(*(p+i)>*(p+i+1))

_______________;

}

voidmain()

{

inta[N],i;

for(i=0;i

cin>>a[i];

arrange(a);

for(i=0;i

cout<

}

3、求出圆柱的体积:

#include"iostream.h"

classcircular

{

public:

circular(floatr)

{R=r;}

floatget_area()

{

area=3.141592657*R*R;

returnarea;

}

protected:

floatR;

private:

floatarea;

};

classcolumn:

publiccircular

{

public:

column(floatr,floath):

______________

{H=h;}

voidget_volume(______________)

{volume=c1.get_area()*H;}

~column()

{cout<<"圆柱的体积为:

"<

protected:

floatH;

private:

floatvolume;

};

voidmain()

{

circularcir1(3);

columncolumn1(2,2);

column1.get_volume(______________);

}

4、把字符串a复制给字符串b

#include

usingnamespacestd;

_____________________

voidmain()

{

chara[]="Helloworld";

charb[N];

inti;

for(i=0;____________;i++)

b[i]=a[i];

______________________;

cout<<"a:

"<

"<

cout<

}

5、求最高分且指出学号

#include"iostream.h"

classstudent

{

public:

intscore;

_______________;

voidput_number();

private:

charm_

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

当前位置:首页 > 总结汇报 > 学习总结

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

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