欢迎访问深圳自考网!网站为考生提供深圳自考信息服务,供学习交流使用,非政府官方网站,官方信息以广东省教育考试院为准。

报名热线:177-2280-6683

招生老师微信|深圳自考微信公众号

首页
自考服务: |报名报考 |报考须知 |考办联系方式 |考试时间安排表 |免考办理 |学历证明办理 |合并准考证办理 |转出、转入办理 |考籍信息更正办理
通知公告:

全国2007年10月高等教育自学考试面向对象程序设

编辑整理:深圳自考网    发布时间:2018-05-24 06:23:24    浏览热度:   [添加招生老师微信]
立即购买

《自考视频课程》名师讲解,轻松易懂,助您轻松上岸!低至199元/科!

全国200710月高等教育自学考试
面向对象程序设计试题
课程代码:02328

一、单项选择题(本大题共10小题,每小题2分,共20分)
在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括
号内.错选、多选或未选均无分.
1.以下说法中正确的是( )
A.C++程序总是从第一个定义的函数开始执行
B.C++程序总是从main函数开始执行
C.C++函数必须有返回值,否则不能使用函数
D.C++程序中有调用关系的所有函数必须放在同一个程序文件中

2.以下关于函数模板叙述正确的是( )
A.函数模板也是一个具体类型的函数
B.函数模板的类型参数与函数的参数是同一个概念
C.通过使用不同的类型参数,函数模板可以生成不同类型的函数
D.用函数模板定义的函数没有类型

3.在重载一个运算符时,其参数表中没有任何参数,这表明该运算符是( )
A.作为友元函数重载的1元运算符
B.作为成员函数重载的1元运算符
C.作为友元函数重载的2元运算符
D.作为成员函数重载的2元运算符

4.构造函数不具备的特征是 ( )
A.构造函数的函数名与类名相同
B.构造函数可以重载
C.构造函数可以设置默认参数
D.构造函数必须指定类型说明

5.在C++中,封装是借助什么达到的( )
A.结构
B.数组
C.类
D.函数

6.在哪种情况下适宜采用 inline 定义内联函数?( )
A.函数体含有循环语句
B.函数体含有递归语句
C.函数代码少、频繁调用
D.函数代码多、不常调用

7.在关键字public后面定义的成员为类的( )
A.私有成员
B.公用成员
C.保护成员
D.任何成员

8. 以下哪个基类中的成员函数表示纯虚函数?( )
A.virtual void tt()=0
B.void tt(int) = 0
C.virtual void tt(int)
D.virtual void tt(int){}

9.假定AA是一个类,"AA* abc()const;"是该类中一个成员函数的原型,若该函数返回this值,当用x.abc()调用该成员函数后,x的值( )
A.已经被改变
B.可能被改变
C.不变
D.受到函数调用的影响

10.C++ 对 C 语言作了很多改进,即从面向过程变成为面向对象的主要原因是( )
A.增加了一些新的运算符
B.允许函数重载,并允许设置缺省参数
C.规定函数说明符必须用原型
D.引进了类和对象的概念


二、填空题(本大题共10小题,每小题2分,共20分)
请在每小题的空格中填上正确答案.错填、不填均无分.
11.如果一个派生类只有一个唯一的基类,则这样的继承关系称为____________.
12.C++支持两种多态性:____________时的多态性和运行时的多态性.
13.若要保证一个公共的基类在派生类中只产生一个基类子对象,则必须都以____________的方式直接继承它.
14.所有模板都以template关键字和一个____________表开头.
15.若一个函数的定义处于调用它的函数之前,则在程序开始可以省去该函数的____________语句.
16.类型转换函数没有返回值类型,而且参数表为____________.
17.C++提供的预处理命令有嵌入指令,条件编译指令和____________.
18.对象将其大部分实现细节隐藏起来,这种机制称为____________.
19.定义类动态对象数组时,其元素只能靠自动调用该类的____________来进行初始化.
20.在函数体之前加____________关键字可以防止覆盖函数改变数据成员的值.

三、改错题(本大题共2小题,每小题6分,共12分)
21.下面是分数类fract的定义及测试主程序,在类定义及其友元函数定义中1到6行中有三处错误,更正错误后程序应显示41/28,请指出错误所在行的行号并给出改正意见.
class fract{
int den; //分子
int num; //分母
public //1行
fract(int d=0,int n=1):den(d),num(n){} //2行
friend fract &operator+=(fract,fract&); //3行
void show(){ cout<}; //5行
friend fract &operator+=(fract f1,fract f 2) //6行
{ //7行
f1.den=f1.den*f 2.num+f1.num*f 2.den; //8行
f1.num*=f 2.num; //9行
return f1; //10行
}
void main(){
fract fr(3,4);
fr+=fract(5,7);
fr.show();
}

错误行的行号为____________、____________和____________.
分别改正为____________、____________和____________.
22.下面程序段第13-17行中存在着三条语句错误,请指出错误语句的行号并说明原因.
class A { //1行
int a; //2行
public: //3行
A(int aa=0):a(aa){} //4行
}; //5行
class B { //6行
int a,b; //7行
const int c; //8行
A d; //9行
public: //10行
B():c(0) {a=b=0;} //11行
B(int aa, int bb):d(aa+bb) { //12行
a=aa; b=bb; c=aa-bb; //13行
} //14行
} //15行
B a,b(1,2); //16行
B x=a,y(b),z(1,2,3); //17行
错误行的行号为____________、____________和____________.
错误原因分别为____________、____________和____________.


四、程序填空题(本大题共3小题,每小题6分,共18分)
请按提示要求完成以下程序段的填空.
23.在下面一段类定义中, Derived类是由直接基类Base 1和Base 2所派生的,Derived类包含有两个间接基类BaseBase,在初始化函数Init中,需要把x1和x2的值分别赋给属于基类Base1的x成员和属于基类Base2的x成员.
class BaseBase {
protected:
int x;
public:
BaseBase(){ x = 1;}
};
class Base1: public BaseBase {
public:
Base1(){}
};
class Base2: public BaseBase {
public:
Base2(){}
};
class Derived: ____________(1)____________
{
public:
Derived() {}
void Init(int x1, int x2) {
____________(2)____________;
____________(3)____________;
}
void output() {cout<};

(1) (2) (3)
24.#include
#includeB.h>
class A {
int *a; int n; int MaxLen;
public:
A(): a(0), n(0), MaxLen(0) {}
A(int *aa, int nn, int MM) {
n=nn;
MaxLen=MM;
if(n>MaxLen) exit(1);
a=new int[MaxLen];
____________(4)____________; //以i为循环变量把aa数组中每个元素值
//传送给a数组的对应元素中
}
~A();
int GetValue(int i) {return a[i];} //函数体返回a[i]的值
};

____________(5)____________//析构函数的类外定义

void main()
{
int b[10]={1,2,3,4,5,6,7,8,9,10};
A r(b,10,10);
int i,s=0;
____________(6)____________ ; //以i为循环变量,把r对象的a数据成员中的
//每个元素值依次累加到s中
cout<<"s="<}
(4) (5) (6)
25.下面是一维数组类ARRAY的定义,ARRAY与普通一维数组区别是:(1)用()而不是[]进行下标访问,(2)下标从1而不是从0开始,(3)要对下标是否越界进行检查.
class ARRAY{
int *v; //指向存放数组数据的空间
int s;//数组大小
public:
ARRAY(int a[], int n);
~ ARRAY(){delete []v;}
int size(){ return s;}
int& operator()(int n);
};
____________(7)____________ operator()(int n)
{ // ()的运算符函数定义
if(____________(8)____________) {cerr<<"下标越界!"; exit(1);}//exit函数的功能是退出程序运行
return ____________(9)____________;
}
(7) (8) (9)

五、程序分析题(本大题共6小题,每小题5分,共30分)
阅读以下程序,写出其运行结果.
26.#include
class test{
private:
static int val;
int a;
public:
static int func();
static void sfunc(test &r);
};
int test::val=10;
int test::func()
{
val--;
return val;
}
void test::sfunc(test &r)
{
r.a=15;
cout<< " result3= " <}
void main()
{
cout<< " resultl= " <test a;
cout<< " result2= " }

27.# include
class position{
public:
int x,y;
void init(int initx,int inity);
int getxvalue();
int getyalue();
};
void position::init (int initx,int inity)
{
x=initx;
y=inity;
}
int position::getxvalue()
{
return x;
}
int position::getyalue()
{
return y;
}
void printout(position & rl)
{
cout<}
void main()
{
position a[6] ={{1,1},{2,2},{3,3},{4,4},{5,5},{6,6}};
position *pa=a;
a[2].init(7,8);
pa->init(5,6);
for (int i=0;i<5;i++)
printout(*(pa++));
}

28.#include
class test{
public:
virtual void fun1(){
cout << "test fun1" <virtual void fun2(){
cout << "test fun2" <void fun3(){
cout << "test fun3" <};
class ftt:public test
{
public:
void fun1(){cout <<"ftt fun1"<virtual void fun2(){cout << "ftt fun2"<virtual void fun3(){cout << "ftt fun3"<};
void main()
{
test *pp;
ftt q;
pp = &q;
pp->fun1();
pp->fun2();
pp->fun3();
}

29.#include
class complex {
int real;
int imag;
public:
complex(int r=0,int i=0): real(r),imag(i){}
complex operator++(){ real++; return *this;}
void show(){ cout<};
void main() {
complex c(5,9);
++c;
C.show();
}
30.#include
class A {
int a;
public:
A(int aa=0): a(aa) {cout<~A() {cout<<"11"<};
void main() {
A *p;
A x[2]={1,2};
p=new A[3];
delete []p;
}

31.#include
class A {
int *a;
public:
A(int x=0):a(new int(x)){}
~A() {delete a;}
int getA() {return *a;}
void setA(int x) {*a=x;}
};
void main() {
A x1,x2(3);
A *p=&x2;
p->setA(x2.getA()+5);
x1.setA(15+x1.getA());
cout<}


《深圳自考网》免责声明:

1、由于考试政策等各方面情况的调整与变化,本网提供的考试信息仅供参考,最终考试信息请以省考试院及院校官方发布的信息为准。

2、本站内容部分信息均来源网络收集整理或来源出处标注为其它媒体的稿件转载,免费转载出于非商业性学习目的,版权归原作者所有,如有内容与版权问题等请与本站联系。联系邮箱:812379481@qq.com