C++考试及答案(试卷一)
2013-11-06 23:04
295 查看
三. 程序阅读题。 尤其重要,要弄懂你的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()
一、 单选题(共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()
相关文章推荐
- 2007年4月计算机等级考试C++考试试卷参考答案及解析
- 2007年9全国计算机等级考试二级笔试试卷C++语言程序设计答案及解析
- 2009年上半年网络工程师考试上午试卷参考答案(一)
- 2009年下半年网工考试上午试卷标准答案与解析(三)
- 2011年上半年网络工程师考试上午试卷与参考答案(2)
- 2008年5月网络工程师考试上午试卷参考答案
- 2008年9月四级网络工程师考试试卷 参考答案
- 新博andorid 初中级考试评测以及答案-------小林老师出的试卷
- 2010年下半年网络管理员考试上午试卷与参考答案(1) 推荐
- 2011年上半年网络工程师考试上午试卷与参考答案(3)
- 2008年9月三级网络技术考试试卷 参考答案2
- 2009年下半年网工考试上午试卷参考答案与解析(三)
- 2009年上半年网络工程师考试上午试卷参考答案(二)
- 2008年4月全国计算机等级考试二级JAVA笔试真题试卷及答案
- 2010年下半年网络管理员考试上午试卷与参考答案(2)
- 2008年9月三级网络技术考试试卷 参考答案1
- 2009年上半年网络工程师考试上午试卷参考答案(三)
- 2004年9月全国计算机等级考试二级笔试试卷参考答案及解析
- 2009年上半年网络工程师考试上午试卷答案与解析(二)
- 2010年下半年网络工程师考试上午试卷与参考答案(1) 推荐