春季学期《C++程序设计》作业题目与答案.docx

上传人:b****7 文档编号:26226405 上传时间:2023-06-17 格式:DOCX 页数:18 大小:21.88KB
下载 相关 举报
春季学期《C++程序设计》作业题目与答案.docx_第1页
第1页 / 共18页
春季学期《C++程序设计》作业题目与答案.docx_第2页
第2页 / 共18页
春季学期《C++程序设计》作业题目与答案.docx_第3页
第3页 / 共18页
春季学期《C++程序设计》作业题目与答案.docx_第4页
第4页 / 共18页
春季学期《C++程序设计》作业题目与答案.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

春季学期《C++程序设计》作业题目与答案.docx

《春季学期《C++程序设计》作业题目与答案.docx》由会员分享,可在线阅读,更多相关《春季学期《C++程序设计》作业题目与答案.docx(18页珍藏版)》请在冰豆网上搜索。

春季学期《C++程序设计》作业题目与答案.docx

春季学期《C++程序设计》作业题目与答案

2013年春季学期《C++程序设计》作业

作业提交格式要求:

请同学们把答案集中单独写在一个.doc文档中,作为附件上传(不要把答案直接填写在题目的空中)。

特规定格式如下:

一、ABCDDAAAAA

二、

题号

1

2

3

4

5

6

7

8

9

10

结果

三、

(1)BeiJing

ShangHai

(2)x=8,y=7

(3)r=k:

i+j=90

……

以上只是举例,不是正确的输出结果。

请按上述规定书写和提交作业结果,不符合以上规定的作业将作为0分处理。

鼓励独立完成作业,严惩抄袭。

第一部分(C++第1-7、8、9章)

一、单选题BDBCDDCDCB

1、C++是从早期的C语言逐渐发展演变来的,与C语言相比,它在求解问题方法上最大的改进是()。

A.面向过程B.面向对象C.安全性D.复用性

2、下列关于this指针的叙述中,正确的是()

A.任何与类相关的函数都有this指针

B.类的成员函数都有this指针

C.类的友元函数都有this指针

D.类的非静态成员函数才有this指针

3、若有以下类Z声明,函数fStatic的正确定义是()。

classZ

{inta;

public:

voidfStatic(Z&)static;

};

A.voidZ:

:

fStatic(Z&objZ){objZ.a=0;}

B.voidZ:

:

fStatic(Z&objZ){a=objZ.a;}

C.voidZ:

:

fStatic(Z&objZ){a=0;}

D.voidZ:

:

fStatic(Z&objZ){Z:

:

a=0;}

4、在C++中,关于下列设置缺省参数值的描述中,( )是正确的。

A.不允许设置缺省参数值;

B.只能在函数的定义中指定参数的缺省值;

C.在指定了缺省值的参数右边,不能出现没有指定缺省值的参数;

D.设置缺省参数值时,必须全部都设置;

5、关于友元函数的描述中,错误的是()。

A.友元函数说明在类体内B.友元函数不是成员函数

C.友元函数必须用对象来引用D.友元函数可以直接访问类中的私有成员

6、对于类,下面哪个是不正确的()。

A.类是对象的设计蓝图

B.使用关键字Class创建类结构

C.类被声明后,类名成为类型名并且可以用来声明变量

D.类与结构体相同,它们之间没有区别

7、下列是构造函数的特点,()是错误的。

A.构造函数是一种成员函数,它具有一般成员函数的特点。

B.构造函数的名称与其类名相同。

C.构造函数必须指明其类型。

D.一个类中可以定义一个或多个构造函数。

8、已知:

p是一个指向类A数据成员m的指针,a是类A的一个对象。

在给m赋值为5的下列表达式中,()是正确的。

A.a.p=5B.a->p=5C.a.*p=5D.*a.p=5

9、下面对静态数据成员的描述中,正确的选项是()。

A.静态成员可以在类体内进行初始化

B.静态数据成员不可以被类的对象调用

C.静态数据成员可以直接用类名调用

D.静态数据成员不可以直接用类名调用

10、下列关于new运算符的描述中,错误的是()。

A.new运算符组成的表达式的值是地址值

B.创建对象时不调用构造函数

C.用它创建的对象须用delete来删除

D.可用它来创建动态的对象和对象数组

二、判断题TFFTTFFTFF

1.子对象的初始化可以不放在该类的构造函数中。

T

2.如果一个类中没有定义任何构造函数,则该类的对象便无法初始化。

F

3.构造函数和析构函数都不能重载。

F

4.如果一个成员函数只存取一个类的静态数据成员,则可将该成员函数说明为静态成员函数。

T

5.构造函数和析构函数都是系统自动调用的。

T

6.可以在类的构造函数中对静态数据成员进行初始化。

F

7.友元函数是成员函数,它可以访问类中私有成员。

F

8.对象数组的元素必须是同一个类的对象。

T

9.用class定义的类中,默认的访问权限是公有的。

F

10.运算符new可以创建变量或对象,也可以创建数组。

F

三、写出下列程序的输出结果:

1、

#include

usingnamespacestd;

classTest

{

public:

Test()

{

cout<<”constructorofTest”<

}

};

Testa;

intmain()

{

cout<<”main()start”<

Testb;

return0;

}

输出结果:

constructionofTest

main()start

constructorofTest

2、

#include

classStudent

{

public:

Student(inti=0,doublej=0)

{num=i;score=j;}

voidprint()

{cout<

friendvoidfun(Student&rs);

private:

intnum;

doublescore;

};

voidfun(Student&rs)

{rs.num=1100;

rs.score=80;

rs.print();

}

voidmain()

{Students1(1002,50),s2;

s1.print();

fun(s2);

}

输出结果:

1002,50

1100,80

3、

#include

classA

{

private:

inta;

public:

A(intaa){a=aa;};

~A(){cout<<”DestructorA!

”<

};

classB:

publicA

{

private:

intb;

public:

B(intaa=0,intbb=0):

A(aa){b=bb;};

~B(){cout<<”DestructorB!

”<

};

voidmain()

{

Bobj1(5),obj2(6,7);

return;

};

输出结果:

DestrutorB!

7

DestrutorA!

6

DestrutorB!

0

DestrutorA!

5

 

4、

#include

classA

{

public:

A(inti=0)

{m=i;cout<<”Constructorcalled.”<

voidSet(inti)

{m=i;}

voidPrint()const

{cout<

~A()

{cout<<”Destructorcalled.”<

private:

intm;

};

voidmain()

{

constintN=5;

Amy;

my=N;

my.Print();

}

输出结果:

Construtorcalled.0

Construtorcalled.5

5

Destrutorcalled.5

Destrutorcalled.5

第二部分(C++第10、11章)

一、单选题CAADDADA

1、在C++中,类与类之间的继承关系具有()。

A.自反性B.对称性C.传递性D.反对称性

2、intFunc(int,int);不可与下列哪个函数构成重载()。

A.intFunc(int,int,int)

B.doubleFunc(int,int)

C.doubleFunc(double,double)

D.doubleFunc(int,double);

3、关于基类和派生类的描述中,错误的是()。

A.基类和派生类间是包含关系

b.派生类中可以定义自己的成员

c.基类成员在派生类中的访问权限与继承方式有关

d.一个派生类可以从一个基类派生,也可以从多个基类派生。

4、下列对运算符重载的描述中,正确的是()。

A.运算符重载可以改变结合性

B.运算符重载可以改变优先级

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

D.运算符重载不改变优先级和结合性

5、下列函数中,()不能重载。

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

6、当一个类某个函数被说明为virtual时,该函数在该类的所有派生类中()。

A.都是虚函数

B.只有被重新说明时才识虚函数

C.只有被重新说明为virtual时才是虚函数

D.都不是虚函数

7、实现运行时的多态性采用()

A.重载函数B.构造函数C.析构函数D.虚函数

8、关于动态联编的下列描述中,()是错误的。

A.动态联编是在编译时确定操作函数的

B.动态联编是以虚函数为基础的

C.动态联编是在继承的前提下的一种多态性

D.动态联编时要求类的继承是公有的

二、判断题FFTTFFFTTF

1.C++支持运算符重载,所有运算符都可以重载。

F

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

F

3.基类中的保护成员在其派生类中可以访问,而派生类对象不可访问。

T

4.运算符重载不能改变运算符的运算优先级、结合方向。

T

5.派生类的对象不可以给基类对象赋值。

F

6.静态联编是在运行时进行的,动态联编是在编译时进行的。

F

7.派生类的构造函数中应包含直接基类的构造函数。

F

8.私有继承方式下,基类中公有成员和保护成员在派生类中都是私有的。

T

9.抽象类不能定义对象,可以定义对象引用和对象指针。

T

10.一个对象在创建时,总是要被初始化的。

F

三、写出下面程序的输出结果。

1、

#include

classBASE

{public:

voidget(inti,intj,intk,intl)

{a=i;b=j;x=k;y=l;}

voidprint()

{cout<<"a="<

}

inta,b;

protected:

intx,y;

};

classA:

publicBASE

{public:

voidget(inti,intj,intk,intl)

{BASEobj3;

obj3.get(50,60,70,80);

obj3.print();

a=i;b=j;x=k;y=l;

u=a+b+obj3.a;v=y-x+obj3.b;

}

voidprint()

{cout<<"a="<

cout<<"u="<

}

private:

intu,v;

};

voidmain()

{BASEobj1;

Aobj2;

obj1.get(10,20,30,40);

obj2.get(30,40,50,60);

obj1.print();

obj2.print();

}

输出结果:

a=50b=60x=70y=80

a=10b=20x=30y=40

a=30b=40x=50y=60

u=120v=70

2、

#include

classA

{

public:

A(inti,intj)

{a1=i;a2=j;}

virtualvoidPrint()

{cout<

protected:

inta1,a2;

};

classB:

publicA

{

public:

B(inti,intj):

A(i,j)

{}

voidPrint()

{cout<

};

voidfun(A&a)

{a.Print();}

voidmain()

{

intm=10,n=2;

Bb(m,n);

fun(b);

}

输出结果:

20

3、

#include

classB

{

public:

B()

{}

B(inti)

{b=i;}

virtualvoidvirfun()

{cout<<”B:

:

virfun()called.\n”;}

private:

intb;

};

classD:

publicB

{

public:

D()

{}

D(inti,intj):

B(i)

{d=j;}

private:

intd;

voidvirfun()

{cout<<”D:

:

virfun()called.\n”;}

};

voidfun(B*obj)

{

obj->virfun();

}

voidmain()

{

B*pb=newB;

fun(pb);

D*pd=newD;

fun(pd);

}

输出结果:

D:

:

virfun()called.

第三部分(VC++)

一、单选题CDBDBBADDC

1.下面关于API的描述错误的是()

A.API是用来控制Windows各个元素的外观和行为的一套预定义的Windows函数。

B.创建应用程序,打开窗口、描绘图形都要调用API函数。

C.Windows操作系统构建在API函数上

D.早期,windows程序员编写程序只能使用API函数

2.下面关于API的描述错误的是()

A.API函数构建在Windows操作系统上

B.创建应用程序,打开窗口、描绘图形都要调用API函数。

C.API是用来控制Windows各个元素的外观和行为的一套预定义的Windows函数DWindows应用程序构建在API函数上。

D.现在,Windows程序员编写程序只能使用API函数。

3.下面描述句柄的语句,错误的是()

A句柄是WINDOWS用来标识被应用程序所建立或使用的对象的唯一整数

B句柄中存放了Windows对象的数据

C句柄能区分不同的应用程序对象

D.句柄具有多种类型

4.在Windows中,窗口句柄的类型是()

A.HINSTANCEB.HFONTC.HDCD.HWND

5.在Windows中,字体句柄的类型是()

A.HINSTANCEB.HFONTC.HDCD.HWND

6.对消息循环描述错误的是()

A.GetMessage函数在消息队列非空时,取得消息并返回。

B.若GetMessage取得的是WM_CLOSE消息则返回0,否则返回非0.

C.GetMessage函数在消息队列为空时,将一直空闲。

D.DispatchMessage将当前消息发送到对应的窗口过程中去。

7.下面四个MFC类中哪一个是管理MFC应用程序的()

A.CWinAppB.CMainFrameC.CDocumentD.CView

8.下列类中不属于MFC框架基本类的是()

A.CWinAppB.CFrameWndC.CViewD.CObject

9.关于GDI的描述错误的是()

A.GDI指图像设备接口。

B.GDI负责用户和绘图程序之间的信息交换

C.GDI控制在输出设备上显示图形或文字。

D.采用了GDI,编程时还需关心显示卡或打印机的驱动程序。

10.关于设备上下文的描述错误的是()

A.设备上下文是一种包含有关某个设备的绘制属性的Windows数据结构。

B.设备上下文允许在Windows中进行与设备无关的绘制。

C.设备上下文可以用于绘制到屏幕,打印机但不能绘制到图元文件。

D.设备上下文对象封装了绘制线条、形状和文本等的WindowsAPI.

二、填空题

1.SendMessage和PostMessage都会向窗体发送一个消息,但SendMessage将一条消息发送到指定窗口,立即处理而PostMessage将一条消息投递到指定窗口的消息队列,不需要立即处理。

2.使用MFCAppWizard产生的应用程序的类型主要包括单文档应用程序、多文档应用程序、基于对话框的应用程序.

3、VC++的工作区窗口包含3个视图,分别是类视图,资源视图,文件视图。

4.封装画刷的GDI类是CBrush,封装画笔的GDI类是CPen,封装字体的GDI类是CFont,封装位图的GDI类是CBitmap。

5.Windows应用程序的消息来源主要包括系统消息和自定义消息

6.Windows应用程序的消息按处理方式主要包括命令消息、标准消息和通告消息。

7.在VisualC++中,创建控件有两种方法:

一种是静态创建,另一种是动态创建。

8、按钮控件对应CButton类,静态文本控件对应CStatic类,单选和复选按钮对应CCheckListBox类。

9、在MFC的众多类中,CObject是所有MFC类的原始基类。

10、消息处理函数OnLButtonDown响应左键按下消息。

三、简答题

1.什么是句柄?

它在Windows程序中的作用是什么?

答:

句柄,是整个windows编程的基础。

一个句柄是指使用的一个唯一的整数值,即一个四字节长的数值,来标志应用程序中的不同对象和同类对象中的不同的实例,诸如,一个窗口,按钮,图标,滚动条,输出设备,控件或者文件等。

应用程序能够通过句柄访问相应的对象的信息,但是句柄不是一个指针,程序不能利用它句柄来直接阅读文件中的信息。

如果句柄不用在I/O文件中,它是毫无用处的。

句柄是windows用来标志应用程序中建立的或是使用的唯一整数,windows使用了大量的句柄来标志很多对象。

2.CPaintDC,CClientDC,CWindowDC的区别?

答:

CClientDC:

(1)(客户区设备上下文)用于客户区的输出,与特定窗口关联,可以让开发者访问目标窗口中客户区,其构造函数中包含了GetDC,析构函数中包含了ReleaseDC

CPaintDC:

(1)用于响应窗口重绘消息(WM_PAINT)是的绘图输出。

(2)CPaintDC在构造函数中调用BeginPaint()取得设备上下文,在析构函数中调用EndPaint()释放设备上下文。

EndPaint()除了释放设备上下文外,还负责从消息队列中清除WM_PAINT消息。

因此,在处理窗口重画时,必须使用CPaintDC,否则WM_PAINT消息无法从消息队列中清除,将引起不断的窗口重画。

(3)CPaintDC也只能用在WM_PAINT消息处理之中。

CWindowDC:

(1)可在非客户区绘制图形,而CClientDC,CPaintDC只能在客户区绘制图形。

(2)坐标原点是在屏幕的左上角,CClientDC,CPaintDC下坐标原点是在客户区的左上角。

(3)关联一特定窗口,允许开发者在目标窗口的任何一部分进行绘图,包含边界与标题,这种DC同WM_NCPAINT消息一起发送

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

当前位置:首页 > PPT模板 > 其它模板

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

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