版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实用文档华侨大学 面向对象程序设计(二) 试卷b 班 级 学 号 姓 名 成 绩 注意:请将所有答案写在答卷上!一、填空题(15分,每小题1分)1. 如果用户自定义的函数在调用点之后再定义,则在调用点之前,必须用(1)对被调函数进行说明。2. 函数的递归调用可以有直接递归调用和(2)递归调用。3. 静态全局变量的作用域是(3) 。4. 若将某函数定义为静态型(static),则该函数只能被(4)所调用。5. main(int argc,char *argv)函数中的参数argv用于(5) 。6. (6)提供了一种在程序内和程序之间组织和使用名称的技术。7. 用“const 类型标识符&
2、 引用名=目标变量名;”声明引用,此处const的含义是(7) 。8. c+语言中,(8)定义一个结构体类型,该结构类型中包含指向自身结构类型的指针成员。(填“可以”或“不可以”)9. 若有类型定义“typedef char string80; string s;”,则s的类型为(9) 。10. 类的对象可以直接访问类中的(10)成员。(private/protected/public)11. 在定义类时,若没有为类提供析构函数,则编译系统会自动为该类创建一个默认的析构函数,其形式为(11) 。12. 拷贝构造函数的功能是实现对象值的拷贝,通过将一个同类对象的值拷贝给一个新对象,来完成对新对象
3、的初始化。定义一个拷贝构造函数的方式是(12) 。13. 当希望一个类(如a)可以存取另一个类(如b)的私有成员时,可以将该类(a)声明为另一类(b)的友元类,友元类(a)的所有成员函数都可视为该类(b)的(13)函数。14. 在静态成员函数的实现中不能直接引用类中说明的非静态成员,但可以引用类中说明的(14)成员。15. c+支持两种不同类型的多态:一种是编译时的多态,另一种是(15)时的多态。二、选择题(18分,每小题2分)1. 进行文件操作时,需要包含(1)_文件。 a) iostream b) fstream c) stdio.h d) stdlib.h 2. 若有定义:enum we
4、ekday sun=7,mon=1,tue,wed,thu,fri,sat day;,以下正确的语句是(2) 。a) mon+; b)int k=mon+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可以指向函数sum。d) p可以作自增运算p+4. 若已有定义:struct student char *name,int age,float
5、mark;s8; student* p=s;,以下语句(组),正确的是(4) 。a) cin>>>>s0.age>>s0.mark; b) cin>>p->age>>p->mark;p->name="liuhua" c) =new char10;strcpy(p->name, "liuhua"); d) p->name=new char10; strcpy(p->name, "liuhua");5若有定义:int
6、 a,b;,下面引用变量的声明中,(5)是正确的。a) int& ra=a; int& &rra=ra; b) int& y=10; c) int& z=int; d) int &x=a; int &y=b;6 对于下面定义的类myclass,在函数f中可以将对象obj的成员data值修改为50的语句是(6)。class myclass public: myclass(int x) data=x; void setnum(int value) data=value; private: int data;void f(void) mycla
7、ss 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) 。 a) 构造函数的函数名与类名相同 b)构造函数可以重载 c) 构造函数必须有返回值
8、类型 d)构造函数可以设置默认参数9. 下面叙述错误的是(9) 。a) 基类指针可以指向派生类对象 b) 基类指针可以指向基类对象c) 派生类指针可以指向派生类对象 d) 派生类指针可以指向基类对象 三、阅读程序题(45分)1.阅读下面程序,给出程序的运行结果。(15分,每小题5分)1) #include<iostream>using namespace std;void fun(int x,int *py,int& z) x+; (*py)-; z*=2; cout<<"x="<<x<<","&l
9、t;<"*py="<<*py<<","<<"z="<<z<<endl;void main(void) int a=1,b=2,c=3; fun(a,&b,c); cout<<"a="<<a<<","<<"b="<<b<<","<<"c="<<c<<endl;
10、2) #include<iostream>using namespace std;void p(int w) if (w=0) return; p(w-1); cout<<w; p(w-1); void main(void) p(3); 3)#include<iostream>using namespace std;void print(int,int,int (*p_fun)(int,int);int add(int,int);int substract(int,int);void main(void) int a=10,b=-20,choice; int
11、(*p)(int,int); cout<<"enter your choice:" cin>>choice; switch(choice) case 1: p=add; break; default: p=substract; print(a,b,p);int add(int x,int y) return x+y; int substract(int x,int y) return x-y; void print(int i,int j,int (*p_fun)(int,int) cout<<"the result is &q
12、uot;<<p_fun(i,j)<<endl; 程序运行时:enter your choice:12.阅读下面程序,回答相关问题。(30分)1)(7分)#include <iostream>using namespace std;struct studentint num;char name20;char sex;int age;void main(void) student* fun(student *,int);student stu= 11,"lilin",'m',18,3,"sunny",
13、9;m',24, 2,"zhao",'m',20, 4,"liu yanhong",'f',30 ;int size=sizeof(stu)/sizeof(student);student *p=fun(stu,size);cout<<p->num<<'t'<<p->name<<'t'<<p->age<<endl;student* fun(student *s, int n) /问题a和bint
14、 index=0,i;for(i=1;i<n;i+)if(si.num>sindex.num) index=i;return s+index;a) (3分)给出函数fun()的功能;b) (4分)若将函数student* fun(student *s, int n)的返回值类型改为student& ,要完成相同的功能,给出源程序中其它需要修改的语句并作相应的修改。2)(6分)#include<iostream>using namespace std;class student char* name; int age; float score; public: s
15、tudent(char* n,int a,float s):age(a),score(s) cout<<"constructing."<<n<<endl; name=new charstrlen(n)+1; strcpy(name,n); student() cout<<"destructing."<<name<<endl; delete name;void main(void) student s("liu",18,86.5); student *p_st1=n
16、ew student("chen",18,86.5); delete p_st1; /问题b)a)(4分)给出程序的运行结果; b)(2分)若去掉语句delete p_st1;,程序运行结果会不同吗?3)(9分)#include<iostream>using namespace std;class point private: char *name; float x,y;public: point(char* s,float a,float b) x=a;y=b;name=new charstrlen(s)+1;strcpy(name,s); cout<&
17、lt;"initializing point: "<<name<<", x="<<x<<" ,y="<<y<<endl; point(point &p); float getx() return x; float gety() return y; void show() cout<<"name:"<<name<<", x="<<x<<",y=&qu
18、ot;<<y<<endl; point() cout<<"deleting point: "<<name<<", "<<x<<","<<y<<endl; delete name; ;class linepoint p1,p2;public:line(char* p1name,float x1,float y1,char* p2name,float x2,float y2):p1(p1name,x1,y1),p2(p2name,x
19、2,y2)cout<<"line constructor."<<endl;line()cout<<"line destructor."<<endl;point:point(point &p) /问题b name=new charstrlen()+1; strcpy(name,); x=p.x; y=p.y; cout<<"coping point: "<<<<","<<x<
20、;<","<<y<<endl;void fun(point p) p.show(); void main(void) point a("obja",12,24); fun(a); line l1("p1",1,2,"p2",3,4);a)(6分)给出程序的运行结果;b)(3分)给出拷贝构造函数point(point &p)的功能。是否可以去掉该函数?4)(8分)#include<iostream>using namespace std;class basepubli
21、c:int bvalue;base(int v)bvalue=v;cout<<"base constructor."<<endl;int getbvalue() return bvalue; ;class d1:public basepublic:int d1value;d1(int v,int b):base(v)d1value=b;cout<<"d1 constructor."<<endl;int getd1value() return d1value; ;class d:public d1public
22、 :int dvalue;int getdvalue() return dvalue; d(int v1,int v2,int a):d1(v1,v2)dvalue=a;cout<<"d constructor."<<endl;void main(void)d obj(1,2,3);cout<<obj.getdvalue()<<endl; cout<<obj.getbvalue()<<endl; /问题b) cout<<obj.getd1value()<<endl;a)(6分)给
23、出程序的运行结果;b)(2分)能否将表达式obj.getbvalue()改为obj.bvalue?四、编程题(22分)1. 一个简单分数类的结构如下,请补充相应代码,使之完成程序功能。#include<iostream.h>int gcd(int m,int n) /(1)完成求两个数的最大公因数(5分) ?class fractionalnumber /分数类的定义int numerator; /分子int denominator; /分母public:fractionalnumber(int n=0,int d=1) /完成构造函数的实现(5分)?fractionalnumbe
24、r() cout<<"destructor is called."<<endl;fractionalnumber(const fractionalnumber& x)/拷贝构造函数numerator=x.numerator;denominator=x.denominator;simplify();cout<<"copy constructor is called."<<endl;void simplify(void) /对分数的分子和分母进行化简int g=gcd(denominator,numer
25、ator);numerator/=g;denominator/=g;void output() cout<<numerator<<"/"<<denominator<<endl; /分数的输出void add(const fractionalnumber& x) /分数的加法(5分)?friend fractionalnumber operator+(fractionalnumber& num1, fractionalnumber& num2); /友元函数的声明;/类定义结束 fractionalnum
26、ber operator+(fractionalnumber& num1,fractionalnumber& num2)int nresult,dresult;dresult=num1.denominator*num2.denominator;nresult=num1.numerator*num2.denominator+num1.denominator*num2.numerator;return fractionalnumber(nresult,dresult); void main(void)/设计测试程序,创建类对象,使用output()、add()和运算符+(7分) ?
27、/end of main()华侨大学 面向对象程序设计(二) 答卷姓 名 学号 成绩 一、填空题(15分,每小题1分)(1) (2) (3) (4) (5) (6) (7) (8) (9) (10) (11) (12)(13) (14) (15)二、选择题(18分,每小题2分)(1) (2) (3) (4) (5) (6) (7) (8) (9) 三、阅读程序题(45分)1.阅读下面程序,给出程序的运行结果。(15分,每小题5分)1) 运行结果:2)运行结果:3)运行结果:2.阅读下面程序,回答相关问题。(30分)1)(7分)a) (3分)函数fun()的功能:b) (4分)需要修改:2)(6
28、分)a)(4分)运行结果:b)(2分)3)(9分)a)(6分)运行结果:b) (3分)4)(8分)1)(6分)运行结果:2)四、编程题(22分)1. 一个简单分数类的结构如下,请补充相应代码,使之完成程序功能。int gcd(int m,int n) /(1)完成求两个数的最大公因数(5分) fractionalnumber(int n=0,int d=1) /完成构造函数的实现(5分)void add(const fractionalnumber& x) /分数的加法(5分)void main(void)/设计测试程序,创建类对象,使用output()、add()和运算符+(7分)
29、/end of main()参考答案一、填空题(15分,每小题1分)(1)函数原型 (2)间接 (3)定义它所在的源程序文件 (4)定义该函数的源程序所在文件的其他函数 (5)指针数组中各元素分别指向命令行中的各个字符串(6)命名空间(7)引用的目标变量是常量 (8)可以 9.字符数组 10.public 11.类名 12类名(const 类名& 对象名) 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) 2) 1 2 1 3 1 2 13) 2.阅读下面程序,回答相关问题。(30分)1)(7分)a)函数返回最大学号的学生指针;b)需
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 筑牢防范意识警惕诈骗风险,小学主题班会课件
- 设计部门创意及实施绩效评估表
- 关于水池改造工程进度反馈的回复函7篇
- 客户服务主管客户关系维护绩效考评表
- 新产品研发项目管理与进度控制手册
- 通讯行业技术支持团队技术支持能力KPI考核表
- 关于2026年关键客户拜访行程的调整通知函6篇范本
- 创业项目策划与实施指导手册
- 科技魅力:了解现代科技的小学主题班会课件
- 自主学习提高效率小学主题班会课件
- 安全管理人员任命书
- 北京市延庆区教育委员会招聘教师笔试真题2025
- 2026湖南长沙市第二医院(长沙市妇幼保健院河西分院)招聘劳务派遣人员89人考试备考题库及答案详解
- 2026四川成都农业科技中心第二批招聘17人备考题库及1套完整答案详解
- 2026年电厂化学安全知识培训
- 公司展示馆数字影像集成方案动态
- 仓库货物收发验收管理规范
- 核心素养视域下七年级数学“截一个几何体”跨学科项目式教案
- (2026年)检验检测机构资质认定“一单一库”的学习与解读(2026年实施)课件
- 模具预热工艺控制规范制度
- 雨天砼浇筑施工方案(3篇)
评论
0/150
提交评论