C++模拟试题3答案.doc_第1页
C++模拟试题3答案.doc_第2页
C++模拟试题3答案.doc_第3页
C++模拟试题3答案.doc_第4页
C++模拟试题3答案.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

一、 填空题(每空 1 分,共 15 分) 1 、 输入操作由操作符 来表达。 2 、 以 /* 开始,以 */ 结束,在 /* 和 */ 之间的部分即为注释。 3 、 若有运算符 、 *= 、 sizeof 、 % ,则它们按优先级由高至低的排列次序为 sizeof 、 % 、 *= 、 。 4 、 描述命题 “A 小于 B 或小于 C” 的表达式为 AB|Ac&b=c 的值是( C )。 A 、 2 B 、 -1 C 、 0 D 、 1 4 、下列标识符中,不合法的用户标识符为(A ) A 、 a#b B 、 _int C 、 a_10 D 、 PAd 5 、 while(!x) 中的 (!x) 与下面条件( D )等价。 A 、 x=1 B 、 x!=1 C 、 x!=0 D 、 x=0 6 、定义析构函数时,应该注意( C ) A 、其名与类名完全相同 B 、返回类型是 void 类型 C 、无形参,也不可重载 D 、函数体中必须有 delete 语句 7 、每个类( C )构造函数。 A 、只能有一个 B 、只可有公有的 C 、可以有多个 D 、只可有缺省的 8 、在一个类中可以对一个操作符进行( D )重载。 A 、 1 种 B 、 2 种以下 C 、 3 种以下 D 、多种 9 、重载赋值操作符时,应声明为( A )函数。 A 、 友元 B 、 虚 C 、 成员 D 、 多态 10 、在公有继承的情况下,基类成员在派生类中的访问权限( B ) A 、 受限制 B 、 保持不变 C 、 受保护 D 、 不受保护 11 、通过( A )调用虚函数时,采用动态束定。 A 、 对象指针 B 、 对象名 C 、 成员名限定 D 、 派生类名 三、 双项选择题(在每小题的五个备选答案中,选出二个正确的答案,并将其序号填在 题中的括号内,每小题 2 分,共 18 分) 1 、在( C )( E )情况下适宜采用 inline 定义内联函数。 A 、 函数体含有循环语句 B 、 函数体含有递归语句 C 、 函数代码少、频繁调用 D 、 函数代码多、不常调用 E 、 需要加快程序执行速度 2 、在类中说明的成员可以使用关键字( A )( D )进行修饰。 A 、 private B 、 extern C 、 auto D 、 public E 、 register 3 、如果类 A 被说明成类 B 的友元,则( D )( E )。 A 、 类 A 的成员即类 B 的成员 B 、 类 B 的成员即类 A 的成员 C 、 类 A 的成员函数不得访问类 B 的成员 D 、 类 A 的成员函数可以访问类 B 的成员 E 、 类 B 不一定是类 A 的友元 4 、创建或删除堆对象,需要使用操作符( B )( C ) A 、 B 、 new C 、 delete D 、 . E 、 * 5 、在类中声明转换函数时不能指定( A )( C ) A 、 参数 B 、 访问权限 C 、 返回类型 D 、 操作 E 、 标识符 6 、在派生类中重新定义虚函数时必须在( A )( B )方面与基类保持一致。 A 、 参数个数 B 、 参数类型 C 、 参数名字 D 、 操作内容 E 、 赋值 7 、字符串之间的比较按( C )( E )进行。 A 、 字符串的长度 B 、 字符的大小写种类 C 、 字符串的内部代码 D 、 字符串的含意 E 、 从头至尾的顺序 8 、 C+ 类体系中,不能被派生类继承的有( B )( E )。 A 、 转换函数 B 、 构造函数 C 、 虚函数 D 、 静态成员函数 E 、 赋值操作函数 9 、下列虚基类的声明中正确的是( B )( D ) A 、 class virtual B: public A B 、 class B: virtual public A C 、 class B: public A virtual D 、 class B: public virtual A E 、 virtual class B: public A 四、 简答题(每小题 5 分,共 30 分) 1 给出下面程序的运行结果。 # include “iostream.h” int main( ) int i=1; while (i=15) if (+i%3!=2) continue; else cout ”i=”iendl; 答:输出结果: i=2 i=5 i=8 i=11 i=14 2. 给出下面程序的运行结果。 #include “iostream.h” class test private:int num float fl; public:test( ); int getint( )return num; float getfloat( )return fl; test( ); ; test test( ) cout Initalizing default endl; num=0;fl=0.0; test test( ) cout Desdtructor is active endl; int main( ) test array2; cout array1.get int( ) array1.getfloat( ) endl; 答:结果为: Initalizing default Initalizing default 0 0 Desdtructor is active Desdtructor is active 3. 给出下面程序的运行结果。 #include iostream.h int main( ) int num=50; int& ref=num; ref=ref+10 cout num= num endl; num=num+40; cout ref= ref endl; return 0; 答:输出结果: num=60 ref=100 4 若程序员没有为类定义拷贝初始化构造函数,则编译器将自动生成一缺省的拷贝初 始化构造函数,它可能会产生什么问题? 答: 若没有为类定义复制初始化构造函数,则编译器将会生成一个形如 ClassName:ClassNa me(const ClassName &) 的缺省复制初始化构造函数,它的执行方式为用作为初始值的对象的 成员初始化正在建立的对象的相应成员。这在有的情况下会产生问题,如果类的成员是一个指 针时,缺省复制初始化构造函数构造出的新对象中的指针将与原来的对象指向同一个变量。结 果在对象消失时,要进行析构,这时这个变量将会被删除两次,所以就会出错了。 5 C+ 没有提供字符串数据类型,如何简单地构造此种数据类型? 答:可以定义一个字符数组作为字符串类型,如下: const int M=80; char strM; 6 什么是多重继承中的支配原则?分析下面的类体系。 class A public: int i; void f(float); ; class B: public A public: int i; void f(int); ; 则下面的访问是否具有二义性( b 为类 B 的一个对象)? b.i; b.f(3.5); 答:类 X 中的名字 N 支配类 Y 中同名的名字 N ,是指类 X 以类 Y 为它的一个基类,这就称为多重继 承的支配原则。在以上的访问中类 B 中的名字支配类 A 中的名字 i 和 f ,所以在访问时不存在二义 性。 五、 编程题(共 30 分) 1 、 下面函数 chnum 将一个整数字符串转换为一个整数。请在 1 、 2 、 3 、 4 处填入 正确内容。( 8 分) int chnum (char *str) int i, j, k, h, len, num=0; len=strlen(str); for(i=0; 1; i+) / 填入 i0 k=k*10; j-; h=3-0; / 填入 stri num=num+h*4; / 填入 k return num; 1 填入 i0 3 填入 stri 4 填入 k 2 、 下列程序定义了一实部为 real ,虚部为 imag 的复数类 complex ,并在类中将复数的加、减 操作重载为友元函数。 请在 1 12 处填上适当内容。( 9 分) class complex private: float 1, 2; / 填入 real imag public: complex (float r=3, float i=4)/ 填入 0 0 real=r; imag=i; 5 operator+(complex,complex); / 填入 friend complex 6 operator-(complex,complex); / 填入 freind complex ; 7 operator+(complex c1,complex c2) / 填入 complex return complex(8, 9); / 填入 c1.real+c2.real c1.imag+c2.imag 10operator-(complex c1,complex c2) / 填入 complex return complex(11, 12); / 填入 c1.real-c2.real c1.imag-c2.imag 1 real 2 imag 3 0 4 0 5 freind complex 6 freind complex 7 complex 8 c1.real+c2.real 9 c1.imag+c2.imag10complex 11c1.real-c2.real 12 c1.imag-c2.imag 3 、 下列 shape 类是一个表示形状的抽象类, area( ) 为求图形面积的函数, total( ) 则 是一个通用的用以求不同形状的图形面积总和的函数。请从 shape 类派生三角形类 (triangle) 、矩形类( rectangle )、并给出具体的求面积函数。( 9 分) class shape public: virtual float area( )=0 ; float total(shape *s ,int n) float sum=0.0; for(int i=0;iarea( ); return sum; 解:这两个类如下: class triangle : public shape private : float a, b ,c ,s; public: triangle( float s1=0, float s2=0 , floa

温馨提示

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

评论

0/150

提交评论