春季学期《C程序设计》作业题目和答案解析Word文档下载推荐.docx
- 文档编号:22240426
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:18
- 大小:21.68KB
春季学期《C程序设计》作业题目和答案解析Word文档下载推荐.docx
《春季学期《C程序设计》作业题目和答案解析Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《春季学期《C程序设计》作业题目和答案解析Word文档下载推荐.docx(18页珍藏版)》请在冰豆网上搜索。
classZ
{inta;
public:
voidfStatic(Z&
)static;
};
A.voidZ:
:
fStatic(Z&
objZ){objZ.a=0;
}
B.voidZ:
objZ){a=objZ.a;
C.voidZ:
objZ){a=0;
D.voidZ:
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.构造函数和析构函数都不能重载。
4.如果一个成员函数只存取一个类的静态数据成员,则可将该成员函数说明为静态成员函数。
T
5.构造函数和析构函数都是系统自动调用的。
6.可以在类的构造函数中对静态数据成员进行初始化。
7.友元函数是成员函数,它可以访问类中私有成员。
8.对象数组的元素必须是同一个类的对象。
9.用class定义的类中,默认的访问权限是公有的。
10.运算符new可以创建变量或对象,也可以创建数组。
三、写出下列程序的输出结果:
1、
#include<
iostream.h>
usingnamespacestd;
classTest
{
Test()
{
cout<
<
”constructorofTest”<
endl;
}
Testa;
intmain()
cout<
”main()start”<
Testb;
return0;
输出结果:
constructionofTest
main()start
constructorofTest
2、
classStudent
Student(inti=0,doublej=0)
{num=i;
score=j;
voidprint()
{cout<
num<
’,’<
score<
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、
classA
inta;
A(intaa){a=aa;
~A(){cout<
”DestructorA!
”<
a<
classB:
publicA
intb;
B(intaa=0,intbb=0):
A(aa){b=bb;
~B(){cout<
”DestructorB!
b<
Bobj1(5),obj2(6,7);
return;
DestrutorB!
DestrutorA!
DestrutorB!
4、
A(inti=0)
{m=i;
”Constructorcalled.”<
m<
voidSet(inti)
voidPrint()const
{cout<
~A()
”Destructorcalled.”<
intm;
constintN=5;
Amy;
my=N;
my.Print();
Construtorcalled.0
Construtorcalled.5
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++支持运算符重载,所有运算符都可以重载。
2.在公有继承中,基类中的公有成员和私有成员在派生类中都是可见的。
3.基类中的保护成员在其派生类中可以访问,而派生类对象不可访问。
4.运算符重载不能改变运算符的运算优先级、结合方向。
5.派生类的对象不可以给基类对象赋值。
6.静态联编是在运行时进行的,动态联编是在编译时进行的。
7.派生类的构造函数中应包含直接基类的构造函数。
8.私有继承方式下,基类中公有成员和保护成员在派生类中都是私有的。
9.抽象类不能定义对象,可以定义对象引用和对象指针。
10.一个对象在创建时,总是要被初始化的。
三、写出下面程序的输出结果。
classBASE
{public:
voidget(inti,intj,intk,intl)
{a=i;
b=j;
x=k;
y=l;
{cout<
"
a="
a<
'
\t'
<
b="
b<
x="
x<
y="
y<
endl;
inta,b;
protected:
intx,y;
classA:
publicBASE
voidget(inti,intj,intk,intl)
{BASEobj3;
obj3.get(50,60,70,80);
obj3.print();
a=i;
u=a+b+obj3.a;
v=y-x+obj3.b;
cout<
u="
u<
v="
v<
intu,v;
{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
public:
A(inti,intj)
{a1=i;
a2=j;
virtualvoidPrint()
{cout<
a1+a2<
protected:
inta1,a2;
B(inti,intj):
A(i,j)
{}
voidPrint()
a1*a2<
voidfun(A&
a)
{a.Print();
intm=10,n=2;
Bb(m,n);
fun(b);
输出结果:
20
classB
public:
B()
{}
B(inti)
{b=i;
virtualvoidvirfun()
{cout<
”B:
virfun()called.\n”;
intb;
classD:
publicB
D()
{}
D(inti,intj):
B(i)
{d=j;
intd;
voidvirfun()
”D:
voidfun(B*obj)
obj->
virfun();
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文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C 程序设计 春季学期C 程序设计作业题目和答案解析 春季 学期 程序设计 作业 题目 答案 解析