面向对象程序设计(模拟卷).doc_第1页
面向对象程序设计(模拟卷).doc_第2页
面向对象程序设计(模拟卷).doc_第3页
面向对象程序设计(模拟卷).doc_第4页
全文预览已结束

下载本文档

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

文档简介

重庆工商大学模拟试卷考试科目: 面向对象程序设计 试卷适用专业(班): 08软件 考核方式:开卷()闭卷() 09-10 学年度 1 学期 套别: A套() B套()题号一二三四五六七八总计分值30302020100得分阅卷人一、解下列问题(30分)1. 阅读以下说明和C+函数,将应填入_(n)_处的字句在答题纸的对应栏内。(每空4分,共20分)【说明1】函数Counter(int n, vector &w)的功能是计算整数n的二进制表示形式中1的个数,同时用向量w记录该二进制数中1所在位置的权。例如,十进制数22的二进制表示为10110.对于该二进制数,1的个数为3,在w0中存入2(即21),w1中存入4(即22),w2中存入16(即24)。【C+函数1】int Counter(int n, vector &w) int i=0,k=1; while(_(1)_) if(n%2) w.push_back(k); n=n/2; _(2)_; i+; return i;【说明2】函数Smove(vector A)的功能是将向量A中的所有奇数都放到所有偶数之前。其过程为:设置向量元素下标索引i(初始值为0)和j(初始值为n-1,n为A的长度),从向量的两端开始检查元素的奇偶性。若Ai、Aj都是奇数,则从前往后找出一个偶数,再与Aj交换;若Ai、Aj都是偶数,则从后往前找出一个奇数,再与Ai交换;若Ai是偶数而Aj是奇数,则交换两者,直到将所有的奇数都排在所有的偶数之前为止。【C+函数2】void Smove(vector A) int n=A.size(),tmp,i=0,j=n-1; if(n2) return; while(ij) if(Ai%2=1&Aj%2=1) _(3)_; else if(Ai%2=0&Aj%2=0) _(4)_; else if(_(5)_) tmp=Ai; Ai=Aj; Aj=tmp; i+;j-; 编号答案(1)(2)(3)(4)(5)2. 阅读下列程序,并写出运行结果。(10分)#include using namespace std;void func();int n=1;int main() static int x=5; int y=n; cout”Mainx=”x”, y=”y”, n=”n”n”; func(); cout”Mainx=”x”, y=”y”, n=”n”n”; func(); return EXIT_SUCCESS;密 封 线院(系): 班级: 姓名: 学号: 注意:答题不能超过密封线!本套试卷共 4 页,此页是第 1 页。 void func() static int x=4; int y=10; x+=2; n+=10; y+=n; cout”Funcx=”x”, y=”y”, n=”n”n”;二、阅读改写(每小题15分,共30分)1. 阅读下列程序,写出运行结果,添上一个拷贝构造函数来完善整个程序。#include using namespace std;class CAT int *itsAge;public: CAT():itsAge(new int(5) int getAge()constreturn *itsAge; void setAge(int age)*itsAge=age; CAT()delete itsAge;int main() CAT frisky; coutfriskys age: frisky.getAge()endl; coutSetting frisky to 6.n; frisky.setAge(6); coutCreating boots from friskyn; CAT boots(frisky); coutfriskys age: frisky.getAge()endl; coutbootss age: boots.getAge()endl; coutSetting frisky to 7.n; frisky.setAge(7); coutfriskys age: frisky.getAge()endl; coutbootss age: boots.getAge()endl; return EXIT_SUCCESS;2. 修改下列C+程序中的错误:#include #include using namespace std;class Point double x;/横坐标 double y;/纵坐标public: void set(double ix,double iy)/设置坐标 x=ix; y=iy; double xOffset()/取横坐标 return x; double yOffset()/取纵坐标 return y; double angle()/取点的极坐标 return (180/3.14159)*atan2(y,x); double radius()/取点的极坐标半径 return sqrt(x*x+y*y); ; 密 封 线院(系): 班级: 姓名: 学号: 注意:答题不能超过密封线!本套试卷共 4 页,此页是第 2 页。 密 封 线院(系): 班级: 姓名: 学号: int main() Point p; double x, y; coutxy; p.set(x,y); p.x+=5; p.y+=6; coutangle=p.angle() , radius=p.radius() , x offset=p.xOffset() , y offset=p.yOffset()endl; return EXIT_SUCCESS;三、填空:(每空4分,共20分)阅读下列说明和C+代码,将应填入_(n)_处的字句写在答题纸的对应栏内。【说明】已知类LinkedList表示列表类,该类具有四个方法:addElement()、lastElement()、numberOfElement()以及removeLastElement()。四个方法的含义分别为:void addElement(Object):在列表尾部添加一个对象;Object lastElement():返回列表尾部的对象;int numberOfElement():返回列表中的对象个数;void removeLastElement():删除列表尾部的对象。先需要借助LinkedList来实现一个Stack栈类,C+代码1和C+代码2分别采用集成和组合方式实现。【C+代码1】class Stack: public LinkedListpublic: void push(Object o) addElement(o); Object peek() _(1)_; bool isEmpty() return numberOfElement()=0; Object pop() Object o=lastElement(); _(2)_; return o; ;【C+代码2】class Stackprivate: _(3)_;public: void push(Object o) list.addElement(o); Object peek() return list._(4)_; bool isEmpty() return list.numberOfElement()=0; Object pop() Object o=list.lastElement(); list.removeLastElement(); return o; ;【问题】若类LinkedList新增加了一个公有的方法removeElement(int index),用于删除列表中第index个元素,则在用继承和组合两种实现栈类Stack的方式中,哪种方式下Stack对象可访问方法removeElement(int index)?_(5)_(A. 继承 B. 组合)编号答案(1)(2)(3)(4)(5)注意:答题不能超过密封线!本套试卷共 4 页,此页是第 3 页。 密 封 线院(系): 班级: 姓名: 学号: 四、编写程序:(20分)在下列的头文件complex.h中定义了复数类Complex:#include #include using namespace std;class Complexdouble x,y;/实部与虚部public: Complex(double real=0.0, double image=0.0);/构造函数 Complex operator+(Complex &b);/加法 Complex operator-(Complex &b);/减法 Complex operator*(Complex &b);/乘法 Complex operator/(Complex &b);/除法 friend ostream& operator(ostream &out,Complex a);/输出流;请在下列实现Complex类的文件中complex.cpp,补充代码,完成实现。#include complex.hComplex:Complex(double real,double image):x(real),y(image)/(x1+y1*i)+(x2+y2*i)=(x1+x2)+(y1+y2)*iComplex Complex:operator+(Complex &b)/(x1+y1*i)-(x2+y2*i)=(x1-x2)+(y1-y2)*iComplex Complex:operator-(Complex &b)/(x1+y1*i)(x2+y2*i)=(x1*x2-y1*y2)+(x1*y2+x2*y1)*iComplex

温馨提示

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

评论

0/150

提交评论