华工C++II试卷及答案_第1页
华工C++II试卷及答案_第2页
华工C++II试卷及答案_第3页
华工C++II试卷及答案_第4页
华工C++II试卷及答案_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

1、;. 诚信应考 ,考试作弊将带来严重后果!华南理工大学期末考试高级语言程序设计(2)试卷 a号位座 注意事 : 1.考前 将密封 内各 信息填写清楚;2.所有答案写在答 上,答在其它地方无效;线3. 卷可做草稿 , 卷必 与答 同 提交;4考 形式: 卷;5.本 卷共五大 , 分 100 分,考 120 分 。 一 . 单项选择题 (每题 2 分, 共 20 分)_业专)封题 答 院 不 学内 线 封 密 (号学密1在 c+中,有关 和 象正确 法是( a ) 。a 象是 的一个 例b 象是 的存 空 c一个 只能有一个 象d 是程序包, 象是存 空 2在 定 中,称 接口的成 是(c ) 。

2、a. 所有 成 b. private或 protected 的 成 c. public 的 成 d. public或 private 的 成 3. 一个 的友 函数能 通 ( d ) 的所有成 。a静 数据b析构造函数c this指 d 象参数4. 下面描述 的是 ( b ) 。a自定 构造函数 是公有成 函数b 构造函数可以是虚函数c构造函数在建立 象 自 用 行d 构造函数可以重 5.在 的 承关系中,基 的(b)成 在派生 中可 。a. 所有b. public和 protectedc. 只有 publicd. 只有 protected6 b 是 a 的派生 ,有 明 句a a, *ap;

3、 b b, *bp; 以下正确 句是(c)。a. a=b;b. b=a;c. ap=&b;d. bp=&a;7 c+中,以下(d) 法形式不属于运行 的多 。a. 根据 if 句的求 决定程序流程b.根据基 指 指向 象 用成 函数c. 根据 switch 句的求 决定程序流程d.根据参数个数、 型 用重 函数8.假 a 定 一个重 “+”号运算符的成 函数, 以便 两个a 象的加法,并返回相加 果, 成 函数的函数原型 (b )。a a operator+( const a &a1, consta &a2 );b a a:operator+( consta &a2 );c a:operato

4、r +( a &a2 );d a a:operator +( );9. 一个 模板定 了静 数据成 , ( a ) 。a每一个 例化的模板 都有一个自己的静 数据成 。b每一个 例化的 象都有一个自己的静 数据成 。c它的 型必 是 模板定 的抽象 型。d所有模板 的 象公享一个静 数据成 。10 一个 c+数据文件,要 建一个(a )流 象。a ifstreamb ofstreamc cind cout名 二简答题 (每小题 4 分,共 20 分)姓 ;.;.1有右图所示类格。 类 x 中有数据成员 int a 。根据以下函数注释的编译信息,分析int x:a的访问特性, class y 对

5、 class x 和 class z 对 class y 的继承性质。void y:funy() coutaendl; / 正确class xvoid z:funx() coutaendl; / 错误void main() x x; y y; z z;class ycoutx.aendl;/正确couty.aendl;/错误class zcoutz.aendl;/错误int x:a是 class x的 public数据成员, class y 为 protected继承 class x,classz 为 private继承 class y 。2有人定义一个教师类派生一个学生类。他认为“姓名”和“

6、性别”是教师、学生共有的属性,声明为 public, “职称”和“工资”是教师特有的,声明为 private 。在学生类中定义特有的属性“班级”和“成绩” 。所以有class teacher public:char name20; char sex;private:char title20; double salary;class student : public teacher private:char grade20 ; int score; ;你认为这样定义合适吗?请做出你认为合理的类结构定义。class person public:char name20; char sex;class

7、 teacher : public person private:char title20; double salary;class student : public person private:char grade20 ; int score;3有类定义class test int a,b; public:test ( int m, int n ) a=m; b=n; void set( int m, int n ) a=m; b=n; ;.;./ ;有人 “ test 和 set 函数的功能一 , 只要定 其中一个就 了”。 种 法正确 ? 什么? 参数的构造函数用于建立 象数据初始化,

8、成 函数用于程序运行 修改数据成 的 。4若有声明template class tclass /* */ ;建立一个tclass 象用以下 句tclass tobj;有 ?若出 , 分析原因,并写出一个正确的 明 句。没有 例化 属参数。tclass tobj;5 c+ 的文本文件可以用binary 方式打开 ?若有以下 句fstream of(d:testfile, ios:out|ios:binary);double pi=3.1415; 写出把 pi 的 写入文件d:testfile 末尾的 句。可以。of.seekp(0,ios:end);of.write(char*)&pi, siz

9、eof(double);三 . 阅读下列程序 , 写出执行结果 (每题 6 分, 共 24 分)1.#include / 运算符重 enum boolconst false=0 , true=1 ;/ 定 枚 型class boolean public:boolean(boolconst x = false) logic = x; void print() const logic? cout true : cout false ; friend boolean operator +(const boolean & obj1, const boolean & obj2); friend bool

10、ean operator *(const boolean & obj1, const boolean & obj2);protected:boolconst logic;boolean operator+ ( const boolean & obj1, const boolean & obj2 ) return (obj1.logic|obj2.logic)?boolean(true):boolean(false); boolean operator* ( const boolean & obj1, const boolean & obj2 ) return (obj1.logic & obj

11、2.logic) ? boolean(true) : boolean(false); void main() boolean a(false), b(true), c, d ; c = a * b; d = a + b;a.print(); b.print(); c.print(); d.print(); coutendl;falsetruefalsetrue2.;.;.#include / 模板,静态数据成员template class list public:list(t x=0) data = x; void append(list *node ) node-next=this; nex

12、t=null; total+; list *getnext() return next; t getdata() return data; static int total;private:t data; list *next;template int list:total=0;void main() int i, n=5;list headnode; list *p, *last; last = &headnode;for( i=1; i=n; i+ ) p = new list(i*2); p-append( last ); last = p; p = headnode.getnext()

13、;while( p ) cout getdata() getnext(); coutendl;couttotal=list:totalendl;2 4 6 8 10 total=53.#include/ 类成员#includeclass point public:point(int x1=0, int y1=0) x = x1; y = y1; coutpoint构造函数 n; int getx() return x; int gety() return y; private:int x;int y;class distance public:distance(point xp1, point

14、 xp2);.;.double getdis() return dist; private:point p1;point p2;double dist;distance:distance(point xp1, point xp2): p1(xp1), p2(xp2) coutdistance构造函数 n;double x = double(p1.getx() - p2.getx();double y = double(p1.gety() - p2.gety();dist = sqrt(x * x + y * y);void main() point myp1(0,0), myp2(0,20);

15、 distance mydist(myp1,myp2);coutthe distance is mydist.getdis()endl;point 构造函数point 构造函数distance构造函数the distance is 204. 写出 data.txt 中的结果和屏幕显示的结果。#include void main() int a=10; double x=50.5;char str10, fname20 = d:data.txt; fstream iofile(fname,ios:out); if(!iofile) return; iofiledata:ta+10 xstrax;

16、 coutstring=strna=a, x= xendl;? data.txtdata: 2050.5输出string=data:a=20, x=50.5四 .根据程序输出填空。(每空 2 分 , 共 24 分)1./ 成员和友员#include;.;.class time public:time(int h, int m)hours=h; minutes=m;_(1)_ time12();void_(2)_ time24(time time);friend voidprivate: int hours, minutes;_(3)_ time12()void time:if(hours12)

17、 couthours-12:minutespmn ; elsecouthours:minutesamn ;void time24(time time) cout _(4)_ ;time.hours:time.minutesnvoid main()time t1(20,30), t2(10,45);t1.time12(); time24(t1); t2.time12(); time24(t2);程序输出:8:30pm20:3010:45am10:452./ 虚继承#includeclass a public:a(const char *s)coutst;a();class b: (5) a vi

18、rtual public public:b(const char *s1, const char *s2):a(s1)couts2t;class c: (6) virtual public a public:c(const char *s1, const char *s2):a(s1) couts2t;class d:public b, public c public:d(const char *s1,const char *s2,const char *s3,const char *s4):(7)a(s1),b(s1,s2),c(s1,s3)couts4t;.;.void main() d

19、*ptr=new d(class a,class b,class c,class d); delete ptr;程序输出:class aclass bclass cclass d3.#include/ 继承#includeclass studentid public:studentid _(8)_/(int d=0)构造函数的默认参数 value=d; coutvaluet; ; protected:int value; ;class student : public studentid public:student_(9)_(char*pname=no name,intssid=0):stu

20、dentid(ssid) strncpy(name, pname, sizeof(name); namesizeof(name)-1=0; coutnamen; ;protected:char name20;void main() student s1(ranry,9818) , s2(jenny), s3; 程序输出:9818ranry0 jenny0 no name4./ 多态#include class p_class int num ; public :void set_num( int val ) num=val; void show_num( ) ;void p_class : show_num( ) coutnum t;void main() p_class ob3, *p ;.;.for( int i=0; ishow_num( );p=ob(11); p-show_num( );p=ob+2(12); p-show_num( );p=ob+1程序输出:154530五、完成程序。(第 1 小题 4 分,第 2 小题 8 分,共 12 分)1根据程序输出,以最小形式补充a 类和 b 类的成员函数。#include class a public :/a 类的成员函数virtual a()couta_object destroyed.n;class b :

温馨提示

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

评论

0/150

提交评论