C++考试及答案(试卷一)

三.  程序阅读题。     尤其重要,要弄懂你的c++就很不错了,尤其第5题。不会的话,有一篇博客有专讲。


一、  单选题(共20分)

1. 关于对象概念的描述中,(   )是错误的。

A) 对象就是C语言中的结构体   B) 对象是状态和操作的封装体

C) 对象之间的信息传递是通过消息进行的   D) 对象是某个类的一个实例

 

2. 已知,int m=10,在下列表示引用的方法中正确的是(    )   

A)int &x=m   B)int &y=10   C)int &z   D)float &t=&m

 

3. 假设MyClass是一个类,则该类的拷贝构造函数的声明语句为(    ) 

A)  MyClass(MyClass p);   B )  MyClass& (MyClass p);

C)      MyClass(MyClass& p);  D)  MyClass(MyClass * p);

 

4. 已知类A是类B的友元,类B是类C的友元,则(   ) 

A)  类A一定是类C的友元       B)  类C一定是类A的友元

C)     类C的成员函数可以访问类B的对象的任何成员

D)     类A的成员函数可以访问类B的对象的任何成员

 

5. 下列对继承关系的描述中,正确的是(  )   

A)在公有继承中,基类中的公有成员和私有成员在派生类中都是可见的

B)在公有继承中,基类中只有公有成员对派生类的对象是可见的

C)在私有继承中,基类中只有公有成员对派生类对象是可见的

D)在私有继承中,基类中的保护成员对派生类的对象是可见的

 

6.模板类型参数包含关键字(  ) 

A)  class    B)  typename   C)  class或typename   D) class与typename

 

7. 已知:print ( ) 函数是一个类的常成员函数,它无返回值,下列表示中,

(  )是正确的 

A) void print ( ) const ;   B) const void print ( );

C) void const print ( );    D)void print (const);

 

8. 考虑函数原型void test(int a,int  b=7,char="*"),下面的函数调用中,属于不合法调用的是( )  

A)test(5);  B)test(5,8);  C)test(6,"#");  D)test(0,0,"*");  

 

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

A)virtual show( )=0;       B)virtual void show( );

C)virtual void show( )=0;   D)void show( )=0 virtual;

 

10. 当用户进行鼠标操作时,释放鼠标左键会发出(  )消息。

A)WM_lBUTTONDOWN    B)WM_lBUTTONUP 

C)WM_lBUTTONBLOCK   D)WM_RBUTTONUP

 

11.应在下列程序划线处填入的正确语句是(  )  

  #include   
  class Base   
  {  public:   
          void fun(){cout<<"Base::fun"<<ENDL;}   
  };   
  class Derived:public Base   
  {  void fun()   
    {_____________ //显示调用基类的函数fun()   
    cout<<"Derived::fun"<<ENDL;   
    }   
  };   
 

A. fun(); B. Base.fun(); C. Base::fun(); D. Base->fun();  

 

12. 在下列叙述中,不是Windows程序的特点是(  )

A. Windows程序通过窗口与用户进行交互。

B. Windows程序是应用事件驱动进行编程。

C. Windows程序是利用消息进行通信。

D. Windows程序是利用过程驱动的程序。

 

13. 下列不是Windows绘图对象类的是(    )                                                             

A. CBrush   B. CPen   C. CRect   D. CFont

 

14. 在下列MFC中,不是控件类是(    )

A. CListCtl  B. CComboBox  C. CTreeCtl  D. CMenu

 

15. 当单文档应用框架接收到框架窗口的命令时,它将按如下次序来寻找相应的消息控制函数(  )

A.视、文档、SDI主框架、应用 App

B.文档、应用 App、视、SDI主框架

C.视、文档、应用 App、SDI主框架

D.SDI主框架、文档、视、应用 App

 

16. 关于动态绑定(联编)的下述描述中(    )是错误的。

A.动态绑定(联编)是在编绎时不确定操作数的。

B.动态绑定(联编)是以虚函数为基础的。

C.动态绑定(联编)是在继承前提下的一种多态性。

D.动态绑定(联编)是要类的继承是公有的。

 

17. C++中,下面设置的默认参数正确的是(    )  

A. void  fun(int x=0,int y,int z)   B. short  fun(int x=0,int y=0,int z)

C. float  fun(int x=0,int y,int z=0)  D. double fun(int x,int y=0,int z=0)

 

18. 下面有关构造函数的描述正确的是(    )  

A.构造函数只能有一个    B.构造函数不能带参数

C.构造函数不能重载      D.构造函数不能是虚函数    

 

19. 有关重载的描述正确的是(   )

A.运算符(操作符) + new . ?:都可以重载    B.运算符(操作符)重载不改变操作数的个数

C.运算符(操作符)重载可以改变优先级数   D.运算符(操作符)重载可以改变语法结构

 

20. 在下列叙述中,叙述错误的是(  )

A.Windows应用程序与控制台(Console)程序的入口函数不同。

B.在基于MFC编写的程序中,其类大部分都是由CObject类派生出来

C.WM_LBUTTONDOWN、WM_RBUTTONUP、WM_KEYDOWN都是鼠标消息

D.对话框、图标、菜单、光标等在VC中都可以是作为资源来处理

 

 二.  填空题(共20分)

1. 描述命题"A小于B或小于C"的表达式为   

2. 当一个成员函数被调用时,该成员函数的          指向调用它的对象。

3. 举出C++中两种用户自定义的数据类型:  、            

4. 动态联编要满足两个条件,它们是      被调用的成员函数是虚函数 、 用指针或引用调用虚函数  

5. 在C++类中,有一种不能定义对象的类,这样的类只能被继承,称之为           ,定义该类至少具有一个           。

6.Windows应用程序的入口函数是___     ___。

7.MFC英文名称的全称是(中文)___

三.  程序阅读题(共25分)

 

1. 阅读下面程序,写出运行结果           

#include <iostream.h>

class Test

{private:

       int i;

       static int k;

public:

       Test();

       void Display();

};

int Test::k=0;

Test::Test()

{

       i=0;

       k++;

}

void Test::Display()

{     cout<<"i="<<i<<",k="<<k<<endl;  }

void main()

{

       Test a,b;

       a.Display();

       b.Display();

}

2. 阅读下面程序,写出运行结果              

#include <iostream.h>

class B { 

int y;

public:

         friend class  A;

};

class A{

int x;

 public: 

A(int a, B &r, int b)  {x=a; r.y=b;}

         void Display( B & );

};

void A::Display(B &r)

{cout<<x<<" "<<r.y<<endl;}

void main( )

{   B Obj2;

    A Obj1(33,Obj2,88);

    Obj1.Display(Obj2);

}

 

3.阅读下面程序,写出运行结果        

 

#include <iostream.h>

class base

{ public:

      virtual void f1()

           { cout<<“f1 function of base! \n”; }

      virtual void f2()

           { cout<<“f2 function of base! \n”; }

      virtual void f3()

           { cout<<“f3 function of base! \n”; }

      void f4()

           { cout<<“f4 function of base! \n”; }

};

 

class derive: public base

{ public:

void f1()

         { cout<<“f1 function of derive! \n”; }

void f2(int x)

           { cout<<“f2 function of derive! \n”; }

    void f4()

           { cout<<“f4 function of derive! \n”; }

};

 

main()

{

    base obj1,*ptr;

derive obj2;

ptr = &obj1;

    ptr->f1();

    ptr->f2();

    ptr->f3();

    ptr = &obj2;

ptr->f1();

ptr->f2();

    ptr->f4();

    return 1;

}

 

 4.阅读下面程序,写出运行结果 

#include <iostream.h>

class A

{

public:

  A( ){cout << “A Constructor” << endl;}

  virtual ~A( ){cout << “A Destructor” << endl;}

  virtual void f( ){cout << “A::f( )” << endl;}

  void g( ){ f( ); }

};

class B:public A

{

public:

  B( ){f();cout << “B Constructor” << endl;}

~B( ){cout << “B Destructor” << endl;}

};

class C:public B

{

public:

  C( ){f( ); cout << “C Constructor” << endl;}

~C( ){cout << “C Destructor” << endl;}

void f( ){cout << “C::f( )” << endl;}

};

void main()

A *p=new C;

  p->g( );

  delete p;

}

 

5.阅读下面程序,写出运行结果:  

 .

#include <iostream.h>

class CSample{

       char ch1,ch2;

public:

       friend void set(CSample &s,char c1,char c2);

       CSample(char a, char b){

              ch1=a;  ch2=b;

              cout<<"CSample Constructor"<<endl;  }

       CSample(const CSample & rhs){

              ch1=rhs.ch1;

              ch2=rhs.ch2;

              cout<<"CSample Copy-constructor"<<endl; };

       CSample & operator=(const CSample& rhs){

              ch1=rhs.ch1;

              ch2=rhs.ch2;

              cout<<"CSample Operator ="<<endl;

              return *this;    }    

       ~ CSample()   {

              cout << "ch1=" << ch1 << ",ch2=" << ch2<< endl;}

};

void set(CSample &s,char c1,char c2)

{   s.ch1=c1;    s.ch2=c2;}

CSample fun(CSample obj)

{    set(obj,'7','9');    return obj;}

void main()

       CSample obj1('7','8');

       CSample obj2=obj1;     

       obj2=fun(obj1);

}

 四、  名词解释(共15分)

1.多态性  2. 深拷贝  3. 友元  4. GDI  5. 句柄

 

 五.综合题(共20分)

1.解释下列代码,说明其完成的功能是什么?

 点击鼠标左键,绘画画一个矩形,矩形大小为边长为40的正方形,填充色为红色,边看绿色。

void CTest2View::OnLButtonDown(UINT nFlags, CPoint point)

{   

CClientDC dc(this);

       CPen pen(PS_SOLID,2,RGB(0,255,0));

       CBrush brush(RGB(244,0,0));

       dc.SelectObject(&pen);

       dc.SelectObject(&brush);

       dc.Rectangle(point.x-20,point.y-20,point.x+20,point.y+20);

CView::OnLButtonDown(nFlags, point);

}

 

2.下面是应用AppWizard生成的单文档程序One中的视图类的实现文件OneView.cpp中的OnDraw函数,试填写划线空白处。,

 

void COneView::OnDraw(__CDC*______  pDC)

{

       COneDoc* pDoc = _GetDocument()____________________;

       ASSERT_VALID(pDoc);

       // TODO: add draw code for native data here

 

 

一.选择题

AACDB  AACCB  CDCDA  ADDBC

 

二.填空题

1.A<B||A<C

2.this指针

3.类 、 枚举

4.被调用的成员函数是虚函数 、 用指针或引用调用虚函数

5.抽象类,纯虚函数

6.WinMain()

7.微软基础类

 

三.程序阅读

1. i=0,k=2

i=0,k=2

2.33 88

3.f1 function of base!

f2 function of base!

f3 function of base!

f1 function of derive!

f2 function of base!

f4 function of base!

4.

A Constructor

A::f()

B Constructor

C::f()

C Constructor

C::f()

C Destructor

B Destructor

A Destructor

5.

CSample Constructor

CSample Copy-constructor

CSample Copy-constructor

CSample Copy-constructor

ch1=7,ch2=9

CSample Operator =

ch1=7,ch2=9

ch1=7,ch2=9

ch1=7,ch2=8

 

四.名词解释

参见课本相关章节

 

五.

1. 在客户区点击鼠标左键后,如下(正方形边长40)

 

2. CDC*,GetDocument()

 

  • 16
    点赞
  • 123
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值