Meta name="Robots" Content="All"> 计算机技术与软件水平考试面向对象程序设计试题(3)_计算机软件水平考试_计算机类考试_学子考试网
网站首页 | 考试学习 | 英语学习 | 求职 |出国留学 | 资源下载 | 论文中心 | 箐箐校园 | 精品课程 | 网络学院 | 网站留言
资格类考试: 公务员考试 报关员考试 导游资格 注册会计 司法考试
外语类考试: 英语四六级 雅思 托福 GRE BEC PETS 职称英语
学历类考试: 高考 考研 自考 成考 专升本
计算机考试: 等级考试 水平考试 微软认证 思科认证 Linux认证
设为主页
联系站长
添加收藏夹
计算机技术与软件水平考试面向对象程序设计试题(3)

计算机技术与软件水平考试面向对象程序设计试题(3)

学子考试网 Ks263.Com 点击数: 2006-4-9 字体:[ ] 收藏本文
一、单项选择题 ( 本大题共 10 小题,每小题 2 分,共 20 分 )
在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。
1. 下列特性中, C 与 C++ 共有的是 ( )
A. 继承 B. 封装
C. 多态性 D. 函数定义不能嵌套
2. 通常情况下,函数模板中的类型参数个数 不能 是 ( )
A.0 B.2
C.4 D.3
3. 在下列成对的表达式中,运算符“ + ”的意义 不相同 的一对是 ( )
A.5.0+2.0 和 5.0+2 B.5.0+2.0 和 5+2.0
C.5.0+2.0 和 5+2 D.5+2.0 和 5.0+2
4. 类的指针成员的初始化是通过函数完成的,这个函数通常是 ( )
A. 析构函数 B. 构造函数
C. 其它成员函数 D. 友元函数
5. 要禁止修改指针 p 本身,又要禁止修改 p 所指向的数据,这样的指针应定义为 ( )
A.const char *p= “ ABCD ”; B.char const *p= “ ABCD ”;
C.char *const p= “ ABCD ”; D.const char * const p= “ ABCD ”;
6. 静态成员函数 没有 ( )
A. 返回值 B.this 指针
C. 指针参数 D. 返回类型
7. 当一个类的某个函数被说明为 virtual 时,该函数在该类的所有派生类中 ( )
A. 都是虚函数
B. 只有被重新说明时才是虚函数
C. 只有被重新说明为 virtual 时才是虚函数
D. 都不是虚函数
8. 下面叙述 不正确 的是 ( )
A. 派生类一般都用公有派生
B. 对基类成员的访问必须是无二义性的
C. 赋值兼容规则也适用于多重继承的组合
D. 基类的公有成员在派生类中仍然是公有的
9. 在 C++ 中实现封装是借助于 ( )
A. 枚举 B. 类
C. 数组 D. 函数
10. 所有在函数中定义的变量,都是 ( )
A. 全局变量 B. 局部变量
C. 静态变量 D. 寄存器变量
二、填空题 ( 本大题共 10 小题,每小题 2 分,共 20 分 )
不写解答过程,将正确的答案写在每小题的空格内。错填或不填均无分。
11. 设函数 max 是由函数模板实现的,并且 max(3.5,5) 和 max(10,5) 都是正确的函数调用,则该模板具有 ______ 个类型参数。
12. 在单继承和多继承方式中,面向对象的程序设计应尽量使用 ______ 继承。
13. 语句序列
ifstream datafile ;
datafile.open( “ data.dat ” ) ;
的功能可用一个语句实现,这个语句是 ______ 。
14. 将关键字 const 写在函数头之后,函数体之前,说明该函数是一个 const 成员函数。此时 const 不是指定函数的返回值,而是修饰 ______ 指针。
15. 一个抽象类的派生类可以实例化的必要条件是实现了所有的 ______ 。
16. 在 C++ 中,虚函数帮助实现了类的 ______ 性。
17. 通过 C++ 语言中类的 ______ ,可以扩充和完善已有类以适应新的需求。
18. 为了在对象生存期结束时释放其指针成员所指向的动态存储空间,通常需要为该类定义 ______ 。
19. 在联合中,所有数据成员具有 ______ 的地址,任一时刻只有 ______ 个数据成员有效。
20. 在已经定义了整型指针 ip 后,为了得到一个包括 10 个整数的数组并由 ip 所指向,应使用语句 ______ 。
三、改错题 ( 本大题共 5 小题,每小题 2 分,共 10 分 )
21. 下面的类定义有一处错误,请用下横线标出错误所在行并改正错误。
class A{
int a;
public;
A(int aa):a=aa{ }
};
22. 下面的程序先把字符串“ Look out! ”输出到一个文件中,然后再从该文件输入,并显示在屏幕上,显示效果为 Look out! 。程序中有一处错误,请用下横线标出错误所在行,并给出更改意见。
# include
void main(){
ofstream outf( “ D:\\tem.dat ” ,ios::trunc);
outf<< “ Look out! ” ;
outf.close( );
ifsteam inf( “ D:\\tem.dat ” );
char k[20]; inf>>k; count}
23. 下面的程序有一处错误,请用下横线标出错误所在行并改正错误。
# include
class Test{
public;
static int x;
};
int x=20;// 对类成员初始化
void main ( )
{
cout<}
24. 下面的程序类 B 的定义中有一处错误,请用下横线标出错误所在行并说明错误原因。
# include
# include
class A{
public:A(const char *nm){strcpy(name,nm);}
private:char name[80];
};
class B:public A{
public:B(const char *nm):A(nm){ }
void PrintName( )const;
};
void B::PrintName( )const{
cout<< “ name: ” <}
void main( ){
B b1( “ wang li ” );
b1.PrintName( );
}
25. 用下横线标出下面程序 main 函数中的错误所在行,并说明错误原因。
# include
class Location{
private:
int X,Y;
public;
void init(int initX,int initY);
int sumXY( );
};
void Location::init(int initX,int initY)
{
X=initX;
Y=initY;
}
int Location::sumXY( )
{
return X+Y;
}
void main( )
{
Location A1;
int x,y;
A1.init(5,3);
x=A1.X;y=A1.Y;
cout<}
四、完成程序题 ( 本大题共 5 小题,每小题 4 分,共 20 分 ) 。根据题目要求,完成程序填空。
26. 在下面程序横线处填上适当内容,以使该程序执行结果为:
12
88
# include
template
class Tany{
public:
① ;
void pr(){
if(sizeof(int)== ② )
count<<(x>y? x:y)cout<<(x>y? y:x)<}
};
void main( ){
Tanydobj={12.0,88.0};
dobj.pr( );
Tany iobj={12,88};
iobj.pr( );
}
27. 在下面的横线处填上适当内容,使程序完整。
# include
# include
class loc{
private:
float x,y;
public;
loc( ① )
{
x=x1;
y=y1;
}
float getx( ){return x;}
float gety( ){return y;}
② float dis(loc&,loc&);
};
float loc::dis(loc&a,loc&b)
{
flost dx=a.x-b.x;
flost dy=a.y-b.y;
return sqrt(dx*dx+dy*dy);
}
void main( )
{
loc pl(3.5,4.5),p2(5.5,6.5);
float d=loc::dis(p1,p2);
cout<< “ The distance is ” <}
28. 在下面程序中的横线处填上适当内容,使程序完整。
# include
class vehicle
{
protected:
int size;
int speed;
public;
void setSpeed(int s){speed=s;}
① getSpeedLevel( ){return speed/10;}
};
class car:public vehicle
{
public:
int getSpeedLeve( ){return speed/5;}
};
class truck:public vehicle
{
public:
int getspeedLevel( ){return speed/15;}
};
int maxSpeedLevel(vehicle ② ,vehicle ③ )
{
if(v1.getSpeedLevel( )>v2.getSpeedLevel( ))
return 1;
else
reutrn 2;
}
void main()
{
turck t;
car c;
t.setSpeed(130);
c.setSpeed(60);
cout<}
29. 在下面横线处填上合适内容,完成类 B 的定义。
# include
class A{
public:A( ){a=0;}
A(int i){a=i;}
void print( ){cout};
class B:public A{
public:B( ){b1=b2=0}
B( ① ){b1=i;b2=0;}
B(int i,int j,int k): ② {b1=j;b2=k;}// 使 a 的值为 i
void print( ){A::print( );cout}
30. 根据注释在空白处填写适当内容。
class Location{
private:
int X,Y;
public:
void init(int initX,int initY);
int GetX( );
int GetY( );
};
void Location::init(int initX,int initY)
{
X=initX;
Y=initY;
}
int Location::GetX( )
{
reutrn X;
}
int Location::GetY( )
{
reutrn Y;
}
# include
void main( )
{
Location A1;A1.init(20,90);
① // 定义一个指向 A1 的引用 rA1
② // 用 rA1 在屏幕上输出对象 A1 的数据成员 X 和 Y 的值
}
五、程序分析题 ( 本大题共 6 小题,每小题 5 分,共 30 分 ) 给出下面各程序的输出结果。
31. 写出下面程序的输出结果:
# include
class FunArray{
int *pa; // 指向一个数组空间
int size; // 数组元素个数
public:
FunArray(int a[ ],int thesize):pa(a),size(thesize){ }
int Size( ){return size;}
int& operator[ ](int index){return pa[index-1];}
};
void main( ){
int s[ ]={3,7,2,1,5,4};
FunArray ma(s,sizeof(s)/sizeof(int));
ma[3]=9;
for(int i=1;i<=ma.Size( );i++) cout<}
32. 写出下面程序的输出结果:
# include
template
class Tclass{
T x,y;
public:
Tclass(T a,T b):x(a){y=b;}
Tclass(T a){y=(T)0,x=a;}
void pr( ){
char c;
c=(y>=(T)0? ′ + ′ : ′ - ′ );
cout<(T)0? y:-y)<< ″ i ″ <}
};
void main( ){
Tclassa(10.5,-5.8);
a.pr( );
Tclassb(10);
b.pr( );
}
33. 写出下面程序的输出结果:
# include
class Test{
private:
static int val;
int a;
public;
static int func( );
void sfunc(Test &r);
};
int Test::val=200;
int Test::func( )
{
return val++;
}
void Test::sfunc(Test &r)
{
r.a=125;
cout<< ″ Result3= ″ <}
void main( )
{
cout<< ” Result1= ” cout<< ” Result2= ” }
34. 写出下面程序的输出结果:
# include
class A
{
public;
virtual void print( ){cout<< ” This is class A printing. ” <};
class B:public A
{
public:
void print( ){ }
};
class C:public B
{
public:
void print( ){cout<< “ This is class C printing. ” <};
void show(A&a)
{
a.print( );
}
void main( )
{
A a;
B b;
C c;
show(a);
show(b);
show(c);
}
35. 写出下面程序的输出结果:
# include
class A{
public: A( ){a=0;}
A(int i){a=i;}
void Print( ){coutprivate:int a;
};
class B:public A{
public:B( ){b=0;}
B(int i,int j,int k);
void Print( );
private:int b;
A aa;
};
B::B(int i,int j,int k):A(i),aa(j){b=k;}
void B::Print( ){
A::Print( );
cout<}
void main( ){
B bb[2];
bb[0]=B(1,2,5);
bb[1]=B(3,4,7);
for(int i=0;i<2;i++)
bb[i].Print( );
}
36. 写出下面程序的输出结果:
# include
class Location{
int X,Y;
public:
void init(int=0,int=0);
void valueX(int val){X=val;}
int valueX( ){return X;}
void valueY(int val){Y=val;}
int valueY( ){return Y;}
};
void Location::init(int initX,int initY)
{
X=initX;
Y=initY;
}
void main( )
{
Location A,B;
A.init( );
coutcoutB.valueY(4);
cout<}

  • 上一篇文章:

  • 下一篇文章:




  •                            【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    特别推荐
    最新热点
    最新推荐
     网站首页 -  网站地图 -  加入收藏 -  联系我们 -  友情链接 
    冀ICP备05000973号 ©2005-2006 www.ks263.com.版权所有