您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 公司方案 > 上海大学14-15级C++试题-DOC
海量资源,欢迎共阅上海大学2014~2015学年度秋季学期试卷(A卷)课程名:面向对象程序设计课程号:08305121学分:5应试人声明:我保证遵守《上海大学学生手册》中的《上海大学考场规则》,如有考试违纪、作弊行为,愿意接受《上海大学学生考试违纪、作弊行为界定及处分规定》的纪律处分。应试人应试人学号应试人所在院系题号一(20)二(30)三(25)四(25)得分——————————————————————————————————————一、判断题(每小题2分,共20分)1.引用在声明时必须对其初始化,以绑定某个已经存在的变量(或对象),在该引用的生命期内,该绑定不能被更改。(√)2.指针变量在定义时必须对其初始化,以锁定某个已经存在的目标变量(或对象),在该指针变量的生命期内,该指向不能被更改。(×)3.值返回的函数(如:doublesqrt(double);)的调用表达式(如:sqrt(2.0))代表一个无名的临时变量(或对象),一般不将其用作左值。(√)4.引用返回的函数,可以返回该函数中值传递的形参变量(或对象)。(×)5.任何类都有构造函数、复制构造函数、析构函数、赋值运算符函数。(√)6.有静态数据成员的类,一般地应该考虑为其设计复制构造函数、析构函数。(√)7.将用于输出的插入运算符函数operator设计成友元函数的根本原因是因为进行输出操作时需要访问对象的内部数据成员。(×)8.在C++程序中,操作符new的功能与calloc函数的功能完全一样。(×)成绩得分海量资源,欢迎共阅9.创建一个C++字符串对象(如:stringstr;),则sizeof(str)的值等于str.length()的值。其中成员函数length为返回字符串的长度。(×)10.基类的私有数据成员在派生类中是存在的,但不可直接访问,需要用从基类继承下来的函数访问。(√)二、填空题(每空2分,共30分)如下设计了结点类Node、链表类LinkList,并将链表类作为结点类的友类,请根据运行结果,完成程序。#includeiostreamusingnamespacestd;class①LinkList;//提前声明classNode{public:Node(intx=0):data(x){}②friendclassLinkList;private:intdata;Node③*next;};classLinkList{private:Node*head;public:LinkList(intn=0,int*array=NULL){Node*p;head=NULL;for(inti=④n-1;i=0;i--)得分海量资源,欢迎共阅{p=newNode;p-data=(array!=NULL)?array[i]:0;p-next=head;⑤head=p;}}LinkList(constLinkList&link){head=⑥NULL;*this=link;}virtual~LinkList(){FreeList();}⑦LinkList&operator=(constLinkList&link){if(⑧&link==this)return*this;FreeList();Node*p,*q;for(p=link.head;⑨p!=NULL;p=p-next){if(head==NULL)head=q=newNode(p-data);else海量资源,欢迎共阅{q-next=newNode(p-data);q=q-next;}}⑩q-next=NULL;return*this;}voidFreeList(){Node*p;while(⑪head!=NULL){p=head;⑫head=head-next;deletep;}}voidShowList(ostream&out)⑬const{outhead;for(Node*p=head;p!=NULL;p=p-next)out-p-data;out-NULL;}};ostream&operator(ostream&out,constLinkList&link){link.ShowList(⑭out);return⑮out;}运行结果head-3-7-2-1-NULLhead-3-7-2-1-NULLhead-NULLhead-3-7-2-1-NULL海量资源,欢迎共阅intmain(){intn,a[]={3,7,2,1};n=sizeof(a)/sizeof(*a);LinkListlinkA(n,a),linkB(linkA),linkC;coutlinkA'\n'linkB'\n'linkCendl;linkC=linkA;coutlinkCendl;return0;}三、阅读程序写出运行结果(每行1分,共25分)1.(7分)有关构造与析构的顺序#includeiostreamusingnamespacestd;classTest{public:Test(inta=0,intb=0):x(a),y(b){}~Test(){if(x==y)cout数据成员的值相同,都等于xendl;elsecout数据成员的值不同,分别为x,yendl;}friendostream&operator(ostream&out,constTest&t){out(t.x,t.y);returnout;}private:得分运行结果(1)(10,0)(0,0)(2,3)数据成员的值不同,分别为10,0海量资源,欢迎共阅intx,y;};intmain(){Test*p,t1;p=newTest(10);Testt2(2,3);cout*p'\n't1'\n't2endl;deletep;cout退出程序,返回操作系统endl;return0;}2.以下两小题所涉及的类设计,头文件如下。//test.h#includeiostream#includecmathusingnamespacestd;classBASE{public:BASE(doublex=0,doubley=0):_x(x),_y(y){}virtualvoidShow(ostream&out)const=0;protected:double_x,_y;};ostream&operator(ostream&out,constBASE&x){x.Show(out);returnout;}classComplex:publicBASE{public:Complex(doublex=0,doubley=0):BASE(x,y)海量资源,欢迎共阅{}voidShow(ostream&out)const{if(_x!=0){out_x;if(_y0)out'+'_y'i';elseif(_y0)out'-'-_y'i';}else{if(_y!=0)cout_y'i';elsecout_x;}}friendComplexoperator+(constComplex&a,constComplex&b){Complexc;c._x=a._x+b._x;c._y=a._y+b._y;returnc;}friendComplexoperator*(constComplex&a,constComplex&b){Complexc;c._x=a._x*b._x-a._y*b._y;c._y=a._x*b._y+a._y*b._x;returnc;}doubleabs(){returnsqrt(_x*_x+_y*_y);}};classPoint:publicBASE{海量资源,欢迎共阅public:Point(doublex=0,doubley=0):BASE(x,y){}voidShow(ostream&out)const{out'('_x,_y')';}friendPointoperator+(constPoint&a,constPoint&b){Pointc;c._x=a._x+b._x;c._y=a._y+b._y;returnc;}};2.1(10分)测试程序#includetest.hintmain(){Complexx(1,2),y(3,4),z1(0,1),z2(10);coutx'\n'y'\n'z1'\n'z2endl;couty.abs():y.abs()endl;z1=x+y;z2=x*y;coutz1'\n'z2endl;Pointa(1,2),b(3,4);couta'\n'bendl;couta+bendl;return0;}2.2(8分)测试程序#includetest.hintmain(){Complexx(1,2),y,z;y=5+x;z=5*x;coutx'\n'y'\n'zendl;运行结果(2.2)1+2i6+2i5+10i2+4i(1,2)运行结果(2.1)1+2i3+4i1i10y.abs():54+6i-5+10i(1,2)(3,4)(4,6)海量资源,欢迎共阅coutx+xendl;Pointa(1,2),b,c;b=a+1;c=1+a;couta'\n'b'\n'cendl;a=a+a;couta+aendl;return0;}四、完成如下类的设计(25分)在GCC编译系统中,unsignedlonglong数据类型使整型数的取值范围得到扩展(12~064,即0~18446744073709551615)。为了进一步扩展非负整数的取值范围设计了如下的类。该类数据可精确计算至1232,可处理36~37位非负十进制整数。请在类的声明体外实现5个尚未定义的成员函数或友元函数。最后写出程序的运行结果(每个函数定义4分,运行结果5分)。//LLINT.h头文件#ifndefLLINT_H#defineLLINT_H#includeiostreamusingnamespacestd;classLLINT{public:LLINT(unsignedlonglongx0=0,unsignedlonglongx1=0);//第一参数为低位LLINT(constchar*str);LLINT&operator++();LLINToperator++(int);friendLLINToperator+(constLLINT&x1,constLLINT&x2);LLINT&operator+=(constLLINT&x);friendostream&operator(ostream&out,constLLINT&x);friendLLINTatoLLINT(constchar*str);friendistream&operator(istream&in,LLINT&x);friendbooloperator(constLLINT&x1,constLLINT&x2);friendbooloperator=(constLLINT&x1,constLLINT&x2);friendbooloperator(constLLINT&x1,constLLINT&x2);friendbooloperator=(constLLINT&x1,constLLINT&x2);friendbooloperator==(constLLINT&x1,constLLINT&x2);friendbooloperator!=(constLLINT&x1,constLLINT&x2);得分海量资源,欢迎共阅protecte
本文标题:上海大学14-15级C++试题-DOC
链接地址:https://www.777doc.com/doc-5078672 .html