




已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一、选择题(15分)1、_ D _ 语言是面向过程的语言。 A. C+ B. Eiffel C. Smalltalk D. Pascal 2、下列引用的定义中 _ B _ 是错误的。A. int i; B. int i; C. float i; D. char d; int &j=i; int &j; float &j=i; char &k=d; j=i;3、假定AB是一个类,则该类的拷贝构造函数的声明语句为_ C _。 A. AB &( AB x) B. AB ( AB x) C. AB ( AB &) D. AB ( AB *x)4、一个类的友元函数或友元类能够通过成员操作符访问该类的_ D _。 A. 公有成员 B. 私有成员 C. 保护成员 D. 所有成员5、对基类和派生类的关系描述中,_ B _ 是错误的。 A. 派生类是对基类的具体化 B. 派生类是基类的子集 C. 派生类是基类定义的延续 D. 派生类是基类的组合6、在多重继承中,公有派生和私有派生对于基类成员在派生类中的可访问性与单继承的规则_ A _。 A. 完全相同 B. 完全不同 C. 部分相同,部分不同 D. 以上都不对7、设置虚基类的目的是_ B _。A. 简化程序 B. 消除二义性 C. 提高运行效率 D. 减少目标代码8、下列有关运算符重载的描述中,_ B _ 是正确的。A. 运算符重载可改变其优先级 B. 运算符重载不改变其语法结构C. 运算符重载可改变其结合性 D. 运算符重载可改变其操作数的个数9、下列运算符中,_ A _ 运算符在C+中不能重载。A. ?: B. + C. - D. =10、下列对模板的声明,正确的是 _ C _ 。 A. template B. template C. template D. template二、填空题(20分)1、C源程序的扩展名为.C,C+源程序文件的扩展名为_.CPP _。2、多行注释的开始标记符和结束标记符分别为_ /* _和_ */ _。3、从一条函数原型语句“float fun1(void);”可知,该函数的返回类型为_ float _,该函数带有_0_个参数。4、在C+语言中输入、输出操作是通过I/O流类库来实现的。5、当一个类对象撤销时将自动调用该类的_析构函数_。6、对于类中定义的成员,其隐含的访问权限是_私有(private)_。7、在一般情况下,用点运算符(.)来引用对象成员,当用指向对象的指针来引用对象成员时,要用_-_操作符。 8、假定AB为一个类,若用户没有给其定义构造函数,则系统自动为其隐含定义的构造函数为_ AB:AB _。 9、若需要把int F(void)函数定义为类A的友元函数,则应在类A的定义中加入一条语句_ friend int F(void); _。10、类模板的使用实际上是将类模板实例化成一个具体的类,它的格式为_类名对象名_。三、程序分析题(20分)1、 下面是一个C程序,改写它,使它采用C+风格的I/O语句。#include main() int a,b,d,min; printf(Enter two numbers:); scanf(%d%d,&a,&b); min=ab?b:a; for(d=2;dmin;d+) if(a%d=0)&(b%d=0) break; if(d=min) printf(No common denominatorsn); return 0; printf(The lowest common denominator is %d,d); return 0;#include main() int a,b,d,min; coutab; min=ab?b:a; for(d=2;dmin;d+) if(a%d=0)&(b%d=0) break; if(d=min) coutNo common denominatorsendl;return 0; coutThe lowest common denominator isd; return 0;2、阅读下列程序,写出程序的运行结果。include class A int i,j;public: A(int a, int b)i=a; j=b; void add(int x, int y) i+=x; j+=y; void print() cout”i=”it”j=”jn;class B: public A int x,y; public: B(int a, int b, int c, int d):A(a,b)x=c; y=d;void ad(int a, int b)x+=a; y+=b; add(-a,-b);void print()cout”x=”xt”y=”yn;void main()A a(100,200);a.print();B b(200,300,400,500);b.ad(50,60);b.A:print();b.print();运行结果:i=100 j=200i=150 j=240i=450 j=5603、下面是一个类的定义,存在着3处语法错误(有的为单个字符),请指出错误行的行号并改正。class CE /1行 private /2行 int a,b; /3行 int getmin() return (ab? a:b); /4行 public: /5行 int c; /6行 void SetValue(int x1,int x2, int x3) /7行 a=x1; b=x2; c=x3; /8行 /9行 int GetMin(); /10行 /11行int GetMin() /12行int d=getmin(); /13行return (dc? d:c); /14行 /16行错误行的行号为 、_ 和 _。分别改正为_、_和_。2 11 12 private: ; int CE:GetMin()4. 阅读程序,写出运行结果。#include#includeclass person int age; char name10;public:person:person(char *str,int a=20) strcpy(name,str);age=a; void init(int i, char *str)age=i; strcpy(name,str);void display()coutname” is ”age” years old.n”; ;void main() person demo1; demo1.init(30,”li-ming”); demo1.display();person demo2(”wang-yan”); demo2.display();12/25/2004 10:13:565、写出下列程序的运行结果。#include class Date public: Date(int y=2001,int m=1,int d=1)Year=y; Month=m; Day=d; void PrintDate() coutYear/Month/Dayendl; protected: int Year,Month,Day;class Timepublic: Time(int h=5,int m=30,int s=0)Houre=h; Minutes=m; Seconds=s; void PrintTime() coutHoure:Minutes:Secondsendl; protected: int Houre, Minutes, Seconds;class Date_Time: public Date, public Time public:Date_Time( ); Date_Time(int y,int mo,int d,int h=0,int mi=0,int s=0): Date(y,mo,d), Time(h,mi,s) void PrintDate_Time()PrintDate();PrintTime();void main( ) Date_Time a, b(2002,10,1,16,20,0), c(2005,4,18,6,7); a.PrintDate_Time(); b.PrintDate_Time(); c.PrintDate_Time();运行结果:2001/1/15:30:02002/1/116:20:02005/4/186:7:06#include class complex public: complex(double r=0.0,double i=0.0) real=r,imag=i; complex operator +(complex c2); complex operator - (complex c2); complex operator =(complex c2) real=c2.real;imag=c2.imag; return complex(real,imag); void display(); private: double real; double imag; ; complex complex:operator + (complex c2) return complex(real + c2.real,imag + c2.imag); complex complex:operator - (complex c2) return complex(real - c2.real,imag - c2.imag); void complex:display()cout(real,imag)endl;void main() complex comp1(5.0,8.0),comp2(2.0,3.0),comp3,comp4; comp3=comp1+comp2;comp4=comp1-comp2; comp3.display();comp3.display();(7.0,11.0)(3.0,5.0)7、写出下列程序的运行结果。include int i=15;void main()int i;i=100;:i=i+1;cout:iemdl; 程序运行结果_101_8.下面是一个类的定义,存在着3处语法错误(有的为单个字符),请指出错误行的行号并改正。class CE /1行 private: /2行 int a,b; /3行 int getmin() return (ab? a:b); /4行 public /5行 int c; /6行 void SetValue(int x1,int x2, int x3) /7行 a=x1; b=x2; c=x3; /8行 ; /9行 int GetMin(); /10行; /11行int GetMin() /12行int d=getmin(); /13行return (dc? d:c); /14行 /16行错误行的行号为 、_ 和 _。分别改正为_、_和_。 5 9 12 public: int CE:GetMin()四、简答题(15分)1、对象有那些特性?对象的特性:封装性、模块独立性、动态连接性、易维护性2、分析使用友元的利弊。友员机制是对类的封装机制的补充,方便了编程,提高了程序运行效率、实现了类之间的数据共享。但引入友元破坏了数据的隐蔽性和类的封装性,降低程序的可维护性,这与面向对象程序设计思想是背道而驰的,因此要谨慎使用。3、构造函数与析构函数的主要作用是什么?为什么构造函数允许重载而析构函数不允许重载?构造函数的主要作用:当建立类对象时,为对象分配存储空间,进行必要的初始化。 析构函数的主要作用:当撤消类对象时,收回存储空间,并做一些善后工作。 构造函数可以有任意类型的参数符合函数重载的条件,因而能够被重载;析构函数没有参数也没有返回值,因而不能重载。4、编译时的多态性与运行时的多态性有什么区别?它们的实现方式有什么不同? 静态联编支持的多态性称为编译时的多态性,要求在程序编译时就知道调用函数的全部信息。动态联编支持的多态性称为运行时的多态性,程序运行时才能确定调用哪个函数。编译时的多态性是通过函数重载和运算符重载实现的,运行时的多态性是通过继承和虚函数来实现的。五、编程题(30分)1、输入10个学生的成绩,求平均成绩,并将低于平均成绩的分数打印出来。#includevoid main()float ave, score10;int i;cout”请输入10个学生的成绩.”endl;for(i=0;iscorei;float sum=0;for(i=0;i10;i+) sum+=scorei;ave=sum/10;cout”低于平均成绩的分数是:”;for(i=0;i10;i+) if(scoreiave) coutscorei;2、定义一个类Score,它含有私有成员English_score(英语分数)、公有成员函数Setscore() 和 Printscore(),其中Setscore()用来设置English_score的值,Printscore()用来输出English_score的值。在主程序中定义类Score的两个对象stu1和stu2,其英语成绩分别为88.5和94.5,输出这两个分数。#includeclass Score float English_score; public: void Setscore(float a)English_score=a; void Printscore()coutEnglish_scoreendl;void main()Score stu1,stu2;stu1.Setscore(88.5);stu2.Setscore(94.5);cout”stu1的English_scores是:” stu1.Printscore();cout”stu2的English_score是:” stu2.Printscore();3、 建立类Cylinder,Cylinder的构造函数被传递了两个double值,分别表示圆柱体的半径和高度。用类Cylinder计算圆柱体的体积,并存储在一个double变量中。在类Cylinder中包含一个成员函数Vol(),用来显示每一个Cylinder对象的体积。在主程序中定义一个类Cylinder的对象C1,从键盘输出其半径和高度,输出该圆柱体的体积。#includeclass Cylinder double rdius,height; public: Cylinder (double r, double h) rdius=r; height=h double Vol()return(3.1415926*radius*radius*height);void main()double R,H;coutR;coutH
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 附加条款合同模板怎么写(3篇)
- 农业秸秆离田回收与农业面源污染综合防治协议
- 离婚后子女监护权划分及教育辅导服务合同
- 离婚后子女抚养、监护及生活费用分担协议
- (正式版)DB65∕T 4358-2021 《草品种区域试验站建设规范》
- 物业管理合同终止与社区养老服务体系协议
- 跨国并购项目终止协议书:资产清算与员工安置
- 离婚协议中房产、车辆分割及子女抚养权协议书
- 离婚诉讼中夫妻共同债务处理及财产分割协议书
- (正式版)DB65∕T 3830-2015 《商品条码标准体系总则》
- 中秋节知识课件
- 110kV变电站及110kV输电线路运维投标技术方案
- 人教版(新教材)高中生物选择性必修1课件3:4 3 免疫失调
- 《SLT 582-2025水工金属结构制造安装质量检验检测规程》知识培训
- “燕园元培杯”2023-2024学年全国中学生地球科学奥林匹克竞赛决赛试题详解
- 中国血脂管理指南(基层版+2024年)解读
- 分子诊断技术在感染性疾病中的应用-深度研究
- 《智能AI分析深度解读报告》课件
- 气道异物护理教学
- 2024年版机电产品国际招标标准招标文件
- 企业合规经营规范手册
评论
0/150
提交评论