北大2013年春C程序设计作业及答案综述_第1页
北大2013年春C程序设计作业及答案综述_第2页
北大2013年春C程序设计作业及答案综述_第3页
北大2013年春C程序设计作业及答案综述_第4页
北大2013年春C程序设计作业及答案综述_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、2013 年春季学期 C+ 程序设计作业答案一、单选题1、C+是从早期的 C 语言逐渐发展演变来的,与 C 语言相比,它在求解问题方法上最大的 改进是( B )。A 面向过程 B. 面向对象 C. 安全性 D. 复用性2、下列关于 this 指针的叙述中,正确的是 ( D )A. 任何与类相关的函数都有 this 指针B. 类的成员函数都有 this 指针C. 类的友元函数都有 this 指针D. 类的非静态成员函数才有 this 指针3、若有以下类 Z 声明,函数 fStatic 的正确定义是 ( A )。 class Z int a;public:void fStatic(Z&)stati

2、c;A. void Z:fStatic(Z &objZ) objZ.a=0; B. void Z:fStatic(Z &objZ) a= objZ.a; C. void Z:fStatic(Z &objZ) a=0; D. void Z:fStatic(Z &objZ) Z:a=0; 4、在 C+ 中,关于下列设置缺省参数值的描述中, ( C )是正确的。A 不允许设置缺省参数值;B只能在函数的定义中指定参数的缺省值; C在指定了缺省值的参数右边,不能出现没有指定缺省值的参数; D设置缺省参数值时,必须全部都设置;5、关于友元函数的描述中,错误的是(C )。A 友元函数说明在类体内B 友元函数

3、不是成员函数C友元函数必须用对象来引用D 友元函数可以直接访问类中的私有成员6、对于类,下面哪个是不正确的 ( D )。A. 类是对象的设计蓝图B. 使用关键字 Class 创建类结构C. 类被声明后,类名成为类型名并且可以用来声明变量D. 类与结构体相同,它们之间没有区别7、下列是构造函数的特点, ( C )是错误的。A. 构造函数是一种成员函数,它具有一般成员函数的特点。B. 构造函数的名称与其类名相同。C. 构造函数必须指明其类型。D. 一个类中可以定义一个或多个构造函数。8、已知: p 是一个指向类 A 数据成员 m 的指针, a 是类 A 的一个对象。在给 m 赋值为 5 的下列表达

4、式中, ( C )是正确的。A. a.p=5B. a-p=5C. a.*p=5D. *a.p=59、下面对静态数据成员的描述中,正确的选项是( C )。A. 静态成员可以在类体内进行初始化B. 静态数据成员不可以被类的对象调用C. 静态数据成员可以直接用类名调用D. 静态数据成员不可以直接用类名调用10、下列关于 new 运算符的描述中,错误的是 ( B )。A. new 运算符组成的表达式的值是地址值B. 创建对象时不调用构造函数C. 用它创建的对象须用 delete 来删除D. 可用它来创建动态的对象和对象数组 11、在 C+ 中,类与类之间的继承关系具有 ( C )。A. 自反性 B.

5、对称性 C. 传递性 D. 反对称性12、int Func(int ,int) ;不可与下列哪个函数构成重载(B )。A INT FUNC(INT , INT , INT)B DOUBLE FUNC(INT ,INT)C DOUBLE FUNC(DOUBLE ,DOUBLE)D DOUBLE FUNC(INT , DOUBLE) ;13、关于基类和派生类的描述中,错误的是(A )。A 基类和派生类间是包含关系B派生类中可以定义自己的成员C基类成员在派生类中的访问权限与继承方式有关D一个派生类可以从一个基类派生,也可以从多个基类派生。14、下列对运算符重载的描述中,正确的是( D )。A. 运算

6、符重载可以改变结合性B. 运算符重载可以改变优先级C. 运算符重载可以改变操作数的个数D. 运算符重载不改变优先级和结合性15、下列函数中, ( D ) 不能重载。A. 成员函数 B. 非成员函数 C. 构造函数 D. 析构函数( A )。16、当一个类某个函数被说明为 virtual 时 ,该函数在该类的所有派生类中A. 都是虚函数B. 只有 被重新说明时才识虚函数C. 只有被重新说明为 virtual 时才是虚函数D. 都不是虚函数17、实现运行时的多态性采用 ( D )A. 重载函数 B. 构造函数 C. 析构函数 D. 虚函数18、关于动态联编的下列描述中, ()是错误的。动态联编是在

7、编译时确定操作函数的动态联编是以虚函数为基础的动态联编是在继承的前提下的一种多态性动态联编时要求类的继承是公有的19. 下面关于 API的描述错误的是( C )A.API 是用来控制 Windows各个元素的外观和行为的一套预定义的Windows函数。B . 创建应用程序,打开窗口、描绘图形都要调用API函数。C .Windows 操作系统构建在 API 函数上D. 早期, windows程序员编写程序只能使用 API函数20. 下面关于 API的描述错误的是( D )A API函数构建在 Windows操作系统上 B创建应用程序,打开窗口、描绘图形都要调用API函数。C API是用来控制 W

8、indows各个元素的外观和行为的一套预定义的Windows函数 DWindows应用程序构建在 API 函数上。D. 现在, Windows程序员编写程序只能使用 API函数。21. 下面描述句柄的语句,错误的是( B )A 句柄是 WINDOW用S来标识被应用程序所建立或使用的对象的唯一整数B 句柄中存放了 Windows对象的数据C 句柄能区分不同的应用程序对象D句柄具有多种类型22. 在 Windows中,窗口句柄的类型是( D )A.HINSTANCE B. HFONT C.HDC D.HWND23. 在 Windows中,字体句柄的类型是( B )A.HINSTANCE B. HF

9、ONT C.HDC D.HWND24. 对消息循环描述错误的是( B ) AGetMessage函数在消息队列非空时,取得消息并返回。B. 若GetMessage取得的是 WM_CLOS消E息则返回 0,否则返回非 0.C GetMessage函数在消息队列为空时,将一直空闲。D DispatchMessage 将当前消息发送到对应的窗口过程中去。25. 下面四个 MFC类中哪一个是管理 MFC应用程序的 ( A )A. CWinApp B. CMainFrame C. CDocument D. CView26. 下列类中不属于 MFC框架基本类的是 ( D )A. CWinApp B. CF

10、rameWnd C. CView D. CObject27. 关于 GDI的描述错误的是( D )A.GDI指图像设备接口。B. GDI 负责用户和绘图程序之间的信息交换C. GDI控制在输出设备上显示图形或文字。D采用了 GDI,编程时还需关心显示卡或打印机的驱动程序。28. 关于设备上下文的描述错误的是( C )A. 设备上下文是一种包含有关某个设备的绘制属性的Windows数据结构。B. 设备上下文允许在 Windows中进行与设备无关的绘制。C. 设备上下文可以用于绘制到屏幕,打印机但不能绘制到图元文件。D. 设备上下文对象封装了绘制线条、形状和文本等的 Windows API.二、判

11、断题1子对象的初始化可以不放在该类的构造函数中。错2如果一个类中没有定义任何构造函数,则该类的对象便无法初始化。错3构造函数和析构函数都不能重载。错4如果一个成员函数只存取一个类的静态数据成员,则可将该成员函数说明为静态成员函数。 对5构造函数和析构函数都是系统自动调用的。对6可以在类的构造函数中对静态数据成员进行初始化。错7友元函数是成员函数,它可以访问类中私有成员。错8对象数组的元素必须是同一个类的对象。对9用 class 定义的类中,默认的访问权限是公有的。错10运算符 new 可以创建变量或对象, 也可以创建数组。 对 11 C+支持运算符重载,所有运算符都可以重载。错12在公有继承中

12、,基类中的公有成员和私有成员在派生类中都是可见的。 13基类中的保护成员在其派生类中可以访问,而派生类对象不可访问。 14运算符重载不能改变运算符的运算优先级、结合方向。对15派生类的对象不可以给基类对象赋值。错16静态联编是在运行时进行的,动态联编是在编译时进行的。错17. 派生类的构造函数中应包含直接基类的构造函数。 对 18私有继承方式下,基类中公有成员和保护成员在派生类中都是私有的。 19抽象类不能定义对象,可以定义对象引用和对象指针。对20一个对象在创建时,总是要被初始化的。对三、写出下列程序的输出结果:1、#include using namespace std;class Tes

13、tpublic:Test()cout ”constructor of Test ”endl;Test a;int main()cout ”main() start”endl;Test b;return 0;答案:constructor of Testmain() startconstructor of Test2、#include class Student public:Student(int i=0,double j=0) num=i;score=j; void print() coutnum , scoreendl; friend void fun(Student &rs);privat

14、e:int num; double score;void fun(Student &rs) rs.num=1100; rs.score=80; rs.print();void main() Student s1(1002,50),s2; s1.print();fun(s2); 答案:1002,501100,83、#include class Aprivate:int a;public:A(int aa)a=aa;A()cout ”Destructor A! ”aendl; ;class B:public A private:int b;public:B(int aa = 0, int bb =

15、 0):A(aa) b = bb; B()cout ”Destructor B! ”bendl;void main()B obj1(5), obj2(6,7); return; 答案:Destructor B!7Destructor A!6Destructor B!0Destructor A!54、 #include class A public: A(int i=0)m=i; cout ”Constructor called. ”mendl; void Set(int i)m=i;void Print() const coutmendl;A()cout ”Destructor called.

16、 ”mendl; private:int m;void main()const int N=5;A my; my=N;my.Print(); 答案:Constructor called.0Constructor called.5Destructor called.55Destructor called.55、#include class BASE public:void get( int i,int j,int k,int l ) a = i; b = j; x = k; y = l; void print() cout a = a t b = b t x = x t y = y endl;i

17、nt a,b; protected: int x, y;class A: public BASE public:void get( int i, int j, int k, int l ) BASE obj3;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;void print() cout a = a t b = b t x = x t y = y endl;cout u = u t v = v endl;private: in

18、t u, v ;void main() BASE obj1;A obj2;obj1.get( 10, 20, 30, 40 );obj2.get( 30, 40, 50, 60 );obj1.print();obj2.print();答案:a=50b=60x=70 y=80a=10b=20x=30 y=40a=30b=40x=50 y=60u=120v=706、#include class Apublic:A(int i,int j) a1=i; a2=j; virtual void Print() couta1 +a2endl; protected:int a1,a2;class B:pub

19、lic Apublic:B(int i,int j):A(i,j) void Print() couta1*a2endl; ;void fun(A &a) a.Print(); void main()int m=10,n=2;B b(m,n);fun(b);答案:207、#include class Bpublic :B()B(int i)b=i;virtual void virfun()cout ”B:virfun() called.n ”; private: int b;class D:public Bpublic:D()D(int i,int j):B(i)d=j;private:int

20、 d;void virfun()coutvirfun();void main()B *pb=new B;fun(pb);D *pd=new D;fun(pd);答案:B:virfun() Called.D:virfun() Called .四、填空题1.SendMessage 和 PostMessage 都会向窗体发送一个消息, 但 SendMessage 在消息处 理完成后返回 而 PostMessage 把消息放进消息队列就立即返回 。2. 使用 MFC AppWizard 产生的应用程序的类型主要包括单文档应用程序 , 多文档应用程序 , 基于对话框的应用程序 .3、VC+的工作区窗口包含 3 个视图,分别是 类视图 , 资源视图 , 文件视图 。4. 封装画刷的 GDI 类是 CBrush,封装画笔的 GDI 类是 CPen,封装字体的GDI 类是 CFont,封装位图的 GDI 类是 CBitmap 。5. Windows 应用程序的消息来源主要包括 系统消息 和 自定义消息6. Windows 应用程序的消息按处理方式主要包括 窗口消息 、 命令消息 和 控件通知 消息

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论