上海大学C++学年冬.docx

上传人:b****2 文档编号:2060356 上传时间:2023-05-02 格式:DOCX 页数:25 大小:23.75KB
下载 相关 举报
上海大学C++学年冬.docx_第1页
第1页 / 共25页
上海大学C++学年冬.docx_第2页
第2页 / 共25页
上海大学C++学年冬.docx_第3页
第3页 / 共25页
上海大学C++学年冬.docx_第4页
第4页 / 共25页
上海大学C++学年冬.docx_第5页
第5页 / 共25页
上海大学C++学年冬.docx_第6页
第6页 / 共25页
上海大学C++学年冬.docx_第7页
第7页 / 共25页
上海大学C++学年冬.docx_第8页
第8页 / 共25页
上海大学C++学年冬.docx_第9页
第9页 / 共25页
上海大学C++学年冬.docx_第10页
第10页 / 共25页
上海大学C++学年冬.docx_第11页
第11页 / 共25页
上海大学C++学年冬.docx_第12页
第12页 / 共25页
上海大学C++学年冬.docx_第13页
第13页 / 共25页
上海大学C++学年冬.docx_第14页
第14页 / 共25页
上海大学C++学年冬.docx_第15页
第15页 / 共25页
上海大学C++学年冬.docx_第16页
第16页 / 共25页
上海大学C++学年冬.docx_第17页
第17页 / 共25页
上海大学C++学年冬.docx_第18页
第18页 / 共25页
上海大学C++学年冬.docx_第19页
第19页 / 共25页
上海大学C++学年冬.docx_第20页
第20页 / 共25页
亲,该文档总共25页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

上海大学C++学年冬.docx

《上海大学C++学年冬.docx》由会员分享,可在线阅读,更多相关《上海大学C++学年冬.docx(25页珍藏版)》请在冰点文库上搜索。

上海大学C++学年冬.docx

上海大学C++学年冬

上海大学2011~2012学年冬季学期试卷A

课程名:

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

学分:

5

一.选择(18分,其中1-7每小题2分,8-11每小题1分)

 

1.[](多选)C++语言编程的优势是

A.是一种面向对象的语言,而生成的代码运行时开销小。

B.是一种面向过程的语言,用自顶向下设计方法进行设计。

C.易学易用,比用VB,Delphi,java语言编程容易些。

D.是强大的专业级的编程语言,最适合开发系统级软件。

 

2.[]以下表述错误的是:

A.面向对象的程序设计工作包括通用算法、类、消息、类之间关联、组件等设计。

B.C++语言中类和对象是完全相同的概念。

C.封装意味着对象内部是如何工作的对客户端来说是不可见的。

D.多态性成员函数意味着其虚函数调用的入口地址是运行期绑定。

E.面向对象的编程,要执行一个任务有两种方式:

客户/服务器模式和委托/事件模式。

F.Windows编程是一种事件机制的编程。

 

3.[]名空间的用途是

A.防止标识符冲突,提供标识符的组织方式B.表达标识符间的继承关系C.表示变量

 

4.[](多选)要设计一个汽车制造调度系统,好的做法是:

A.构建Name类,Automobile类,BuildEngine类,Machine类,Work类。

B.构建Automobile类,Engine类,PaintMachine类,Machine类,Worker类。

C.Automobile类含有Engine类型的成员变量。

D.Machine类作为PaintMachine类的基类。

E.Worker类作为Name类的派生类。

5.[](多选)以下代码错误的是:

A.voidfunc(int&c);B.inta;int&c=a;C.int&func();D.inta;int&c;

E.virtualvoidh();

 

6.[](多选)已有以下定义,为派生类CD定义构造函数,正确的实现代码是:

classCB{….public:

CB();CB(string);CB(constBase&);protected:

string_name;};

classCD:

publicCB{...};

A.CD:

:

CD(){CB();}B.CD:

:

CD(strings):

CB(s){}

C.CD:

:

CD(){}D.CD:

:

CD(constCB&b):

CB(b){}

 

7.[](多选)有以下定义,结果为true的表达式是

classCB{virtualvoidm(){…}};classCD:

publicCB{};

CB*pb=newCD;CD*pd=(CD*)pb;

A.typeid(pb)==typeid(pd)B.typeid(pb)==typeid(CB*)

C.typeid(pb)==typeid(CD*)D.typeid(*pb)==typeid(CB)

E.typeid(*pd)==typeid(CD)F.typeid(pd)==typeid(CB*)

 

8.[]重载操作符>>从输入流中读取数据到CMy类型的对象中正确的设计是:

A.istream&operator>>(istream&in,CMy&obj);B.istream&operator>>(istreamin,CMyobj);

C.istream&operator>>(istream&in,CMyobj);D.istreamoperator>>(istreamin,CMyobj);

 

9.[]从键盘输入数据到变量x,应用标准C++库编程,正确的是:

A.cout>>x;B.std:

cin<

C.std:

:

cin>>x;

D.usingnamespacestd;cin<

 

10.[]设计一个函数,功能是使调用者的两整型变量数据交换,其函数原型应该是:

A.voidsa,intb);B.voidswap(&intx,&inty);

C.intsa);D.voids&a,int&b);

 

11.[]动态分配n个整数的内存空间,C++编程方法是:

A.int*p=newint[n*sizeof(int)];B.inta[]=newint[n];

C.int*p=newint[n];D.inta[n];

 

 

二.填空((27分,其中每小题1分)

 

1.面向对象程序设计语言的主要特征是_______________________________________

2.函数参数的设计其数据传递有三种方式,分别是传__2.1___、传___2.2___、传___2.3_____

3.修改下面代码的错误第___3.1___行代码改写为_____3.2______

int&db1(inti)//1

{

intj=2*i;//2

returnj;//3

}

 

4.设计一个函数encode,功能是对字符串加密,你设计的函数原型(接口)是:

___4.1_____________

其中相关参数和返回的说明:

________4.2_______________

 

5.已有定义:

classBC{public:

intb;}};classDC:

publicBC{public:

intd;};

BC*pb=newDC;

所创建的DC对象有___5.1__个成员变量,现要对其中成员变量d赋值为1,代码是____5.2_____

 

6.设计一个两个开关都能任意控制一个楼道电灯的监控器Windows应用程序,样例如下图界面。

完成你的解决方案(注:

可随意用英文中文表述):

系统采用VisualStudioC++开发平台的什么项目类型框架编程______6.1__。

 

界面显示的对话框从____6.2___类派生,它包含两个逻辑开关,一个逻辑电灯,在什么地方初始化它们:

_______6.3______

 

逻辑开关类,包含那些含义的成员变量怎么关联逻辑电灯:

_____6.4______,

包含那些含义的成员函数:

______6.5_______

 

逻辑电灯类,怎么关联电灯图标:

____6.6___________

包含那些意义的成员函数:

______6.7_____________

 

对话框中订阅什么事件来操作(调用)逻辑开关的push函数:

_____6.8__

7.实现下面的类

classCPerson

{

protected:

stringname;

public:

voidsetname(stringname){_____7.1___=name;}

stringgetname(){returnname;}

};

classCWorker:

________7.2____________

{

doublescore;

public:

______7.3_____(){}//构造函数

______7.4____{setname(name);}//构造函数

______7.5____{}//析构函数

intcompareScore(CWorker&worker)

{

if(this->score

elseif(_____________7.6_____________)return1;

elsereturn0;

}

doublegetscore(){returnscore;}

voidsetscore(doublescore){this->score=score;}

};

改写getscore成员函数为外联式实现_______7.7______________________________

改写setscore成员函数为外联式实现____________7.8_______________________

 

8.填空使下述代码显示D:

:

m

#include

classB

{public:

________________

};

classD:

publicB

{public:

voidm(){cout<<”D:

:

m()”<

};

voidmain()

{Dd1;B*p=&d1;p->m();

}

三.阅读程序(15分,每小题3分)

 

1.写出输出结果:

_____________________________

classContainer

{

enum{MaxSize=5};

intarray[MaxSize];

intn;

public:

Container(){n=0;}

voidappend(inta)

{

if(n

{

array[n]=a;

n++;

}

else

throw"越界";

}

};

 

2.写出输出结果:

_____________________________

#include#include#includeusingnamespacestd;

intmain(intargc,char*argv[])

{

stringstr="李伟102000.00";

istringstreamistm(str);

stringname;intage;doublesalary;

istm>>name>>age>>salary;

doubler=10;

salary+=age*r;

ostringstreamostm;

ostm<<"姓名"<

cout<

return0;

}

3.下面的程序,用标号共标记了6个断点,写出程序先后运行到断点的标号序列(写法举例:

1,3,3)4,________________3.1_______

输入数据100200的运行结果:

____3.2______

 

classIEventHandle

{public:

virtualvoidOnMouseDown(intx,inty)=0;//1

};

classCRecv:

publicIEventHandle

{public:

virtualvoidOnMouseDown(intx,inty)

{

cout<<"x="<

}

};

 

classMouse

{intx;inty;

IEventHandle*pSink;

public:

Mouse(intx,inty,IEventHandle*pSink)

{

this->x=x;this->y=y;this->sink=sink;//3

}

voidfireEvent()

{

pSink->OnMouseDown(x,y);

}

};

 

voidmain()

{CRecvrecv;//4

inta,b;cin>>a>>b;//5

Mousemouse(a,b,&recv);

mouse.fireEvent();

}

 

4.学生数据库查询打印程序,写出输出结果:

__________________________

数据文件DBData.txt中有数据如下:

Student020001张三

Student010002李四

Score数学02000180

Score数学01000270

Score物理01000260

Score政治02000190

 

intmain()

{

CAppapp;

app.ReadDatabase("DBData.txt");

app.Report();

return0;

}

 

classCStudent

{

mapcourseScores;

public:

stringm_name;

stringm_ID;

CStudent(){}

CStudent(stringid,stringname)

{

m_ID=id;m_name=name;

}

voidsetCourseScore(stringcourseName,intscore)

{

courseScores[courseName]=score;

}

voidprintScore()

{

for(map:

:

iteratorp=courseScores.begin();p!

=courseScores.end();p++)

{

cout<first<<"\t"<second<

}

}

};

classCApp

{dequem_stus;

CStudent*findStudent(stringid)

{

for(inti=0;i

{

CStudent&stu=m_stus[i];

if(stu.m_ID==id)

return&stu;

}

returnNULL;

}

public:

voidReadDatabase(constchar*);

voidReport();

};

 

 

voidCApp:

:

Report()

{

cout<<"\t成绩表"<

deque:

:

iteratorit;

for(it=m_stus.begin();it!

=m_stus.end();it++)

{

CStudent&stu=*it;

cout<

stu.printScore();

}

}

voidCApp:

:

ReadDatabase(constchar*)

{

ifstreami);

while(ifile)

{

stringtype;

ifile>>type;

if(type=="Student")

{

stringid,name;

ifile>>id>>name;

CStudentstu(id,name);

m_stus.push_back(stu);

}

elseif(type=="Score")

{

stringid,courseName;

intscore;

ifile>>courseName>>id>>score;

CStudent*pStu=findStudent(id);

if(pStu!

=NULL)

pStu->setCourseScore(courseName,score);

}

}

}

四.改错(对有标号的行,有错标记X,无错标记√)(20分,每小题0.5分)

classA

{public:

virtualvoidv(intx)=0;//1

}//2

classB:

A//3

{

intx;staticints;constintc;

protect:

//4

voidprotectedFunc(inta)

{x=s*a;}//5

public:

B():

c(0),x(0){}//6

B(inta)

{x=a;c=0;}//7

~B(){}//8

voidpublicFunc(inta)

{this->protectedFunc(a);}//9

int&getX()

{return&x;}//10

voidsameNameFunc(inta)

{cout<

staticvoidstaticSetS(inta)

{s=x;}//12

intgetS()

{returnthis->s;}//13

virtualvoidv(inta)

{cout<<"B"<

};

intB:

:

s=0;//15

 

voidg(B*pB){}

 

voidD:

:

publicDFunc()//21

{B:

:

publicFunc(0);//22

protectedFunc

(1);//23

}

classD:

publicB//16

{int*p;

public:

intd;

D():

p=NULL{}//17

DC(inta){BC(a);p=NULL;}//18

virtual~D(){}//19

virtualvoidv(inta)

{cout<<"D"<

voidsameNameFunc(constchar*s)

{cout<

voidset(int*p)

{x=*p;}//20

voidpublicDFunc();

};

intmain()

{Aobj=newA;//24

Ddc;

dc.sameNameFunc(10);//25

dc.sameNameFunc("abc");//26

int&x=dc.getX();//27

Bbc;//28

bc.protectedFunc

(1);//29

A*pa=newD

(2);//30

pa.v

(1);//31

deletepa;//32

D*pdc=dc;//33

B*pb=&dc;//34

B:

:

staticSetS

(2);//35

D*pdc=dynamic_cast(pb);//36

pdc=(D*)pb;//37

pdc->v(inta);//38

pdc->d=1;//39

g(&dc);//40

}

五.程序设计(20分,每小题10分

 

1.设计一个模板函数,在数组中查找数据,并编写main函数测试它。

其模板函数函数名SeqSearch

 

 

 

2.使用C++标准库,采用面向对象的方法设计一个程序,读证券交易行情文件,输出一个按收盘价由小到大排序的的报表

数据文件stock.txt格式如下

代码开盘价收盘价成交量

数据文件样例:

6000283.003.102900000

60017110.109.5023000

6009006.006.20300000

0008254.104.025000

 

输出结果样例:

6000283.003.102900000

0008254.104.0025000

60017110.109.5023000

6000283.003.102900000

 

 

-----------------------------------------------------完----------------------------------------------------------------------

 

上海大学2011~2012学年冬季学期答卷

 

小题

第一题选择题18%

 

1-7每小题2分,8-11每小题1分

1

AD

 

2

B

 

3

A

 

4

BCD

 

5

DE

 

6

BCD

 

7

BE

 

8

A

 

9

C

 

10

D

 

11

C

 

小计:

 

小题

第二题填空题27%

 

每小题1分

1

封装,继承,多态

 

2.1

 

2.2

地址

 

2.3

引用

 

小题

第二题填空题

 

 

3.1

2

 

3.2

staticintj=2*i;或int&j=*newint;

 

4.1

voidencode(char*sEnText,constchar*sText,constchar*sKey);

 

4.2

sEnText:

加密后的文本,sTex:

待加密的文本,sKey:

密钥,返回空

 

5.1

2

 

5.2

DC*pdc=(DC*)pb;pdc->d=1;或DC*pdc=static_cast(pb);pdc->d=1;

 

6.1

MFC应用(注:

只要含MFC给分)

 

6.2

CDialog

 

6.3

OnInitDialog或对话框初始化的地方

 

6.4

亮熄状态、逻辑灯对象的指针

 

6.5

Push(或:

按动操作函数)

 

6.6

包含一个成员变量指向类型CStatic对象图标(电灯)

 

6.7

setOnOff(或设置亮熄状态的函数)

 

6.8

WM_MOUSEDOWN或鼠标按下消息)

 

7.1

this->name

 

7.2

publicCPe

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

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2