好文档 - 专业文书写作范文服务资料分享网站

计算机14级 面向对象程序设计 考试试卷(A卷)和 参考答卷

天下 分享 时间: 加入收藏 我要投稿 点赞

号学 名纸姓 卷 试 试 级考班 学 计大设业程序工象对南向湖面 名称程课 院学通信与算机计 )院(系 ————课程名称: 面向对象程序设计 ( A卷 闭卷) 1.下列关于iostream的描述中,错误的是( )。 A.它是标准的C++头文件 B.它与iostream.h是两个不同文件 ——C.iostream与iostream.h文件形式不同,但其内容实现是一样的 — 适用专业年级:计算机14级 考试时间: 100分钟 D.C++标准不再支持iostream.h文件 —题号 一 二 三 四 五 六 七 八 九 十 总分 2.如果Student是学生类,则语句“Student *p,s1, s2[2];”会执行Stuent的构造统分人签名 题分 10 20 24 26 20 100 函数次数是( )。 ———A.1 B.2 C.3 D.4 —得分 3.在重载一个运算符时,其参数表中没有任何参数,则下列描述中正确的是( )。 ——考生注意事项:1、本试卷共 3 页,试卷如有缺页或破损,请立即举手报告以便更换。 A.作为友元函数重载的一元运算符 B.作为成员函数重载的一元运算符 — 2、考试结束后,考生不得将试卷、答题纸和草稿纸带出考场。(答案请写C.作为普通函数重载的一元运算符 D.上述三种说法都是错误的 在密封线内和答卷正面,否则不记分) 4.下列关于C++异常处理的流程的描述中,错误的是( )。 ——一、判断题,正确的打√,错误的打×(每小题1分,共10分) A.对某段可能产生异常的代码或函数使用try结构进行检测 (答案填在下表中) B.如果在执行try结构期间没有引起异常,则跟在try后面的catch结构不会执—— —1 2 3 4 5 6 7 8 9 10 行C.如果在执行try结构期间发生异常,则在异常发生的位置使用throw抛出异常,√ × × √ × √ × × √ × 一个异常对象将被创建 ——线1.在C++中,标识符Student和_student都是正确的。( ) D.本层try语句抛出了异常,只能由本层的catch语句处理 封2. 在编程中,有了面向对象的程序设计方法后,就不要用面向过程的程序设计方法了。5.一个类的静态数据成员所表示属性( )。 密( ) A. 是类或对象的属性 B. 只是对象的属性 C. 只是类的属性 D. 是类和友元的属性 3. 语句“int (*p)(int x, int y);”说明了p是一个指向整数的指针。( ) ——6.C++中虚基类机制可以保证,( )。 —4.能访问一个类CMyClass中的private成员的可以是类CMyClass的成员函数、友元函A.限定基类只通过一条路径派生出派生类 数或友元类中的函数。( ) B.允许基类通过多条路径派生出派生类,派生类也就能多次继承该基类 ——5.类的构造函数和析构函数一般都声明为虚函数。( ) C.当一个类多次间接从基类派生后,派生类对象能保留多份间接基类的成员 ——6.设函数fun( )是一个不属于任何类的普通函数,则在调用该函数时可以使用fun();方D.当一个类多次间接从基类派生后,其基类只被一次继承 式,或者使用::fun();方式来调用。( ) 7.如果c是一个复数类对象,为了能使语句“double d = 5.5 + c;”正确执行,只7.抽象类不会产生实例,所以不需要有构造函数。( ) 采用下列( )方法就可以。 ———8.引用实际上是隐式的指针,和指针是同一种数据类型。( ) A.定义一个重载+运算符的复数类成员函数 B.定义一个复数类转换构造函数 —C.定义一个重载+运算符的复数类友元函数 D.定义一个复数类类型转换函数 9.在MFC编程中,视图/文档类程序是通过OnDraw()函数进行进行输出的。( ) 8.一个类的析构函数通常被定义为该类的( )成员。 ——10.使用MFC编程时,可以用 Invalidate(TRUE);语句来实现把控件中数据放入对应的变A.私有 B.保护 C.友元 D.公有 —量中。( ) 9.以下哪个基类中的成员函数表示纯虚函数? ( ) —— A.virtual void fun()=0 B. void fun(int) = 0 二、单项选择题(每小题2分,共20分)(答案填在下表中) C.virtual void fun(int) D. virtual void fun(int){} —— 10.关于const型数据的描述,正确的是( )。 —1 2 3 4 5 6 7 8 9 10 A.常对象中不能定义常数据成员 B.常成员函数只能引用本类的数据成员 ——C C B D A D C或D D A B C.指向对象的常指针的值可以重新赋值 D.常对象的数据成员不一定是常数据成员 —第 1 页 共 3 页

——

号学 名纸姓 卷 试 试 级考班 学 计大设业程序工象对南向湖面 名称程课 院学通信与算机计 )院(系 ————三、简答题(每小题8分,共24分) int Student::Sum = 0; 1.什么是类?什么是对象?什么是面向对象的程序设计? int main() ——答:(评分标准:前2个知识点每个2分,后一个知识点4分。不完全正确,适当扣分,等{ Student s1(\——价写法给满分) Student s2=s1; 类:是指具有相同的属性和操作方法,并遵守相同规则的对象的集合。 cout< using namespace std; ———关闭。它与应用程序共用一个消息循环,它产生后,应用程序一样可以接收消息循环。 class Point{ — 3. 构造函数和析构函数的作用是什么?什么时候需要自己定义构造函数和析构函数? public: virtual void Draw() { cout << \} ——答:(评分标准:每个知识点各2分,不完全正确,适当扣分,等价写法给满分) virtual ~Point() { }; 线构造函数的作用:用于新建对象的初始化工作。 }; 封析构函数的作用:用于在撤销对象前,完成一些清理工作,比如:释放内存等。 class Circle: public Point { 密每当创建对象时,需要添加初始化代码时,则需要定义自己的构造函数; public: void Draw() { cout << \——对象撤销时,需要自己添加清理工作的代码时,则需要定义自己的析构函数。 ~Circle() { cout << \— 四、阅读下面程序,写出程序运行的结果。(共26分) }; class Rectangle : public Point { ——1.程序1(6分) —#include public: —#include void Draw() { cout << %using namespace std; ~Rectangle() { cout << \} class Student }; ———{public: int main(void) — string name; static int Sum; { Point *pt,vp; Circle vc; Student(string n){ name = n; Sum+=FindSum(name); pt = &vc; pt->Draw(); ——cout<<\ pt = &vp; pt->Draw(); —Student(Student &s) { name = s.name; pt = new Rectangle; pt->Draw(); delete pt; —Sum+=FindSum(name);cout<<\return 0; int FindSum(string str) } 答:程序运行结果为:(评分标准:共10分,每对一个得2分) { char *p=&str[0]; int i=0; Draw Circle. ——— while(*p++!=NULL) if((*p>='a')&&(*p<='z')) i++; Draw Point. — return i; Draw Rectangle. } Del Rectangle. ——}; Del Circle. —第 2 页 共 3 页

——

号学 名纸姓 卷 试 试 级考班 学 计大设业程序工象对南向湖面 名称程课 院学通信与算机计 )院(系 ————3. 程序3(10分) #include 五、编程题(20分) 设计一个基本账户类Account。公用的成员变量有:Num(账号,int型), Balance(余——using namespace std; 额,float型),私有的成员变量有:Name(储户姓名,string型),公用的成员函数存款,函—class Book 数原型:SaveBal(float B)。Account类的构造函数原型为: Account(int N=123,string —{ Nam=\。要求: —public: Book( ) {cout<<\(1)编写类Account及其成员函数。 (2)从Account类中派生出子账户类SubAccount,新增公有数据成员: —— Book(int size) {cout<<\SubName(子账户姓名,string型), pSub(指向子账户的指针变量,子账户类型也是int— ~Book( ) {cout<<\} }; 型,在构造函数中,判断子账户姓名不为空,则动态生成一个用该指针指向的子账户)。在该类的虚析构函数中要对 pSub进行清理。SubAccount类的构造函数原型为:SubAccount(int ——class Note N,string Nam,string SNam,float B) —{ (3)编写一个主程序,定义一个SubAccount类对象。其中: SubAccount类对象的参数—public: Note(int color=255) {cout<<\依次为:(234,\,并且对该对象存款100。 ~Note( ){cout<<\} (4)定义一个输出文件OutF.dat,把该对象的账号、子账户名和余额输出到这个文件中。 编程解答:(请注意,程序代码分2栏写在下面空白处) ———}; —class Notebook:public Book,public Note 参考代码: class SubAccount:public Account { 评分标准:写出2个类分别得7分,编出main{public: ——public: ()函数得6分。注意:程序的所有等价写法同 string SubName; 线 Notebook(int p ):member( ), Note( ),Book(p) 样给分,不完全正确酌情扣分。 int *pSub; 封 {cout<<\ SubAccount(int N,string Nam,string 密 ~Notebook( ){cout<<\} private: #include SNam,float B):Account(N,Nam,B) #include { —— Book member; #include SubName = SNam; pSub = —}; NULL; int main( ) using namespace std; if (SNam!=\ pSub = new ——{ Note n(2); class Account { int; — Notebook nb(4); private: } //参数的顺序可变 — return 0; string Name; virtual ~SubAccount(){ } public: if(pSub!=NULL) delete pSub; } int Num; }; ———答:程序运行结果为:(评分标准:共10分,每对一个得1分) —create Note:2 float Balance; int main() create Book:4 Account(int N=123,string Nam=\{ ——create Note:255 B=0.0 ) SubAccount sa1(234,\\—create Book. { sa1.SaveBal(100); —create Notebook. Num=N; ofstream f1(\delete Notebook. Name = Nam; f1<

计算机14级 面向对象程序设计 考试试卷(A卷)和 参考答卷

号学名纸姓卷试试级考班学计大设业程序工象对南向湖面名称程课院学通信与算机计)院(系————课程名称:面向对象程序设计(A卷闭卷)1.下列关于iostream的描述中,错误的是()。A.它是标准的C++头文件B.它与iostream.h是两个不同文件——C
推荐度:
点击下载文档文档为doc格式
5ll5g5r7s43gzna0fx9s
领取福利

微信扫码领取福利

微信扫码分享