面向对象程序设计C++山师面向对象程序设计试卷A.doc
《面向对象程序设计C++山师面向对象程序设计试卷A.doc》由会员分享,可在线阅读,更多相关《面向对象程序设计C++山师面向对象程序设计试卷A.doc(11页珍藏版)》请在咨信网上搜索。
学号 姓名 院( 部) 专业 考试时间: 01月 日 ------------------------------------------------密--------------------封----------------------线----------------------------------------------------------------- 山东师范大学 - 第一学期期末考试试题 ( 时间: 120分钟 共100分) 课程编号: 4111307 课程名称: 面向对象程序设计 适用年级: 07计本 学制: 4 适用专业: 计算机科学与技术 试题类别: A 考生注意事项 1、 第一、 二、 三大题写在答题纸预留的表格中上。 2、 第四大题写在答题纸的预留位置。 3、 考试结束后, 务必将试卷、 答题纸一并交回。 一、 单项选择题 下面每题的选项中, 只有一个是正确的, 请选择正确的答案填入答题纸中对应的题号后 ( 本题共25小题, 每小题1分, 共25分) 。 1、 当一个函数无返回值时, 函数的类型应定义为( ) 。 A void B 任意 C int D无 2、 作用域运算符的功能是( ) 。 A 标识作用域的级别 B 指出作用域的范围 C 给定作用域的大小 D 标识某个成员是属于哪个类 3、 下列的( ) 是引用调用。 A 形参是指针, 实参是地址值 B 形参和实参都是变量 C 形参是数组名, 实参是数组名 D 形参是引用, 实参是变量 4、 ( ) 不是构造函数的特征 A 构造函数的名和类名相同 B 构造函数能够重载。 C 构造函数能够设置默认值 D 构造函数必须指定类型说明。 5、 下列( ) 不能作为类的成员。 A 自身类对象的指针 B 自身类对象的引用 C 自身类对象 D 另一个类的对象 6、 重载函数在调用时选择的依据, ( ) 是错误的。 A. 参数个数 B 参数的类型 C A或者B D 函数的类型 7、 下列静态成员的特性中, ( ) 是错误的。 A 说明静态成员时, 要加修饰符static B 静态数据成员要在类体外进行初始化 C 引用静态数据成员时, 要在静态数据成员名前加<类名>及作用域运算符 D 静态数据成员不是所有对象所共用的 8、 已知f1(int)是类A的公有成员函数, p是指向成员函数f1()的指针, 采用( ) 是正确的。 A p=f1 B p=A::f1 C p=A::f1() D p=f1() 9、 运算符->*的功能是( ) 。 A 用来表示指向对象指针对指向类成员指针的操作 B 用来表示对象对指向类成员指针的操作 C 用来表示指向对象指针对类成员的操作 D 用来表示对象类成员的操作 10、 下列定义中, ( ) 是定义指向数组的指针p. A int p[5] B int (*p)[5] C (int*)p[5] D int *p[ ] 11、 设p为一个指向类A数据成员m的指针, A1为A的一个对象。如果给m赋值5, ( ) 为正确的。 A A1.p=5 B A1->p=5 C A1.*p=5 D *A1.p=5 12、 已知print( ) 函数是一个类的常成员函数, 它无返回值。下列表示中, ( ) 是正确的。 A void print ( ) const B const void print ( ) C void const print ( ) D void print (const) 13、 说明const char * ptr; 中, ptr应该是( ) 。 A 指向字符常量的指针 B 指向字符的常量指针 C 指向字符串常量的指针 D 指向字符串的常量指针 14、 派生类的对象对它的基类成员中( ) 是能够访问的。 A 公有继承的公有成员 B 公有继承的私有成员 C 公有继承的保护成员 D 私有继承的公有成员 15、 下列对派生类的描述中, ( ) 是错的。 A 一个派生类能够作为另一个派生类的基类 B 派生类至少有一个基类 C 派生类的成员除了它自己的成员以外, 还包含了它的基类成员 D 派生类中继承的基类成员的访问权限到派生类保持不变 16、 对于 int * pa[5]; 的描述, ( ) 是正确的。 A pa是一个指向数组的指针, 所指向的数组是5个int型元素。 B pa是一个指向某数组中第5个元素的指针, 该元素是int型变量。 C pa[5]表示某个数组的第5个元素的值。 D pa是一个具有5个元素的指针数组, 每个元素是一个int型指针。 17、 设置虚基类的目的是( ) 。 A 简化程序 B 消除二义性 C 提高运行效率 D 减少目标代码 18、 带有虚基类的多层派生类构造函数的成员初始化列表中都要列出虚基类的构造函数, 这样将对虚函数的子对象初始化( ) 。 A 与虚基类下的派生类个数有关 B 多次 C 二次 D 一次 19、 下列函数中, ( ) 不能重载。 A 成员函数 B 非成员函数 C 析构函数 D 构造函数 20、 关于动态联编的描述中, ( ) 是错误的。 A 动态联编是以虚函数为基础的 B 动态联编是在运行时, 确定所调用的函数代码的。 C 动态联编调用函数操作是指向对象的指针或对象引用。 D 动态联编是在编译时确定操作函数的。 21、 关于虚函数的描述中, ( ) 是正确的。 A 虚函数是一个非satatic类的成员函数。 B 虚函数是一个非成员函数。 C 基类中说明了虚函数后, 派生类中与其对应的函数能够不必说明为虚函数。 D 派生类的虚函数与基类的虚函数具有不同的参数个数和类型。 22、 关于纯虚函数和抽象类的描述中, ( ) 是错误的。 A 纯虚函数是一种特殊的虚函数, 它没有具体的实现。 B 抽象类是指含有纯虚函数的类。 C 一个基类中说明了纯虚函数, 则其派生类不再是抽象类。 D 抽象类一般只能作为基类来使用。 23、 下列关于抽象类的使用中, ( ) 是错误的。 A 能够定义抽象类的对象 B 能够定义抽象类的指针 C 能够定义抽象类的引用 D 能够定义抽象类的派生类 学号 姓名 院( 部) 专业 考试时间: 01月 日 ------------------------------------------------密--------------------封----------------------线----------------------------------------------------------------- 24、 派生类的构造函数的成员初始化列表中, 不能包含( ) 。 A 基类的构造函数 B 派生类中子对象的初始化 C 基类的子对象的初始化 D 派生类中一般数据成员的初始化 25、 关于new运算符的下列描述中, ( )是错的。 A 它能够用来动态创立对象和对象数组; B 使用它创立的对象或对象数组能够使用delete运算符删除; C 使用它创立对象时要调用构造函数; D 使用它创立对象数组时, 必须指定初始值。 二、 填空题 将正确的答案填入答题纸相应的题号后。( 本题共 3小题, 5个空, 每空2分, 共10分) 1. 面向对象的程序设计有三大特征, 它们是封装、 (1 ) 、 (2 ) 。 2、 类是用户定义的类型, 具有类类型的变量称作 ( 3) 。 3、 在面向对象的程序设计中, 经过 ( 4) 实现数据隐藏; 经过( 5) 实现代码的复用。 三、 分析程序的执行结果题 分析程序的执行结果, 将结果按程序运行时输出形式填在答题纸对应的题号后 (本题共5小题,每题4分, 共20分)。 1、 #include <iostream.h> class M { public: M() { x=y=0; } M(int i, int j) { x=i; y=j; } void copy(M *m); void setxy(int i, int j) { x=i; y=j; } void print() { cout<<x<<","<<y<<endl; } private: int x, y;}; void M::copy(M *m) { x=m->x; y=m->y;} void fun(M m1, M *m2) { m1.setxy(12, 15); m2->setxy(22,25); } void main() { M p(5, 7), q; q.copy(&p); fun(p, &q); p.print(); q.print(); } 2、 #include <iostream.h> class M {public: M(){a=b=0;} M(int i,int j){a=i;b=j;} void print() {cout<<a<<","<<b<<"\t";} private: int a,b; }; void main() { M m[2][4]; int x=10,y=10; for(int i=0;i<2;i++) { for(int j=0;j<4;j++) { m[i][j]=M(x+=2,y+=10);} } M (*pm)[4](m); for(i=0;i<2;i++) { cout<<endl; for(int j=0;j<4;j++) (*(*(pm+i)+j)).print();//用指针的方式存取数组的第ij个元素 } cout<<endl; } 3、 #include <iostream.h> #include <string.h> class B { public: B(char *s, double n) { strcpy(name,s); b=n; cout<<"Constructor. \n"; } B(){cout<<"Default\n";} ~B(){cout<<"Destructor "<<name<<endl;} void getb(char *s, double& n) { strcpy(s,name); n=b; } private: char name[80]; double b; }; void main() { B* p; double n; char s[80]; p=new B[3]; p[0]=B("Ma",4.8); p[1]=B("Wang",3.6); p[2]=B("Li",3.1); for(int i=0;i<3;i++) 学号 姓名 院( 部) 专业 考试时间: 01月 日 ------------------------------------------------密--------------------封----------------------线----------------------------------------------------------------- { p[i].getb(s,n); cout<<s<<","<<n<<endl; } delete[] p; } 4、 #include <iostream.h> class A { public: A(int i,int j) {a=i;b=j;} void Move(int x,int y) {a+=x;b+=y;} void Show() {cout<<"("<<a<<","<<b<<")"<<endl;} private: int a,b; }; class B:public A { public: B(int i,int j,int k,int l):A(i,j),x(k),y(l) {} void Show() {cout<<x<<","<<y<<endl;} void fun() {Move(3,5);} void f1() {A::Show();} private: int x,y; }; void main() { A e(1,2); e.Show(); B d(3,4,5,6); d.A::Show(); d.B::Show(); d.f1(); } 5、 #include <iostream.h> class A { public: A(int i){a=i;cout<<"con. A\n";} void print(){cout<<a<<endl;} ~A(){cout<<"des. A\n";} private: int a; }; class B1 : virtual public A { public: B1(int i, int j) : A(i){b1=j;cout<<"con. B1\n";} void print(){A::print(); cout<<b1<<endl;} ~B1(){cout<<"des. B1\n";} private: int b1; }; class B2 : virtual public A { public: B2(int i, int j) : A(i){b2=j;cout<<"con. B2\n";} void print(){A::print(); cout<<b2<<endl;} ~B2(){cout<<"des. B2\n";} private: int b2; }; class C : public B1, public B2 { public: C(int i, int j, int k, int l) : B1(i,j), B2(i,k), A(i) { c=l; cout<<"con. C"<<endl; } void print() { B1::print(); B2::print();cout<<c<<endl; } ~C(){cout<<"des. C"<<endl;} private: int c; }; void main() { C c1(5,7,3,6); c1.print(); } 四、 程序设计题 将编写的程序标上小题题号, 写在答题纸上。本题共4小题, 45分。 1.编写一个程序, 设计一个产品类Product, 其定义如下: Class Product { char *name; //产品名称 int price; //产品单价 int quantity; //剩余产品数量 public: Product(char *n,int p,int q); //构造函数 ~Product(); //析构函数 void buy(int money); //购买产品 void get() const; //显示剩余产品数量 }; 并用数据进行测试。( 10分) 学号 姓名 院( 部) 专业 考试时间: 01月 日 ------------------------------------------------密--------------------封----------------------线----------------------------------------------------------------- 2. 以面向对象的方法设计一个类, 此类包含3个私有数据: unlead, lead( 无铅汽油和有铅汽油) 以及total( 当天总收入, 无铅汽油的价格是17元/公升, 有铅汽油的价格是16元/公升) , 请以构造函数方式建立此值。试输入某天所加的汽油量, 本程序将列出加油站当天的总收入。( 10分) 3. 编写一个程序计算两个给定长方形的面积, 其中在设计类成员函数addarea()( 用于计算两个长方形的总面积) 时使用对象作为参数。( 12分) 4. 编一个程序计算正方体, 球体和圆柱体的表面积和体积。要求: 抽象出一个公共基类container为抽象类, 在其中定义求表面积和体积的纯虚函数。抽象类中定义一个公共的数据成员radius,此数值能够作为球体的半径、 正方体的边长、 圆柱体底面圆半径。由该抽象类派生出的三个类, 都有求表面积和体积的实际定义。键盘输入radius的值后, 能够输出这3种立方体的面积。( 13分) 学号 姓名 院( 部) 专业 考试时间: 01月 日 ------------------------------------------------密--------------------封----------------------线----------------------------------------------------------------- 山东师范大学 - 第一学期期末考试答题纸 课程编号: 4111307 课程名称: 面向对象程序设计 适用年级: 07计本 学制: 4 适用专业: 计算机科学与技术 试题类别: A 题号 一 二 三 四 总分 阅卷人 复核人 得分 一、 单项选择题 得分 阅卷人 本题共25小题, 每小题1分, 共25分。 1 6 11 16 21 2 7 12 17 22 3 8 13 18 23 4 9 14 19 24 5 10 15 20 25 二、 填空题 得分 阅卷人 将正确的答案填入答题纸相应的题号后。( 本题共 3小题, 5个空, 每空2分, 共10分) (1) (2) (3) (4) (5) 三、 分析程序的执行结果题 本题共5小题,每题4分, 共20分。 得分 阅卷人 1、 2、 3、 4、 5、 学号 姓名 院( 部) 专业 考试时间: 01月 日 ------------------------------------------------密--------------------封----------------------线----------------------------------------------------------------- 四、 编程题 得分 阅卷人 学号 姓名 院( 部) 专业 考试时间: 01月 日 ------------------------------------------------密--------------------封----------------------线------------------------------------------------------------------ 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 程序设计 C+ 试卷
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【a199****6536】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【a199****6536】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【a199****6536】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【a199****6536】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文