• u******* 加入了本站
  • 游客 下载了资源 LED 灯月亮灯 001 [高分辨率] 3d打印图纸stl文件
  • 游客 下载了资源 LED 灯月亮灯 001 [高分辨率] 3d打印图纸stl文件
  • 游客 购买了资源 国开学习网电大《☆电子商务法律与法规》形考任务四答案
  • 游客 下载了资源 国开电大《Flash动画制作》形考课程考核成品答案实训5:补间动画
  • 游客 购买了资源 国开电大《Flash动画制作》形考课程考核成品答案实训5:补间动画
  • 游客 下载了资源 国开电大《Flash动画制作》形考课程考核成品答案实训4:引导层和遮罩层的应用
  • 游客 购买了资源 国开电大《Flash动画制作》形考课程考核成品答案实训4:引导层和遮罩层的应用
  • 游客 下载了资源 国开电大《Flash动画制作》形考课程考核成品答案实训3:元件和库应用
  • 游客 下载了资源 国开电大《Flash动画制作》形考课程考核成品答案实训3:元件和库应用

电大试卷2004年7月1008面向对象程序设计

试卷代号:1008

中央广播电视大学2003-2004学年度第二学期“开放本科”期末考试

计科网络、计科应用
计科硬件

专业面向对象程序设计试题

2004年7月

一、单项选择(毎小题1分,共12分)

1.设x和y均为bool量,则x| |y为假的条件是()

A.它们均为真

B.其中一个为真

C.它们均为假

D.其中一个为假

2.假定一个二维数组的定义语句为“int a[3][4]={{3,4),{2,8,6}};”,则元素 的值为().

A. 2

B. 4

C. 6

D. 8

3.以下错误的描述是()

A.出现在一个表达式中
B.出现在执行语句中
C.作为–个函数的实参
D.作为一个函数的形参

4.关于局部变量,下面说法正确的是()

A.定义该变量的程序文件中的函数都可以访问
B.定义该变量的函数中的定义处以下的任何语句都可以访问
C.定义该变量的复合语句中的定义处以下的任何语句都可以访问
D.定义该变量的函数中的定义处以上的任何语句都可以访问

5.假定P是具有int* *类型的指针变量,则给p赋值的正确语句为()

A. p=new int;

B. p=new int * ;

C. p=nfew int * * ;

D. p—new int[10] ?

6.软件产品在需求发生变化、运行环境发生变化或发现软件产品本身的错误或不足时进

行相应的软件更新的难易程度叫做软件的(

).

A.可维护性

B.可复用性

C.兼容性

D.正确性

7. 若需要把一个类外定义的成员函数指明为内联函数,则必须把关键字( .)放在函数原型或函数头的前面。

A. in

B. inline

C. inLine

D. InLiner .

8. 在一个用数组实现的队列类中,假定数组长度为MS,队首元素位置为first,队列长度 为length,则队尾的后一个位置为( )。

A. length+1

B. first+length

C. (first + length—”1) %MS

D. (first+length)%MS

9.假定一个类的构造函数为 “A(int aa.int bb) {a = aa; b = aa * bb; }”,则执行”A x(4,

5)产语句后,x. a和x. b的值分别为(

)。

A. 4 和 5

B.5 和 4

C. 4 和 20

D. 20 和 5

10.假定AB为一个类,则执行“AB*p=new AB(1,2);”语句时共调用该类构造函数的次数为( )。

A. 0

B. 1

C. 2

D「3

11.一个类的成员函数也可以成为另一个类的友元函数,这时的友元说明( )。

A.需加上类域的限定

B.不需加上类域的限定

C.类域的限定可加可不加

102

D.不需要任何限定

12.关于插入运算符<V的重载,下列说法不正确的是( )o

A.运算符函数的返回值类型是ostream &。
B.重载的运算符必须定义为类的成员函数。
C.运算符函数的第一个参数的类型是ostream &。
D.运算符函数有两个参数。

得分|评巻人

二、填空(每空1分,共14分)

1.当执行cout语句输出endl数据项时,将使C++显示输岀屏幕上的光标从当前位置移 动到 的开始位置。
2.假定x和y为整型,其值分别为16和5,则x/y和double(x)/y的值分别为 和

3.执行switch语句时,在进行作为条件的表达式求值后,将从某个匹配的标号位置起向 下执行,当碰到下一个标号位置时 执行。
4.strlen(”apple”)的值为 ,strcmp(”a”,”A”)的值为 .
5.C++程序运行时的内存空间可以分成全局数据区,堆区,栈区和 区。
6.假定a是一个一维指针数组,则a+i所指对象的地址比a大 字节。
7.已知语句“ coutVVp;”的输出是“ Hello!”,则语句“ cout<< * p;”输出的是

8.如果一个派生类只有一个唯一的基类,则这样的继承关系称为 。
9.假定AA是一个类,“AA * abcOconst;”是该类中一个成员函数的原型,在该函数体中
向* this或其成员赋值。
10.假定用户没有给一个名为AB的类定义构造函数,则系统为其定义的构造函数为

11.假定用户为类AB定义了一个构造函数“AB(intaa){a=aa;}”,该构造函数实现对数 据成员—的初始化。
12.作为类的成员函数重载一个运算符时,参数表中只有一个参数,说明该运算符有 个操作数。

三、程序填充,对程序、函数或类中划有横线的位暈,根据题意按标号 把合适的内容填写到程序下面相应标号的后面(毎小题6分,共

24 分)。

10

1.下面程序计算出

i=l

音的值。

# include<iostream. h>

void mainO

double x,pl==l,p2 = l,s=:0;

int i,j==l;

cout«w输入x的值:七

cin>>x;

for(i=l ;i< = 10;i+ + ) (

pl * = (1) ;

p2 * = (2) ; s+=j * pl/p2; 〃j 的值为(一 1)中 j= ⑶ ;

)

coutV Vs V Vendl;

}

(1)

(2)

(3)

  1. 假定有定义为”struct NODE(int data;NODE * next?} 5»,下面算法是依次显示输以L 为表头指针的链表中各结点的值。

void ff(NODE * L)

{

for( (1) ;p! =NULL; (2) )

cout« (3) VV’气

coutV Vendl;

)

(1) (2) (3)

  1. 假定有定义为”struct NODE(int data;NODE* next;};”,下面算法是把以L为表头 指针的链表中各结点依次按相反次序链接并返回新链養的表头指针。

NODE* f8(NODE* L)

(

if(L==NULL) return NULL;

NODE * p=NULL, * p=L, * t;

while(q! =NULL)(

t=q;

q= (1) ;

t—>next= (-2) ;

P = t;

}

(3) ;

}

(1) (2) (3)

4已知一个利用数组实现栈的类定义如下:

const int ARRAY_SIZE= 10 ;

class Stack (

public:

void Init()(top= —1?} //初始化栈为空

void Push(int newElem); 〃向栈中压入一个元素

int Pop(); 〃从栈顶弹出一个元素

bool Empty()( 〃判栈空

if(top= = — 1) return true;else return false;}

int DepthO {return top+1;) //返回栈的深度

void PrintO ;

〃按照后进先出原则依次输岀栈中每个元素,直到栈空为止 private;

intelemEARRAY_SIZE]; 〃用于保存堆栈元素的数组

int top; 〃指明栈顶元素位置的指针

};

该类的Pop和Print函数的实现分别如下:

(1) (

if(top= = —1)(

cout<V”栈空” VVendl;

exit(l); 〃中止运行

)

return (2) ;

}

void Stack: : PrintO (

while(! Empty())

cout« (3) VV,’;

coutV Vendl;

}

(1) (2) (3)

 四、写出程序运行结果(毎小题8分,共16分)

  1. # include<iostream. h>

int a[8]= {36,25,20,43,12,70,66,35};

void main()

{

int s0,sl»s2;

s0=sl = s2 = 0;

for(int i=0;i<8;i+ + )(

switch(a[i]%3) {

case 0 : sO + = a[i] ; break ;

case 1 : sl+ =a[l] ; break;

case 2 : s2 + = a[iJ ; break ;

}

}

cout«s0«< ?«S1«4 ,«s2«endl;

}

  1. # include<Ciostream. h>

# include< string. h> class CD{

char * a;

int b;

public:

void Init(char * aa,int bb)

(

a = new char[strlen(aa) +1J ; strcpy(a,aa):

b==bb;

char * GetaO (return a;}

iht GetbO (return b ;}

void OutputO {coutWaVV” VVbVVendl;)

};

void main()

(

CD dx,dy;

char a[20] j

dx. Init(rtabcdefw, 30);

strcpyCa»dx. Geta());

strcat(a,“xyz”);

dy. Init(a,dx. GetbO + 20);

dx. OutputO ;

dy. OutputO :

} 得分[评卷人

五、指出程序或函数的功能(毎小题6分,共12分)

1. # includeCiostream. h>

井 includeVstdlib. h>

井 include<math. h>

void main()

{

int i=10,a;

while(i>0) (

a=rand() %90 + 10;

int j,k=int(sqrt(a) +le—5) ; 〃sqrt(x)为求 x 的平方根函数 for (j = 2;jV = k:j++ )

if(a%j = =O) break;

if(j>k) {coutVVaVV” ;i ;}

  1. void Input(IntNode * & f)

int n;

cout««从键盘给n输入一个整数产;

do cin>>n; while(n<C0);

if(n==0) (f=NULL;returm}

f=new IntNode;

IntNode * p=f;

coutVV “从键盘输入” V VnV V”个整数:”;

while (n ) (

p=p—>next=new IntNode;

cin> > p—> data;

}

p—>next —NULL;

p=f; f = f — >next;delete p;

}

假定IntNode的类型定义为:

struct IntNode {

int data; 〃结点值域

IntNode * next; 〃结点指针域

得分评巻人

六、程序改错,国根据程序段或函数模块的功能改写个别地方的错误 (6 分)。

假定要求下面程序的输出结果为“11/15”,其主函数中存在着三行语句错误,清指出错误 语句行的行号并改正错误行。

井 include<Ciostream. h>

class Franction ( 〃定义分数类

int nume; 〃定义分子

int deno; 〃定义分母

public:

〃把*this化简为最简分数,具体定义在另外文件中实现

void FranSimpO ;

〃返回两个分数* this和x之和,具体定义在另外文件中实现

Franction Fran Add (const Franction&- x);

〃置分数的分子和分母分别0和1

void InitFranctionO (nume=0; deno=l;}

〃置分数的分子和分母分别n和d

void InitFranction (int n, int d) (nume=n; deno=d;)

//输出一个分数

void FranOutputO {cOutVVrwmeVV’/’WdeuoVVendl;}

void mainO 〃1行
( 〃2行
Franction a,b,c, 〃3行
a. InitFranction(6,15); 〃4行
b. InitFranction(l); 〃5行
c. InitFranctionO ; 〃6行
c=FranAdd(a,b); //7行

coutVVc. numeVV’/‘VVc. deno<<endl? //8 行

} 〃9行

错误行的行号为―__、 和 O

分别改正为 .、 和

得分I评卷人

七、编程(每小题8分,共16分)

1.计算1 + 3 + 32+…+3】。的值并输出,假定分别用i,p,s作为循环变量、累乘变量和累 加变量的标识符。

2-根据下面类中Uion函数的原型和注释写出它的类外定义。

class Array (

int*a; 〃指向动态分配的整型数组空间

intn; //记录数组长度

public:

Array (int aa口,int nn); 〃构造函数,利用aa数组长度rm初始化n,

〃利用aa数组初始化a所指向的数组空间

Array(Array& aa); 〃拷贝构造函数

ArrayGive(Airay& aa); 〃实现 aa 赋值给 * this 的功能并返回 * this

Array Uion(Array& aa); 〃实现* this和aa中的数组合并的功能,把合并

〃结果(其长度为两数组长度之和)存入临时对象并返回

int LenthO {return n;) 〃返回数组长度

void PrintO { 〃输出数组

for(int i = 0;iVn; i+ + )

cout<<a[i]<<”;

cout<<Cendl;

};

 

 

 

 

试卷代号:1008

中央广播电视大学2003-2004学年度第二学期“开放本科”期末考试

应用专业面向对象程序设计

试题答案及评分标准

(供参考)

2004年7月

一、单项选择(毎小题1分,共12分)

1. C 2. C

3. D

4. C

5. B 6. A

7. B

8. D

9. C 10. B

11. A

12. B

二、填空(每空1分,共14分)

1-下一行

2. 3 3. 2

不停止(或继续)
5 1
代码
4*i
H
单继承
不能够(不允许)
ABO {}
a

12.2

三、程序填充,对程序、函数或类中划有横线的位置,根据题意按标号把合适的内容填写到程序

下面相应标号的后面(每小题6分,共24分)

1. (l)x 〃2 分

112

(2)i 〃2 分

(3)-j 〃2 分

2.

(l)NODE* p=L

〃2分

(2)p=p—>next

〃2分

(3)p~~>data

〃2分

3.

(l)q—>next

〃2分

(2)p

〃2分

(3)return p

〃2分

4.

(a)int Stack: :PopO

〃2分

(b)elemEtop ]

〃2分

(c)Pop()

〃2分

四、 写出程序运行结果(每小题8分,共16分)

1.114 138 55 〃每个数据占3分,全对给8分

2. abcdef 30 〃4分,每个数据2分

abcdefxyz 50 〃4分,每个数据2分

五、 指出程序或函数的功能(毎小题6分,共12分)

随机产生出10个10至100(或99)之间的素数并显示出来。
首先从键盘上输入一个整数给n,然后依次输入n个整数建立以表头指针为f的链表。 评分标准:根据叙述情况酌情给分。

六、 程序改错,请根据程序段或函数模块的功能改写个别地方的错误(6分)。

错误行的行号为5 7 8 ,

分别改正为 b. InitFranctiond ,3) ; c=a. FranAdd(b) ; c. FranOutputO

评分标准:共6个数据,每个数据1分。

七、 编程(毎小题8分,共16分)

评分标准:根据编程情况酌情给分。

1.

# include<iostream. h>

void main()

int i; 〃用i作为循环变量

int p=l; 〃用p作为累乘变量

int s= 1; 〃用s作为累加循环变量

for(i=l ;i< = 10;i+ + ) (p * = 3;s+ = p;} coutWsV Vendl ;

}

2.

Array Array: :Uion(Array&aa) (

int k = n+aa,n;

int * w=new int[k];

int i;

for(i = 0;iVn;i + + )w[i] = a[i];

for(i = 0;iVaa. n;i+ + ) w[i+n] = aa.

Array r(w,k);

return r ;

资源下载
下载价格1
点点赞赏,手留余香 给TA打赏

AI创作

评论0

请先
支持多种货币
支持多种货币付款,满足您的付款需求
7天无忧退换
安心无忧购物,售后有保障
专业客服服务
百名资深客服7*24h在线服务
发货超时赔付
交易成功极速发货,专业水准保证时效性
显示验证码

社交账号快速登录

微信扫一扫关注
扫码关注后会自动登录