华侨大学C++试卷_第1页
华侨大学C++试卷_第2页
华侨大学C++试卷_第3页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

1、实用文档华侨大学 面向对象程序设计(二) 试卷B班级 学号姓名 成绩注意:请将所有答案写在答卷上!一、填空题(15分,每小题1分)1. 如果用户自定义的函数在调用点之后再定义,则在调用点之前,必须用(1)对被调函数进行说明。2. 函数的递归调用可以有直接递归调用和(2)递归调用。3. 静态全局变量的作用域是(3)。4. 若将某函数定义为静态型(static ),则该函数只能被(4)所调用。5. main(int argc,char *argv)函数中的参数 argv 用于(5)。6. H提供了一种在程序内和程序之间组织和使用名称的技术。7. 用“con st类型标识符&弓I用名=目标变

2、量名;”声明引用,此处con st的含义是(7) <8. C+语言中,(8)定义一个结构体类型,该结构类型中包含指向自身结构类型的指针成员。(填“可以”或“不可以”)9. 若有类型定义“ typedef char STRING80; STRING s; ”,贝U s 的类型为(9)。10. 类的对象可以直接访问类中的(10)成员。(private/protected/public )11. 在定义类时,若没有为类提供析构函数,则编译系统会自动为该类创建一个默认的析构函数,其形式为(11)。12. 拷贝构造函数的功能是实现对象值的拷贝,通过将一个同类对象的值拷贝给一个新对象,来完成对新对象

3、的初始化。定义一个拷贝构造函数的方式是(12)。13. 当希望一个类(如 A)可以存取另一个类(如 B)的私有成员时,可以将该类(A)声明为另一类(B)的友元类,友元类(A)的所有成员函数都可视为该类(£)的(13)函数。14. 在静态成员函数的实现中不能直接引用类中说明的非静态成员,但可以引用类中说明的(14)成员。15. C+支持两种不同类型的多态:一种是编译时的多态,另一种是(15)时的多态。二、选择题(18分,每小题2分)1. 进行文件操作时,需要包含(1) _文件。A)iostream B ) fstream C ) stdio.h D ) stdlib.h2. 若有定义:

4、 enum Weekday sun=7,mon=1,tue,wed,thu,fri,sat day;,以下正确的语句是(2)。A)mon+; B)i nt k=mo n+1; C) day=7; D)day+;3. 若有定义:int (*p)(int,int);,则错误的叙述是(3)。A) p是一个指向返回值类型为int,带有两个int型参数的函数的指针B) 该类型的变量p可以作为另外一个函数的参数C) 若已定义了函数int Sum(int x,int y),则p可以指向函数 SumD) p可以作自增运算p+4. 若已有定义:structStudent char *name,int age,f

5、loat mark;s8;Student* p=s;,以下语句(组),正确的是(4)。A) cin> >s0. name»sO.age»sO.mark;B) cin> >p_>age>>p_>mark;p_ >n ame="Liuhua"C) s1. name=new char10;strcpy(p->n ame, "Liuhua");D) p->n ame=new char10; strcpy(p->n ame, "Liuhua");5. 若

6、有定义:int a,b;,下面引用变量的声明中,(5)是正确的。A) int& ra=a; int& &rra=ra; B) int& y=10;C) int& z=i nt;D) int &x=a; int &y=b;6. 对于下面定义的类 Myclass,在函数f中可以将对象 obj的成员data值修改为50的语 句是(6)。class Myclasspublic:Myclass(i nt x) data=x; void SetNum(i nt value) data=value; private:int data;void f(vo

7、id)Myclass obj(45),*ptr=&obj;(6)A) obj.data=50; B)obj.Myclass(50); C)ptr->SetNum(50); D)ptr->data=50;7. 下面叙述正确的是(7)。A)基类的protected成员不能被派生类的成员函数访问B)基类的public成员能被派生类的对象直接访问C)基类的protected 成员在派生类中可能是 privated 的D)基类的private成员不能被基类的成员函数访问8. 构造函数不具备的特征的是(8)B)构造函数可以重载D)构造函数可以设置默认参数B)基类指针可以指向基类对象D)

8、派生类指针可以指向基类对象A)构造函数的函数名与类名相同C)构造函数必须有返回值类型9. 下面叙述错误的是(9)。A)基类指针可以指向派生类对象C)派生类指针可以指向派生类对象三、阅读程序题(45分)1. 阅读下面程序,给出程序的运行结果。(15分,每小题5分)1)#in clude<iostream>using n amespace std;void Fun (i nt x,i nt *py,i nt& z)x+; (*py)-; z*=2; cout<<"x="<<x<<","<<&

9、quot;*py="<<*py<<","<<"z="<<z<<e ndl;void mai n(void)int a=1,b=2,c=3;Fun (a,& b,c); cout<<"a="<<a<<","<<"b="<<b<<","<<"c="<<c<<e ndl;2)#i

10、n clude<iostream>using n amespace std;void P(i nt w)if (w=0) retur n;P(w-1);cout<<w;P(w-1);void mai n(void) P(3); 3)#in clude<iostream>using n amespace std;void prin t(i nt, in t,i nt (*p_fu n)(i nt, in t);int add(i nt,i nt);int substract(i nt,i nt);void mai n(void)int a=10,b=-20,C

11、hoice;in t(*p)(i nt,i nt);cout<<"E nter your choice:"cin> >Choice;switch(Choice)case 1: p=add; break;default: p=substract;prin t(a,b,p);int add(i nt x,i nt y)retur n x+y; int substract(i nt x,i nt y) retur n x-y; void prin t(i nt i,i nt j,i nt (*p_fu n)(i nt,i nt) cout<<&

12、quot;The result is "<<p_fu n(i,j)<<e ndl;实用文档程序运行时:En ter your Choice:12. 阅读下面程序,回答相关问题。(30分)1) ( 7 分)#in elude <iostream>using n amespace std;struct Stude ntint num;char n ame20;char sex;int age;void mai n(void)Student* Fun(Student *,int);Stude nt stu= 11,"lili n" ,

13、'M',18,3,"su nn y",'M',24,2,"zhao",'M',20, 4,"Liu yanhong",'F',30;int size=sizeof(stu)/sizeof(Stude nt);Stude nt *p=Fun( stu,size);cout<<p->nu m<<'t'<<p->n ame<<'t'<<p->age<<e n

14、dl;Student* Fun(Student *s, int n) /问题 a 和 bint in dex=0,i;for(i=1;i< n; i+)if(si. num >si ndex. num) in dex=i;retur n s+in dex;a) (3分)给出函数Fun()的功能;b) ( 4分)若将函数 Student* Fun(Student *s, int n)的返回值类型改为Student& ,要完成相同的功能,给出源程序中其它需要修改的语句并作相应的修改。2) ( 6 分)#in clude<iostream>using n amespa

15、ce std;class Stude ntchar* n ame;int age;float score;public:Stude nt(char* n ,i nt a,float s):age(a),score(s)cout<<"c on struct in g."< <n<<en dl;n ame=new charstrle n(n )+1;strcpy( name, n);Stude nt()cout<<"destruct in g."< <n ame<<e ndl; dele

16、te n ame;;void mai n(void)Student s("Liu",18,86.5);Student *p_st1= new Student("Chen",18,86.5);delete p_st1; /问题 b)a) ( 4分)给出程序的运行结果;b) ( 2分)若去掉语句 delete p_st1;,程序运行结果会不同吗?3) ( 9 分)#in clude<iostream>using n amespace std;class Poi ntprivate:char *n ame;float X,Y;public:Poi

17、nt(char* s,float a,float b)X=a;Y=b;n ame=new charstrle n( s)+1;strcpy( names);cout<<"I nitializ ing Poin t: " <<n ame<<", X="<<X<<",丫="<<Y<<e ndl;Point(Point &p);float GetX() return X; float GetY() return Y; void Show() cout

18、<<" name:"<< name<<", X="<<X<<",Y="<<Y<<e ndl; Poin t()cout<<"deleti ng Poi nt: "< <n ame<<", "<<X<<","<<Y<<e ndl; delete n ame;class LinePoint p1,p2;public

19、:Lin e(char* pin ame,float x1,float y1,char* p2n ame,float x2, float y2):p1(p1 name,x1,y1),p2(p2 name,x2,y2) cout<<"L ine con structor."<<e ndl;实用文档Li ne()cout<<"L ine destructor."<<e ndl;;Point:Point(Point &p) /问题 bn ame=new charstrle n(p.n ame)+1;str

20、cpy (n ame,p .n ame);X=p.X;Y=p.Y;cout<<"Copi ng Poi nt: "<<p. name<<","<<X<<","<<Y<<e ndl;void fun( Poi nt p)p.Show(); void mai n(void)Poi nt A("objA",12,24);fun( A);Line L1("p1",1,2,"p2",3,4);a) (

21、6分)给出程序的运行结果;b) ( 3分)给出拷贝构造函数Point(Point &p)的功能。是否可以去掉该函数?4) (8 分)#in clude<iostream>using n amespace std;class Basepublic:int Bvalue;Base( in t v)Bvalue=v;cout<<"Base con structor."<<e ndl;int getBvalue() retur n Bvalue; ;class D1:public Basepublic:int D1value;D1(int

22、 v,int b):Base(v)D1value=b;cout<<"D1 con structor."<<e ndl;in t getD1value() return D1value; ;class D:public D1实用文档void Simplify(void) /对分数的分子和分母进行化简public :int Dvalue;int getDvalue() retur n Dvalue; D(i nt v1,i nt v2,i nt a):D1(v1,v2)Dvalue=a;cout<<"D con structor.&

23、quot;<<e ndl;void mai n(void)D obj(1,2,3);cout<<obj.getDvalue()<<e ndl; cout<<obj.getBvalue()<<e ndl; / cout<<obj.getD1value()<<e ndl;问题b)a)( 6分)给出程序的运行结果;b)( 2 分)能否将表达式 obj.getBvalue() 改为 obj.Bvalue?四、编程题(22分)1. 一个简单分数类的结构如下,请补充相应代码,使之完成程序功能。#in clude<io

24、stream.h> int gcd(i nt m,i nt n) /(1)完成求两个数的最大公因数(5分)class Fractio nalNumber /分数int nu merator;/分子int denomin ator; /分母public:Fracti on alNumber(i nt n=0,i nt d=1) /5分)Fractio nalNumber()cout<<"Destructor is called."<<e ndl;Fract ion alNumber(c onst Fract ion alNumber& x

25、) nu merator=x .nu merator;denomin ator=x.de nomin ator;Simplify。;cout<<"Copy con structor is called."<<e ndl;实用文档int g=gcd(de nomin ator, nu merator);nu merator/=g;denomin ator/=g;void Output() cout <<n umerator<<"/"<<de nomi nator<<e ndl; /分数

26、的输出void add(const FractionalNumber& x) /分数的加法(5 分)?friend Fract ion alNumber operator+(Fract ion alNumber& nu m1,Fractio nalNumber& nu m2); /友元函数的声明;/类定义结束Fract ion alNumber operator+(Fract ion alNumber& nu m1,Fract ion alNumber& nu m2)int n result,dresult;dresult=nu m1.de nomin

27、ator* nu m2.de nomin ator;n result=nu m1. nu merator* nu m2.de no mi nator+nu m1.de nomin ator* nu m2, nu merator;retur n Fract ion alNumber( nresult,dresult);void mai n(void)/设计测试程序,创建类对象,使用output() 、add()和运算符 +'(7分)?/end of main()华侨大学 面向对象程序设计(二) 答卷姓名学号成绩一、填空题(15分,每小题1分)(1)(2)(3)(4)(5)(6)(7)(8

28、)(9)(10)(11)(12)(13)(14)(15)二、选择题(18分,每小题2分)(1)(3)(5)_(Z)(8)_(9)三、阅读程序题(45分)1阅读下面程序,给出程序的运行结果。(15分,每小题5分)1)运行结果:2)运行结果:3)运行结果:(30 分)2.阅读下面程序,回答相关冋题1)( 7 分)a) (3分)函数Fun()的功能:b) (4分)需要修改:2)( 6 分)a)(4分)运行结果:b)(2 分)3)( 9 分)a) ( 6分)运行结果:b) (3 分)4)(8 分)1)( 6分)运行结果:四、编程题(22分)1. 一个简单分数类的结构如下,请补充相应代码,使之完成程序功

29、能。5分)in t gcd(i nt m,i nt n) /( 1)完成求两个数的最大公因数(Fract ion alNumber(i nt n=0,i nt d=1) /完成构造函数的实现(5分)void add(const FractionalNumber& x) /分数的加法(5 分)void mai n(void)/设计测试程序,创建类对象,使用output()、add()和运算符 +' (7 分)/end of mai n()参考答案、填空题(15分,每小题1分)实用文档(1 )函数原型 (2)间接 (3)定义它所在的源程序文件(4)定义该函数的源程序所在文件的其他函

30、数(5)指针数组中各元素分别指向命令行中的各个字符串(6)命名空间(7 )引用的目标变量是常量(8) 可以 9. 字符数组 lO.public 11.类名12.类名(con st类名&对象名) 13 .友元函数14.静态15.运行二、选择题(18分,每小题2分)(1) B(2)B( 3)D(4)D( 5)D( 6)C( 7)C( 8)C ( 9) D三、阅读程序题(45分)1阅读下面程序,给出程序的运行结果。(15分,每小题5分)1)CA: Document s and S. - - 口回x=2, *py-l ,a=6 a=l,b=lc -6Fpess anv key to conti

31、nue2) 1 2 1 3 1 2 13)oiDocusents and.-二 xllEnter* youlj* clioi匚薜士The result is -10 Press any key to cont1A*Ld 1Jd2.阅读下面程序,回答相关冋题。(30分)1) (7 分)a) 函数返回最大学号的学生指针;b) 需要修改的地方:Stude nt& Fun( Stude nt *,i nt);修改 1Student p=Fun(stu,size); /修改 2修改3cout<<p .num <<'t'<<p .n ame<

32、;<'t'<<p.age<<e ndl; return sindex;/修改 42) (6 分)a)c: *C: Docu»ents and.constructing.Liu constructing Chen JdEsti'uct zin - Chen destructinQ(. . .Liu. Press £iny key to continueb)去掉语句后,结果不同:小 *C: Dccu»ents and bonstpuctingr.-Liu. .Chendestructing _.*Liu Fress anj/ key to continue_ X3) ( 9 分)a)cv -C:Docu*ents and Settings£d>.lxInitializing Poi

温馨提示

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

评论

0/150

提交评论