最新上海大学1516级C++试题.docx

上传人:b****8 文档编号:10938578 上传时间:2023-02-23 格式:DOCX 页数:19 大小:27.22KB
下载 相关 举报
最新上海大学1516级C++试题.docx_第1页
第1页 / 共19页
最新上海大学1516级C++试题.docx_第2页
第2页 / 共19页
最新上海大学1516级C++试题.docx_第3页
第3页 / 共19页
最新上海大学1516级C++试题.docx_第4页
第4页 / 共19页
最新上海大学1516级C++试题.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

最新上海大学1516级C++试题.docx

《最新上海大学1516级C++试题.docx》由会员分享,可在线阅读,更多相关《最新上海大学1516级C++试题.docx(19页珍藏版)》请在冰豆网上搜索。

最新上海大学1516级C++试题.docx

最新上海大学1516级C++试题

上海大学2015~2016学年度秋季学期试卷(A卷)

课程名:

面向对象程序设计课程号:

08305121学分:

5

应试人声明:

我保证遵守《上海大学学生手册》中的《上海大学考场规则》,如有考试违纪、作弊行为,愿意接受《上海大学学生考试违纪、作弊行为界定及处分规定》的纪律处分。

应试人应试人学号应试人所在院系

题号

一(20)

二(20)

三(20)

四(40)

得分

——————————————————————————————————————

一、判断题(每小题2分,共20分)

1.类的构造函数的函数名与类名相同,可以重载构造函数。

(√)

2.类的析构函数可以被重载。

(×)

3.重载运算符函数不能改变运算符的操作数个数、优先级和结合方向。

(√)

4.引用在声明时必须对其初始化,以绑定某个已经存在的变量(或对象),

在该引用的生命期内,该绑定不能被更改。

(√)

5.指针变量在定义时必须对其初始化,以锁定某个已经存在的目标变量(或

对象),在该指针变量的生命期内,该指向不能被更改。

(×)

6.类的非静态成员函数均有一个隐含的形式参数this指针常量,用于指向

调用该函数的对象。

函数体中不能改变该指针常量的指向(即锁定调用该

函数的对象)。

(√)

7.派生类继承了基类的所有数据成员,并且在派生类的成员函数中都能直接

访问基类的访问属性为private的成员。

(×)

8.构造派生类对象时,先调用基类的构造函数,后执行派生类的构造函数。

析构派生类对象时,先调用基类的析构函数,后执行派生类的析构函数。

(×)

9.含纯虚函数的类称为抽象类,不能创建抽象类的对象,不能定义抽象类的

指针变量,不能声明抽象类的引用。

(×)

10.引用返回的函数可以作左值,也避免了函数值返回时创建与返回类型相同

的临时无名对象。

(√)

二、填空题(每空2分,共20分)如下设计了一个字符串类String,请根据运行结果,完成程序。

#include

#include

#include

usingnamespace①std;

classString

{

public:

String(constchar*str="")

{

size=strlen(②str);

x=size>0?

newchar[size]:

NULL;

if(x==NULL)size=0;

for(inti=0;i

x[i]=str[i];

}

String(constString&s):

x(③NULL)

{

*this=s;//直接利用深赋值运算符函数

}

virtual~String()

{

if(x!

=NULL)delete④[]x;

size=0;

}

String&operator=(constString&s)

{

if(this==⑤&s)return*this;

if(x!

=NULL)delete[]x;

size=s.size;

x=newchar[size];

if(x==NULL)size=0;

for(inti=0;i

x[i]=s.x[i];

return⑥*this;

}

⑦char&operator[](intindex){returnx[index];}

friendostream&operator<<(ostream&out,constString&s)

{

for(inti=0;i

out<

return⑧out;

}

⑨friendistream&operator>>(istream&in,String&s)

{

stringstr;

in>>str;//利用C++字符串

s=String(str.c_str());//利用深赋值运算符

returnin;

}

friend⑩intCompare(constString&s1,constString&s2)

{

inti;

for(i=0;i

;

if(i

returns1.x[i]>s2.x[i]?

1:

-1;

elseif(i

return1;

elseif(i==s1.size&&i

return-1;

else

return0;

}

friendbooloperator<(constString&s1,constString&s2)

{returnCompare(s1,s2)<0;}

friendbooloperator<=(constString&s1,constString&s2)

{returnCompare(s1,s2)<=0;}

friendbooloperator>(constString&s1,constString&s2)

{returnCompare(s1,s2)>0;}

friendbooloperator>=(constString&s1,constString&s2)

{returnCompare(s1,s2)>=0;}

friendbooloperator==(constString&s1,constString&s2)

{returnCompare(s1,s2)==0;}

friendbooloperator!

=(constString&s1,constString&s2)

{returnCompare(s1,s2)!

=0;}

protected:

char*x;

intsize;

};

voiddisplay(constString&s1,constString&s2)

{

char*str[]={"小于","等于","大于"};

cout<<"\""<

<<"\""<

}

intmain()

{Strings1("Helloworld!

"),s2(s1);

运行结果

"Helloworld!

"等于"Helloworld!

"

"Helloworld!

"小于"helloworld!

"

"Helloworld!

"大于"Helloworld"

"Helloworld!

"大于"Helloworld"

""等于""

display(s1,s2);

s2[0]='h';

display(s1,s2);

s2="Helloworld";

display(s1,s2);

s2="Helloworld";

display(s1,s2);

s1="";s2="";

display(s1,s2);

return0;

}

三、阅读程序写出运行结果(每行1分,共20分)

3.1(10分)本题所涉及的Time类,相关头文件和源程序文件如下。

//MyTime.h头文件

#ifndefMYTIME_H

#defineMYTIME_H

#include

#include

usingnamespacestd;

classTime

{

public:

Time(inthour=0,intminute=0,intsecond=0);

Time&operator++();

Timeoperator++(int);

friendTimeoperator+(constTime&t,intn);

friendostream&operator<<(ostream&out,constTime&t);

friendistream&operator>>(istream&in,Time&t);

protected:

inth,m,s;

};

#endif

//MyTime.cpp源程序文件

#include"MyTime.h"

Time:

:

Time(inthour,intminute,intsecond)

:

h(hour),m(minute),s(second)//构造函数

{

}

Time&Time:

:

operator++()

{

s++;

if(s==60){s=0;m++;}

if(m==60){m=0;h++;}

if(h==24)h=0;

return*this;

}

TimeTime:

:

operator++(int)

{

Timetemp(*this);

++(*this);

returntemp;

}

Timeoperator+(constTime&t,intn)

{

Timeresult(t);

intx=(t.h*60+t.m)*60+t.s+n;

while(x<0)

x+=24*60*60;

x%=24*60*60;

result.s=x%60;

result.m=x/60%60;

result.h=x/3600;

returnresult;

}

ostream&operator<<(ostream&out,constTime&t)

{

out<

(2)<

'

<

(2)<

'<

(2)<

returnout;

}

istream&operator>>(istream&in,Time&t)

{

charstr[200];

in.getline(str,200,':

');

t.h=atoi(str);

in.getline(str,200,':

');

t.m=atoi(str);

in.getline(str,200);

t.s=atoi(str);

returnin;

}

运行结果(3.1)

23:

59:

51

23:

59:

51

23:

59:

52

23:

59:

50

23:

59:

51

23:

59:

51

22:

59:

50

请输入时间:

23:

59:

59

23:

59:

59

00:

00:

00

10:

20:

30

//main.cpp源程序文件(测试程序)

intmain()

{

Timet0(23,59,50),t;

t=t0;cout<<++t<

t=t0;++t;cout<

t=t0;++++t;cout<

t=t0;cout<

t=t0;t++;cout<

t=t0;t++++;cout<

t=t0;t=t+(-3600);cout<

cout<<"请输入时间(hh:

mm:

ss):

";

cin>>t;

cout<

cout<<++t<

cout<

return0;

}

3.2(10分)以下4小题所涉及的Test1类,相关头文件和源程序文件如下。

//test03.h头文件

#ifndefTEST03_H

#defineTEST03_H

#include

usingnamespacestd;

classTest1

{

public:

Test1(inta=0);

Test1(constTest1&t);

virtual~Test1();

Test1&operator=(constTest1&t);

staticintNum();

staticintSum();

friendostream&operator<<(ostream&out,constTest1&t);

friendistream&operator>>(istream&in,Test1&t);

protected:

staticintnum,sum;

intx;

};

voidShow();//普通的C++函数声明

#endif

//Test03.cpp源程序文件

#include"Test03.h"

intTest1:

:

num=0,Test1:

:

sum=0;//静态数据成员定义及初始化

Test1:

:

Test1(inta):

x(a)//构造函数

{

num++;sum+=x;

}

Test1:

:

Test1(constTest1&t):

x(t.x)//拷贝构造函数

{

num++;sum+=x;

}

Test1:

:

~Test1()

{

num--;sum-=x;

}

Test1&Test1:

:

operator=(constTest1&t)//赋值运算符函数

{

sum+=t.x-x;

x=t.x;

return*this;

}

intTest1:

:

Num(){returnnum;}

intTest1:

:

Sum(){returnsum;}

ostream&operator<<(ostream&out,constTest1&t)

{

out<

returnout;

}

istream&operator>>(istream&in,Test1&t)

{

inttemp;

in>>temp;

Test1:

:

sum+=temp-t.x;

t.x=temp;

returnin;

}

voidShow()//普通的C++函数

{

cout<<"Num="<

:

Num()

<<",\tSum="<

:

Sum()<

}

//3.2.1测试程序之一

#include"Test03.h"

运行结果(3.2.1)

Num=0,Sum=0

intmain()

{

Show();

return0;

}

//3.2.2测试程序之二

#include"Test03.h"

Test1x(100);//创建一个全局对象

voidf(Test1t)

{

Show();

}

运行结果(3.2.2)

Num=1,Sum=100

Num=2,Sum=200

Num=1,Sum=100

intmain()

{

Show();

f(x);

Show();

return0;

}

//3.2.3测试程序之三

#include"Test03.h"

voidf(Test1&t)

{

Show();

}

intmain()

运行结果(3.2.3)

Num=1,Sum=100

Num=1,Sum=100

Num=1,Sum=100

{

Test1x(100);//创建一个自动对象

Show();

f(x);

Show();

return0;

}

//3.2.4测试程序之四

#include"Test03.h"

intmain()

运行结果(3.2.4)

Num=4,Sum=60

Num=5,Sum=90

Num=4,Sum=60

{

Test1x(10),y(20),a[2]={x,y}

Show();

Test1*p=newTest1;

*p=30;

Show();

deletep;

Show();

return0;

}

四、(40分)设计复数类。

要求运行时得到指定的输出结果。

①实现如下测试程序中用到的9个函数(每个函数3分。

无须定义拷贝构造函数、析构函数及赋值运算符函数);

②自选3个运算符,并实现运算符函数重载(每个函数3分。

注意复数不能比较大小);

③数据成员、类设计的其他部分(4分)。

【注意:

数学函数doubleatan2(doubley,doublex);当x≠0时返回y/x的反正切值,当x=0时返回π/2或-π/2(正负号与y同号)】。

#include"Complex.h"

intmain()

{

Complexx(3,4),y(x),z;//创建对象

cout<

cout<

z.Real()=z.Imag()=1;//设置复数的实部、虚部

cout<

cout<

+、*,迭代赋值*=

运行结果(4.1)

(3,4),(3,4),(0,0)

545

(4,5)(-1,7)(-7,24)

cout<

cout<<(x*=x)<

return0;

}

 

//Complex.h

#include

#include

usingnamespacestd;

classComplex

{

public:

Complex(doublereal=0,doubleimag=0):

re(real),im(imag){}

double&Real(){returnre;}

double&Imag(){returnim;}

doubleAngle()const{returnatan2(im,re);}

doubleAbs()const{returnsqrt(re*re+im*im);}

friendComplexoperator+(constComplex&c1,constComplex&c2)

{

Complexresult(c1);

result.re+=c2.re;

result.im+=c2.im;

returnresult;

}

friendComplexoperator*(constComplex&c1,constComplex&c2)

{

Complexresult;

result.re=c1.re*c2.re-c1.im*c2.im;

result.im=c1.re*c2.im+c1.im*c2.re;

returnresult;

}

Complex&operator*=(constComplex&c)

{

doublex=re*c.re-im*c.im;

im=re*c.im+im*c.re;

re=x;

return*this;

}

friendostream&operator<<(ostream&out,constComplex&c)

{

out<<'('<

returnout;

}

protected:

doublere,im;

};

 

(2)缺乏经营经验

 

月生活费人数(频率)百分比

我们长期呆在校园里,对社会缺乏了解,在与生意合作伙伴应酬方面往往会遇上困难,更不用说商业上所需经历的一系列繁琐手续。

他们我们可能会在工商局、税务局等部门的手续中迷失方向。

对具体的市场开拓缺乏经验与相关的知识,缺乏从职业角度整合资源、实行管理的能力;

我们大学生没有固定的经济来源,但我们也不乏缺少潮流时尚的理念,没有哪个女生是不喜欢琳琅满目的小饰品,珠光宝气、穿金戴银便是时尚的时代早已被推出轨道,简洁、个性化的饰品成为现代时尚女性的钟爱。

因此饰品这一行总是吸引很多投资者的目光。

然而我们女生更注重的是感性消费,我们的消费欲望往往建立在潮流、时尚和产品的新颖性上,所以要想在饰品行业有立足之地,又尚未具备雄厚的资金条件的话,就有必要与传统首饰区别开来,自制饰品就是近一两年来沿海城市最新流行的一种。

图1-3大学生偏爱的手工艺品种类分布

(1)专业知识限制

附件

(一):

beadorks公司成功地创造了这样一种气氛:

商店和顾客不再是单纯的买卖关系,营业员只是起着参谋的作用,顾客成为商品或者说是作品的作参与者,营业员和顾客互相交流切磋,成为一个共同的创作体

月生活费人数(频率)百分比

“碧芝”最吸引人的是那些小巧的珠子、亮片等,都是平日里不常见的。

店长梁小姐介绍,店内的饰珠有威尼斯印第安的玻璃珠、秘鲁的陶珠、奥利的施华洛世奇水晶、法国

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1