上海大学C++学年冬Word文档下载推荐.docx
《上海大学C++学年冬Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《上海大学C++学年冬Word文档下载推荐.docx(25页珍藏版)》请在冰点文库上搜索。
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&
(istreamin,CMyobj);
C.istream&
(istream&
in,CMyobj);
D.istreamoperator>
9.[]从键盘输入数据到变量x,应用标准C++库编程,正确的是:
A.cout>
x;
B.std:
cin<
<
x:
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
stringname;
public:
voidsetname(stringname){_____7.1___=name;
stringgetname(){returnname;
classCWorker:
________7.2____________
doublescore;
______7.3_____(){}//构造函数
______7.4____{setname(name);
}//构造函数
______7.5____{}//析构函数
intcompareScore(CWorker&
worker)
{
if(this->
score<
worker.getscore())return-1;
elseif(_____________7.6_____________)return1;
elsereturn0;
}
doublegetscore(){returnscore;
voidsetscore(doublescore){this->
score=score;
改写getscore成员函数为外联式实现_______7.7______________________________
改写setscore成员函数为外联式实现____________7.8_______________________
8.填空使下述代码显示D:
m
#include<
iostream.h>
classB
{public:
________________
classD:
publicB
voidm(){cout<
”D:
m()”<
endl;
voidmain()
{Dd1;
B*p=&
d1;
p->
m();
三.阅读程序(15分,每小题3分)
1.写出输出结果:
_____________________________
classContainer
enum{MaxSize=5};
intarray[MaxSize];
intn;
Container(){n=0;
voidappend(inta)
if(n<
MaxSize)
{
array[n]=a;
n++;
}
else
throw"
越界"
;
2.写出输出结果:
#include<
iostream>
#include<
string>
sstream>
usingnamespacestd;
intmain(intargc,char*argv[])
stringstr="
李伟102000.00"
istringstreamistm(str);
intage;
doublesalary;
istm>
name>
age>
salary;
doubler=10;
salary+=age*r;
ostringstreamostm;
ostm<
"
姓名"
name<
工龄"
age<
新工资"
cout<
ostm.str()<
return0;
3.下面的程序,用标号共标记了6个断点,写出程序先后运行到断点的标号序列(写法举例:
1,3,3)4,________________3.1_______
输入数据100200的运行结果:
____3.2______
classIEventHandle
virtualvoidOnMouseDown(intx,inty)=0;
//1
classCRecv:
publicIEventHandle
virtualvoidOnMouseDown(intx,inty)
{
cout<
x="
x<
"
y="
y<
//2
classMouse
{intx;
inty;
IEventHandle*pSink;
Mouse(intx,inty,IEventHandle*pSink)
this->
x=x;
this->
y=y;
sink=sink;
//3
}
voidfireEvent()
{
pSink->
OnMouseDown(x,y);
{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();
classCStudent
map<
string,int>
courseScores;
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<
p->
first<
\t"
second<
classCApp
{deque<
CStudent>
m_stus;
CStudent*findStudent(stringid)
for(inti=0;
i<
m_stus.size();
i++)
CStudent&
stu=m_stus[i];
if(stu.m_ID==id)
return&
stu;
returnNULL;
voidReadDatabase(constchar*);
voidReport();
voidCApp:
Report()
\t成绩表"
deque<
iteratorit;
for(it=m_stus.begin();
it!
=m_stus.end();
it++)
CStudent&
stu=*it;
cout<
stu.m_ID<
stu.m_name<
stu.printScore();
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;
courseName>
score;
CStudent*pStu=findStudent(id);
if(pStu!
=NULL)
pStu->
setCourseScore(courseName,score);
四.改错(对有标号的行,有错标记X,无错标记√)(20分,每小题0.5分)
classA
virtualvoidv(intx)=0;
//1
}//2
classB:
A//3
intx;
staticints;
constintc;
protect:
//4
voidprotectedFunc(inta)
{x=s*a;
}//5
B():
c(0),x(0){}//6
B(inta)
{x=a;
c=0;
}//7
~B(){}//8
voidpublicFunc(inta)
{this->
protectedFunc(a);
}//9
getX()
{return&
}//10
voidsameNameFunc(inta)
{cout<
a;
}//11
staticvoidstaticSetS(inta)
{s=x;
}//12
intgetS()
{returnthis->
s;
}//13
virtualvoidv(inta)
B"
}//14
intB:
s=0;
//15
voidg(B*pB){}
voidD:
publicDFunc()//21
{B:
publicFunc(0);
//22
protectedFunc
(1);
//23
publicB//16
{int*p;
D():
p=NULL{}//17
DC(inta){BC(a);
p=NULL;
}//18
virtual~D(){}//19
D"
}
voidsameNameFunc(constchar*s)
}
voidset(int*p)
{x=*p;
}//20
voidpublicDFunc();
intmain()
{Aobj=newA;
//24
Ddc;
dc.sameNameFunc(10);
//25
dc.sameNameFunc("
abc"
//26
x=dc.getX();
//27
Bbc;
//28
bc.protectedFunc
(1);
//29
A*pa=newD
(2);
//30
pa.v
(1);
//31
deletepa;
//32
D*pdc=<
D*>
dc;
//33
B*pb=&
//34
B:
staticSetS
(2);
//35
D*pdc=dynamic_cast<
D*>
(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
输出结果样例:
0008254.104.0025000
-----------------------------------------------------完----------------------------------------------------------------------
上海大学2011~2012学年冬季学期答卷
小题
第一题选择题18%
1-7每小题2分,8-11每小题1分
1
AD
2
B
3
A
4
BCD
5
DE
6
7
BE
8
9
C
10
D
11
小计:
第二题填空题27%
每小题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;
或DC*pdc=static_cast<
DC*>
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