上海大学 级C 试题.docx
- 文档编号:9441973
- 上传时间:2023-05-19
- 格式:DOCX
- 页数:20
- 大小:30.56KB
上海大学 级C 试题.docx
《上海大学 级C 试题.docx》由会员分享,可在线阅读,更多相关《上海大学 级C 试题.docx(20页珍藏版)》请在冰点文库上搜索。
上海大学级C试题
上海大学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,并将链表类作为结点类的友类,请根据运行结果,完成程序。
#include
usingnamespacestd;
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
{
out<<"head";
for(Node*p=head;p!
=NULL;p=p->next)
out<<"->"<
out<<"->NULL";
}
};
ostream&operator<<(ostream&out,constLinkList&link)
{
运行结果
head->3->7->2->1->NULL
head->3->7->2->1->NULL
head->NULL
head->3->7->2->1->NULL
link.ShowList(?
out);
return?
out;
}
intmain()
{
intn,a[]={3,7,2,1};
n=sizeof(a)/sizeof(*a);
LinkListlinkA(n,a),linkB(linkA),linkC;
cout< linkC=linkA; cout< return0; } 三、阅读程序写出运行结果(每行1分,共25分) 1.(7分)有关构造与析构的顺序 #include usingnamespacestd; classTest { public: Test(inta=0,intb=0): x(a),y(b){} ~Test() { if(x==y) cout<<"数据成员的值相同,都等于"< else cout<<"数据成员的值不同,分别为"< } friendostream&operator<<(ostream&out,constTest&t) { out<<"("< returnout; 运行结果 (1) (10,0) (0,0) (2,3) 数据成员的值不同,分别为10,0 退出程序,返回操作系统 数据成员的值不同,分别为2,3 数据成员的值相同,都等于0 } private: intx,y; }; intmain() { Test*p,t1; p=newTest(10); Testt2(2,3); cout<<*p<<'\n' < < deletep; cout<<"退出程序,返回操作系统"< return0; } 2.以下两小题所涉及的类设计,头文件如下。 //test.h #include #include usingnamespacestd; 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(_y>0)out<<'+'<<_y<<'i'; elseif(_y<0)out<<'-'<<-_y<<'i'; } else { if(_y! =0) cout<<_y<<'i'; else cout<<_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) 1+2i 3+4i 1i 10 y.abs(): 5 4+6i -5+10i (1,2) (3,4) (4,6) 2.1(10分)测试程序 #include"test.h" intmain() { Complexx(1,2),y(3,4),z1(0,1),z2(10); cout< < cout<<"y.abs(): "< z1=x+y; z2=x*y; cout< Pointa(1,2),b(3,4); cout< cout< return0; } 2.2(8分)测试程序 #include"test.h" intmain() { 运行结果(2.2) 1+2i 6+2i 5+10i 2+4i (1,2) (2,2) (2,2) (4,8) Complexx(1,2),y,z; y=5+x; z=5*x; cout< cout< Pointa(1,2),b,c; b=a+1; c=1+a; cout< a=a+a;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 上海大学 级C 试题 上海 大学