1、 上海大学C++2014-2015秋A---答案--t 精品文档 序号 试卷 第 1 页 ( 共 5 页 ) 4.[ ]GetData函数功能是Get它动态创建的包含有数据的基地址,及数据个数,好的设计方案及客户对它的正确调用是: A. int GetData( int * pp ); int *pd; int n = GetData( pd ); B. int * GetData( int n ); int n=3; int *pd = GetData( n ); C. int GetData( int
2、 pp ); int *pd; int n = GetData( pd ); D.int GetData( int ** pp ); int *pd; int n = GetData(&pd ); 5. [ ] 已有定义 class K { private: K(); }; 修改错误: A.去掉private: B. K k1; 改为 K k1(); C.private 改为public D. }; 改为 } 6.[ ](多选)设计一个影片管理系统,包括一般影片、外国片,影片剪接,现有一部外国影片
3、Titanic (泰坦尼克号),如下的解决方案正确的有: A.Film作为基类,ForeignFilm和 DirectorCut作为Film的派生类。 B.Titanic作为Film的的成员变量。 C.Titanic是ForeignFilm的一个实例。 D.Film作为类ForeignFilm和类DirectorCut的成员变量。 E.数据输出Output函数采用虚成员函数,Film、ForeignFilm、DirectorCut都实现它。 7. [ ] 已有定义: class BC{ public:int b; void mfunc(){cout<<"BC";}
4、 };
class DC : public BC { public: int d; void mfunc(){ BC::mfunc();cout<<"DC";} };
BC bc; DC dc; BC *pb=new DC;
以下代码正确的是:
A. bc.d = 1;
B. pb->d = 1;
C. DC *p=pb; p.d = 1;
D. DC *pdc=static_cast
5、ator>>( istream &istm, Complex &c); B.istream & operator>>( istream istm, Complex c); C.istream & operator>>( istream& istm, Complex c); D.istream operator>>( istream istm, const Complex & c); E.Complex operator<<( istream istm); 2014 ~ 2015 学年 一. 选择 (16分,每题2分) 1.[ ]
6、以下面向对象程序设计(OOP)的基本概念不正确的是 A. 计算机并不仅仅是一台机器,它更像我们大脑的一部分。 B. 面向对象程序设计语言的目的是为了解决现实世界的模拟问题(如变电站系统). C. 对象类型的设计是面向对象程序设计的中心任务。 D. 继承表示了基本类型和派生类型之间的相似性,一个基类具有所有由它派生出来的类型所共有的特性和行为。 E. 当处理类型层次结构时,程序员常常希望不把对象看作是某一特殊类型,而把它看作基本类型,应用OOP的多态性,编写不依赖于特殊类型的代码。 F. C++语言中类实际上就是对象。 2.[ ]要访问名空间IEC中的标识符LPHD,C++
7、的方法是 A.IEC::LPHD B.IEC .LPHD C.IEC:LPHD C.using namespace std; LPHD 3. [ ] 动态分配n个float元素的内存空间,C++编程方法是: A.float *p=new float[sizeof(float)]*n; B.float a[ ]=new float[n]; C.float *p=new float[n]; D.float a[n];
8、 int main() { K k1; return 0; } 注:教师应使用计算机处理试题的文字、公式、图表等;学生应使用水笔或圆珠笔答题。 试卷 第 2 页 ( 共 5 页 ) 6.C++标准模板库的名空间的名称是 ___________ 7. 函数参数的设计其数据传递有三种方式,分别是传________________________ 8. 实现下面的类 class CPerson {
9、 protected: string name; public: void setname( string name ) { _____8.1___ =name;} string getname(){ return name;} }; class CStudent : ________8.2____________ { double score; public: _____8.3_____(){} //构造函数 ______8.4____________{ this->name=name;} //构造函数 ______8.5______ {} //析
10、构函数 static int compareScore( Student &stu1, Student &stu2) { if( stu1.getscore () < stu2.getscore () ) return -1; else if( _____________8.6_____________ ) return 1; else return 0; } double getscore(){ return score;} void setscore( double score ) { this->score=score;} }; 改
11、写getname成员函数为外联式实现___________8.7_____________________ 改写setscore成员函数为外联式实现_____8.8______________________________ 二.填空(26分,1,7题每题3分,其他每空1分) 1.面向对象程序设计语言的主要特征是______________________________ 2. 返回对象的引用,修改下面代码 int& dl( int n
12、) { ___________ int j= 2*n; return j; } 3. 下面代码CA和CB类型的对象分别有___3.1____个数据成员, 实现类的构造函数,初始化数据成员 class CA { private: int a; public: CA(int a) { _____3.2_______ } }; 4. 设计一个函数decode,功能是对字符串,用密钥解码,设计函数原型 (接口)是:___4.1__________________________________________ 其中相关参数和返回的
13、说明:________4.2__________________________ 5. 异常处理代码填空 int div( int a,int b) { if(b ==0 ) ______5.1____“error:b==0”; return a/b; } class CB : public CA { int b; public: CB(int a,int b) ________3.3______ { _____3.4______ } };
14、 int main( ) { try { int u,v; cin>>u>>v; cout<<"u/v="<
15、
};
void main()
{
B* p =new Z; delete p ;
}
3. 下面的程序写入到data.txt文件中的内容___________3.1________________________
屏幕显示的输出的内容_________________________3.2_____________________
#include
16、ng name="wang"; int age=20;
ostm<<" 姓名 "< 17、e<<" 去年 "< 18、sert(students.size() > 0 );
cout<<”与” << students[0]. getname() <<”分数相同的学生有:”< 19、三. 阅读程序 (18分,每小题2分)
1.写出输出结果: ________
class B
{protected:
virtual void f( ) {cout<<”B”< 20、 ";}
};
class D : public B
{
protected:
virtual void f( ) {cout<<”D”< 21、eClass
{
vector 22、sh_back(p); ③
}
void update(string r) //更新数据
{
m_r = r; ④
dchgReport();
}
};
class DevClientClass : public IReportHandle
{
string m_name;
public:
DevClientClass() { m_name = " DevClient";} ⑤
virtual void handleReport( string r ) //处理数据
23、 {
cout< 24、下面是设备监控系统采用事件驱动机制编写的一个简单示例程序,列出程序先后运行到断点位置(已用标号标记)的序号,或显示结果
键盘输入数据前,程序依次运行到的断点序列号_________5.1____________
从键盘输入 MMXU1.PNV.phsA.cVal.mag.f=100.5A 回车后的断点位置: __5.2___
断点位置⑧然后程序依次运行到的断点序列号: 5.3
程序显示的输出结果: 5.4
#include 25、ctor>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
DevServiceClass dev; ⑦
DevClientClass cli;
dev.hookReport( &cli );
char str[200];
cin.getline( str,sizeof(str) ); //采集数据
dev.update(str); ⑧
return 0;
}
26、
试卷 第 5 页 ( 共 5 页 )
五.程序设计 (20分 , 第1题8分,第2题7分,第3题5分)
1. 设计一个模板容器类,功能是元素的压入和弹出在同一端进行,满足先进后出的要求.
并编一个main函数测试该模板容器。
模板容器类接口要求:
类名:Stack
模板参数表含模板类型参数T, 和实例类型参数size (表示容器最大容量)
成员函数:
push: 压入元素; pop: 弹出元素
empty:容器是否空; full: 27、 容器是否满
main()函数要求:
创建你的模板容器类对象,循环压入n个string字符串,然后弹出显示。
2. 使用MFC设计一个图形层次类
要求
1)抽象图形类 CShape
成员变量 m_x,m_y
成员函数 draw(CDC*), moveTo(x,y), CShape(x,y)
CShape (x=0,y= 0)
2) 圆类 CCircle
成员变量 m_x,m_y,m_r
成员函数 draw(CDC*), moveTo(x,y),setR(r) , CCircle(x,y,r)
3) 矩形框类C 28、RectBox
成员变量 m_x,m_y, m_x1,m_y1
成员函数 draw(CDC*), moveTo(x,y) , CRectBox(x,y, x1,y2)
4) 柱状图类 CBarChart
成员变量 m_x,m_y, m_x1,m_y1 //边框
m_datas //画柱状图的int数据容器
成员函数 moveTo(x,y), CBarChart(x,y, x1,y2)
draw(CDC*) //画出边框,画出数据的柱状图,
设每根柱的宽度=元素个数/(m_x1-m_x)
addData(int) //添加数据到
注:MFC 相关类CDC类相 29、关的成员函数
bool Rectangle( int x1, int y1, int x2, int y2 ); //画矩形框(左上角,右下角)
bool Ellipse( int x1, int y1, int x2, int y2 ); //画椭圆(左上角,右下角)
程序不要求考虑画笔及其填充色的问题。
类间关系要使用继承.
3. IEC61850 变电站通信网络与系统C++程序设计(课外项目代码)
30、
四. 改错(对有标号的行,有错标记X,无错标记√)( 20分,每小题0.5分 )
class IObj
{public:
virtual void vfunc(int x) = 0;//1____
} //2 ___
class BC : IObj //3 ____
{ int b; static int s; const int c;
public:
BC( ): c(0){ } //4_____
BC(int x) { b=x; c=0;} //5____
void ~BC( ){} 31、//6 ____
int & getRef( )
{ return this->b; } //7____
static void staticFuncSet(int x)
{ this->b = x; } //8_____
int getC( )
{return c;} //9_____
static void staticFuncSetS( int x)
{ s = x;} //10______
int getS()
{return this->s;} //11______
virtual void vfunc 32、int x)
{ protectedFunc ( x ); } //12_______
void m(int x)
{ vfunc(x); } //13_____
private:
void privateFunc(const char * str)
{ cout< 33、DC(int x,int y) : d(x) //16 _____
{ BC( y ); } // 17 ______
~DC( int* p){ delete p;} //18______
virtual ~DC(){} //19______
virtual void vfunc(int a)
{ d = a;} //20_______
void m(const char * str);
};
void DC:: m(const char * str) //21.____
{ BC::m(0); //22_____
privateF 34、unc (str); //23____
protectedFunc( 0 ); //24_______
}
int BC::s=0; //25____
int main( )
{ IObj obj; //26_____
DC dc; //27_____
dc.m(10); //28______
dc.m("abc"); //29___
int &r=dc.getRef( ); //30____
BC bc;
bc.privateFunc(“aaa”); //31_____
bc.protectedFunc 35、1); //32_____
BC::staticFuncSetS(1); //33_____
IObj *pobj=new BC(2);
pobj->vfunc(1); //34 ____
BC *pbc= (BC*)pobj; //35_____
delete pobj; //36_____
BC *pb=&dc; //37 _____
BC::m(2); //38______
pb->vfunc(1); //39______
DC *pdc= dynamic_cast 36、
}
答卷 第 1 页 ( 共 3 页 )
成
绩
题号
第 二 题 填空题(续)
5.1(1分)
throw
5.2(1分)
catch
6(1分)
std
7(3分)
值,地址,引用
8.1(1分)
this->name=name
8.2(1分)
public CPerson
8.3(1分)
CStudent
8.4(1分)
CStude 37、nt(string name)
8.5(1分)
virtual ~ CStudent()
8.6(1分)
stu1.getscore () > stu2.getscore ()
8.7(1分)
string CPerson::getname(){ return name;}
8.8(1分)
void CStudent ::setscore( double score ) { this->score=score;}
8.9(1分)
CStudent
8.10(1分)
CStudent::compareScore(students[0], stude 38、nts[i] );
小计
题号
第 三 题 阅读题 18分
1(2分)
D
2 (2分)
BZ~Z~B
3.1(2分)
姓名 wang年龄 20
3.2 (2分)
姓名 wang 去年20 今年18
4 (2分)
Z A a
5.1(2分)
7,5, 3,
5.2(2分)
8
5.3(2分)
4,2,6
5.4(2分)
DevClient handleReport: MMXU1.PNV.phsA.cVal.mag.f=100.5A
小计
上海大学 2014 ~ 2015 学年 秋 39、季学期答卷 A
课程名: 面向对象程序设计A 课程号:09366046学分: 4
应试人 应试人学号 应试人所在院系
题号
一
二
三
四
五
六
七
八
九
得分
题号
第 一 题 选择题 16分
每小题2分
1
F
2
A
3
C
4
D
5
C
6
ACE
7
D
8
A
小计:
题号
第二题 填空题 26 分
1(3分)
封装继承多态
40、2(1分)
static
3.1(1分)
1,2
3.2(1分)
this->a = a;
3.3(1分)
: CA(a)
3.4(1分)
this->b= b;
4.1(1分)
void decode(const char *str, const char *key,char *tex );
4.2(1分)
不返回,str:待解码的字符串,key:密钥,tex:解码后的文本
41、
注:教师应使用计算机处理试题的文字、公式、图表等;学生应使用水笔或圆珠笔答题。
答卷 第 2 页 ( 共 3 页 )
小计:
五.程序设计 20分 (1题8分,2题7分, 课外题5分)
1.
第 四 题 改错题 20分
每小题0.5分
题号
题号
题号
题号
题号
1
√
2
X
3
X
4
√
5
X
6
X
7
√
8
X
9 42、
√
10
√
11
√
12
√
13
√
14
√
15
√
16
√
17
X
18
X
19
√
20
√
21
√
22
√
23
X
24
√
25
√
26
X
27
√
28
X
29
√
30
√
31
X
32
X
33
√
34
√
35
√
36
√
37
√
38
X
39
√
40
√
小计:
43、
答卷 第 3 页 ( 共 3 页 )
class CRectBox : public CShape 1分
{protected:
int m_x1;
int m_y1;
public:
CRectBox(int x,int y,int x1,int y1):CShape(x,y)
{
m_x1=x1; m_y1=y1;
};
virtual void draw(CDC* pDC)
{
pDC->Rectangle(m_x,m_y,m_x1, m_y1 );
}
}; 44、
class CBarChart : CRectBox 1分
{
vector 45、as.size();
for( int i=0;i 46、
protected:
int m_x;
int m_y;
public:
CShape(int x,int y)
{
m_x=x; m_y=y;
}
void moveTo(int x,int y)
{
m_x=x; m_y=y;
}
virtual void draw(CDC* pDC)=0;
};
class CCircle : public CShape 1分
{
public:
int m_r;
CCircle(int x,int y,int r):CShape(x,y)
{
m_r=r;
}
virtual void draw(CDC* pDC)
{
pDC->Ellipse(m_x-m_r,m_y-m_r,m_x+m_r,m_y+m_r);
}
};
收集于网络,如有侵权请联系管理员删除