华侨大学C试卷

上传人:沈*** 文档编号:62271754 上传时间:2022-03-14 格式:DOC 页数:25 大小:175KB
收藏 版权申诉 举报 下载
华侨大学C试卷_第1页
第1页 / 共25页
华侨大学C试卷_第2页
第2页 / 共25页
华侨大学C试卷_第3页
第3页 / 共25页
资源描述:

《华侨大学C试卷》由会员分享,可在线阅读,更多相关《华侨大学C试卷(25页珍藏版)》请在装配图网上搜索。

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) s0. namesO.agesO.mark;B) cin p_agep_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. 若有定义: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. 对于下面定义的类 Myclas

3、s,在函数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(void)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成员

4、能被派生类的对象直接访问C)基类的protected 成员在派生类中可能是 privated 的D)基类的private成员不能被基类的成员函数访问8. 构造函数不具备的特征的是(8)B)构造函数可以重载D)构造函数可以设置默认参数B)基类指针可以指向基类对象D)派生类指针可以指向基类对象A)构造函数的函数名与类名相同C)构造函数必须有返回值类型9. 下面叙述错误的是(9)。A)基类指针可以指向派生类对象C)派生类指针可以指向派生类对象三、阅读程序题(45分)1. 阅读下面程序,给出程序的运行结果。(15分,每小题5分)1)#in cludeusing n amespace std;void

5、Fun (i nt x,i nt *py,i nt& z)x+; (*py)-; z*=2; coutx=x,*py=*py,z=ze ndl;void mai n(void)int a=1,b=2,c=3;Fun (a,& b,c); couta=a,b=b,c=ce ndl;2)#in cludeusing n amespace std;void P(i nt w)if (w=0) retur n;P(w-1);coutw;P(w-1);void mai n(void) P(3); 3)#in cludeusing n amespace std;void prin t(i nt, in t

6、,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,Choice;in t(*p)(i nt,i nt);cout 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

7、(i nt i,i nt j,i nt (*p_fu n)(i nt,i nt) coutThe result is p_fu n(i,j)e ndl;程序运行时:En ter your Choice:12. 阅读下面程序,回答相关问题。(30分)1) ( 7 分)#in elude 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 ,M,18,3,su nn y

8、,M,24,2,zhao,M,20, 4,Liu yanhong,F,30;int size=sizeof(stu)/sizeof(Stude nt);Stude nt *p=Fun( stu,size);coutnu mtn ametagee ndl;Student* Fun(Student *s, int n) /问题 a 和 bint in dex=0,i;for(i=1;isi ndex. num) in dex=i;retur n s+in dex;a) (3分)给出函数Fun()的功能;b) ( 4分)若将函数 Student* Fun(Student *s, int n)的返回值

9、类型改为Student& ,要完成相同的功能,给出源程序中其它需要修改的语句并作相应的修改。2) ( 6 分)#in cludeusing n amespace std;class Stude ntchar* n ame;int age;float score;public:Stude nt(char* n ,i nt a,float s):age(a),score(s)coutc on struct in g. nen dl;n ame=new charstrle n(n )+1;strcpy( name, n);Stude nt()coutdestruct in g. n amee ndl

10、; delete 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 cludeusing n amespace std;class Poi ntprivate:char *n ame;float X,Y;public:Poi nt(char* s,float a,float b)X=a;Y=b

11、;n ame=new charstrle n( s)+1;strcpy( names);coutI nitializ ing Poin t: n ame, X=X,丫=Ye ndl;Point(Point &p);float GetX() return X; float GetY() return Y; void Show() cout name: name, X=X,Y=Ye ndl; Poin t()coutdeleti ng Poi nt: n ame, X,Ye ndl; delete n ame;class LinePoint p1,p2;public:Lin e(char* pin

12、 ame,float x1,float y1,char* p2n ame,float x2, float y2):p1(p1 name,x1,y1),p2(p2 name,x2,y2) coutL ine con structor.e ndl;Li ne()coutL ine destructor.e ndl;;Point:Point(Point &p) /问题 bn ame=new charstrle n(p.n ame)+1;strcpy (n ame,p .n ame);X=p.X;Y=p.Y;coutCopi ng Poi nt: p. name,X,Ye ndl;void fun(

13、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) ( 6分)给出程序的运行结果;b) ( 3分)给出拷贝构造函数Point(Point &p)的功能。是否可以去掉该函数?4) (8 分)#in cludeusing n amespace std;class Basepublic:int Bvalue;Base( in t v)Bvalue=v;coutBase con structor.e ndl;int getBvalue() retur n Bvalue; ;c

14、lass D1:public Basepublic:int D1value;D1(int v,int b):Base(v)D1value=b;coutD1 con structor.e ndl;in t getD1value() return D1value; ;class D:public D1public :int Dvalue;int getDvalue() retur n Dvalue; D(i nt v1,i nt v2,i nt a):D1(v1,v2)Dvalue=a;coutD con structor.e ndl;void mai n(void)D obj(1,2,3);co

15、utobj.getDvalue()e ndl; coutobj.getBvalue()e ndl; / coutobj.getD1value()e ndl;问题b)a)( 6分)给出程序的运行结果;b)( 2 分)能否将表达式 obj.getBvalue() 改为 obj.Bvalue?四、编程题(22分)1. 一个简单分数类的结构如下,请补充相应代码,使之完成程序功能。#in clude int gcd(i nt m,i nt n) /(1)完成求两个数的最大公因数(5分)class Fractio nalNumber /分数int nu merator;/分子int denomin ato

16、r; /分母public:Fracti on alNumber(i nt n=0,i nt d=1) /5分)Fractio nalNumber()coutDestructor is called.e ndl;Fract ion alNumber(c onst Fract ion alNumber& x) nu merator=x .nu merator;denomin ator=x.de nomin ator;Simplify。;coutCopy con structor is called.e ndl;int g=gcd(de nomin ator, nu merator);nu mera

17、tor/=g;denomin ator/=g;void Output() cout n umerator/de nomi natore ndl; /分数的输出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 alNu

18、mber& nu m2)int n result,dresult;dresult=nu m1.de nomin 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()华侨大学 面向对象程序设计

19、(二) 答卷姓名学号成绩一、填空题(15分,每小题1分)(1)(2)(3)(4)(5)(6)(7)(8)(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)

20、( 6分)运行结果:四、编程题(22分)1. 一个简单分数类的结构如下,请补充相应代码,使之完成程序功能。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

21、)间接 (3)定义它所在的源程序文件(4)定义该函数的源程序所在文件的其他函数(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

22、 a=l,b=lc -6Fpess anv key to continue2) 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修改3coutp .num tp .n ametp.age.

23、lxInitializing Point: obJA, X=12 ,Y=24 Coping Point: objA,1224 name :oJbJ, X =12, V=24 deleting Point: obJA, 12,24Initialiing Point: I nit ializinr Po int: Line constructarv Line destructor.de let in Fo int : p2 P deleting Point : pl,pl, X=1 ,?=2 p2, X=3 ,V=41,de let in Point: ohJA, 12,24 Press an9

24、k即 to continu.eHb)拷贝构造函数Point(Point&p)实现点类对象的拷贝。不能去掉该函数。否则会因“浅拷贝”出现异常。4)(8 分) 丨 ,b)可以。四、编程题(22分)1. 一个简单分数类的结构如下,请补充相应代码,使之完成程序功能。int gcd(int m,int n) /求最大公因数 5分if(m%n=0) return n;return gcd( n,m%n);FractionalNumber(int n=0,int d=1) /完成构造函数的实现 -5 分nu merator =n;denomin ator=d;Simplify。;coutC on struc

25、tor is called.e ndl;void add(const FractionalNumber& x) /分数的加法5 分int a=x .nu merator,b=x.de nomin ator;int c=nu merator,d=de nomin ator;nu merator=c*b+a*d;denomin ator=b*d;Simplify();void mai n(void)II设计测试程序,创建类对象,使用output()、add()和运算符 +(7 分)Fracti on alNumber f1(10,50),f2(2,10),f3(20,5);f1.Output(); f2.Output();f3.Output();coute ndl;f1.add(f3);f1.Output();coute ndl;f3=f2+f1;f3.Output();实用文档

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!