中央广播电视大学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[1][2]
的值为( )。 ·
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=new 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.1ength+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.类域的限定可加可不加 D.不需要任何限定
12.关于插入运算符<<的重载,下列说法不正确的是( )。
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.已知语句"cout<
。 来源:网络整理 免责声明:本文仅限学习分享,如产生版权问题,请联系我们及时删除。 相关文章: 假如由你负责组织开展七一建党主题活动日,你策划了参观04-27 你是某市局办公室主任,办公室还有副主任老王,科员小李,今04-27 为了深化“放管服”改革,江苏省推出“好差评”微信小程04-27 你是信访局的,有人打来电话说有群众打电话举报,你说:“这04-27 疫情期间,身处国门战“疫”一线的海关人勇敢“逆行”留04-27 最近防疫工作不断升级,市级部门要求延缓休假,所有基层岗04-27 你是科长,手下有副科长老李和刚进入单位一年的小王,今天04-27 鸵鸟总是认为自己比別人都聪明。一天,它在沙滩上散步,突04-27
8.如果一个派生类只有一个唯一的基类,则这样的继承关系称为 。
9.假定AA是一个类,"AA*abc()consl;"是该类中一个成员函数的原型,在该函数体中 向*this或其成员赋值。
10.假定用户没有给一个名为AB的类定义构造函数,则系统为其定义的构造函数为11.假定用户为类AB定义了一个构造函数"AB(int aa){a-aa;)",该构造函数实现对数
据成员--的初始化。
12.作为类的成员函数重载一个运算符时,参数表中只有一个参数,说明该运算符有 个操作数。
三、程序填充,对程序、函数或类中划有横线的位置,根据题意按标号
把合适的内容填写到程序下面相应标号的后面(每小题6分.共24分)。
1.下面程序计算出"'署的值。
# include< iostream . h>
void main( )
{
double x,pl=1,p2=l,s-O;
int i,j=1;
cout <<"输入x的值:";
cin>>x;
for (i=l;i<=10;i++){
pl*= (1) ;
p2*= (2) ;
s十一j*pl/p2; //j的值为(一1)
j= (3) ;
2.假定有定义为"struct NODE(int data;NODE*next;);",下面算法是依次显示输以L为表头指针的链表中各结点的值。
void if(NODE*L)
{
for( (1) ;p!=NULL; (2) )
'
tout<< (3) <<'';
cout<
(1) (2) (3)
3.假定有定义为"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) ;
4.已知一个利用数组实现栈的类定义如下:
const int ARRAY-SIZE=10;
class Stack {
public:
void Init()(top= -l;) //初始化栈为空
void Push(int newElem); //向栈中压入一个元素
int Pop(); //从栈顶弹出一个元素
bool Empty(){ //判栈空
if(top = = -1)return true;else return false;)
int Depth()(return top+I;) //返回栈的深度
void Print ();
//按照后进先出原则依次输出栈中每个元素,直到栈空为止
private;
int elem[ARRAY_SIZE]; //用于保存堆栈元素的数组
int top; //指明栈顶元素位置的指针
};
该类的Pop和Print函数的实现分别如下:
-----------(1)----------{
if(top = = -1){
cout<<"栈空"<
}
return--(2)--;
}
void Stack::Print(){
while(!Empty())
COUt<< (3) <<'';
cout<
(1) (2) (3)
四、写出程序运行结果(每小题8分,共16分)
1.#inctude
int a[83={36,25,20,43,12,70,66,35);
void main()
{
int sO,sl,s2;
sO=sl=s2=O:
for(int i=O;i<8;i++){
switch(a[-i]%3)(
case 0:sO+=a[i];break
case 1:sl+=a[1];break;
case 2:s2+=a[i];break
}
} .
cout<
2.#include
#include
class CD(
char*a:
int b;
public:
void Init(char*aa,int bb)
{
a=new charl-strlen(aa)十1];
strcpy(a,aa):
b=bb:
}
char*GetaO(return a;)
iht Getb(){return b;)
void Output(){cout< };
void main()
{
CD dx,dy;
char a[20];
dx.Init("abcdef",30);
strcpy(a,dx.Geta());
strcat(a,"xyz");
dy.Init(a,dx.Getb()+20);
dx.Output();
dy.Output():
}
五、指出程序或函数的功能(每小题6分,共12分)
1.#include<[ostream.h>
#include
#include
void main()
{
int i=10,a;
while(i>O){
a=randO%90+10;
int j,k=int(sqrt(a)+le一5); //sqrt(x)为求x的平方根函数
for(j=2;j<=k:j++)
if(a%j==O)break;
if(j>k){cout< )
) -
2.void lnput(IntNode*&f)
(
int n;
cout<<"从键盘给n输入一个整数;";
do cin>>n;while(n
f=new IntNode;
IntNode*p=f;
cout<<"从键盘输入"<
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
class Franction(//定义分数类
int nume; //定义分子 .
int deno; //定义分母
public:
//把*this化简为最简分数,具体定义在另外文件中实现
void FranSimpO;
//返回两个分数*this和x之和,具体定义在另外文件中实现
Franction FranAdd(const Franction&x);
//置分数的分子和分母分别0和1
void InitFranction(){nume=O}deno~-1;}
//置分数的分子和分母分别n和d
void InitFranction(int n,int d){nume=n;deno=d;}
//输出一个分数
void FranOutputO{cout<
void main() //1行
( 11z行
Franction fl,b,c, //3行
f1.InitFranction(6,15); //4行
b.1nitFranction(1); 115行
c.InitFranction(); /16行
c=FranAdd(a'b); //7行
eout<
错误行的行号为 、 ; 。
分别改正为 和 。
七、编程(每小题8分,共16分l
1.计算1+3+3。+...+3。。的值并输出,假定分别用i,p,s作为循环变量、累乘变量和累
加变量的标识符。
2,根据下面类中Uion函数的原型和注释写出它的类外定义。
class Arrayf
int*a; //指向动态分配的整型数组空闯
int n; //记录数组长度
public:
Array(im aaEJ,int nn); //构造函数,利用aa数组长度un初始化n,
//利用aa数组初始化a所指向的数组空间
Array(ArrayS.aa); //拷贝构造函数
Array~Give(Array aa); //实现aa赋值给*this的功能并返回*this
Array Uion(Array&aa); //实现*this和aa中的数组合并的功能,把合并
//结果(其长度为两数组长度之和>存入临时对象并返回
int LenthO{return n;) //返回数组长度
void Print()( //输出数组
for(int i=0;i
};
试卷代号:1008
中央广播电视J<-9 2003--2004学年度第二学期"开放本科"期末考试
计科网络、计科应用
计科硬件
专业
面向对象程序设计试题答案及评分标准
(供参考)
一、单项选择(每小题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
3.不停止(或继续)
4.5 1
5.代码
6.4*i
7.H
8.单继承
9.不能够(不允许)
lO.AB()(}
11.a
12.2
三、程序填充,对程序、函数或类中划有横线的位置,根据题意按标号把合适的内容填写到程序
下面相应标号的后面(每小题6分,共24分)
1.(1)X //2分
(2)i 112分
(3)--j 112分
2.
(1)NODE*p=L //z分
(2)p=p-->next //2分
(3)p--~>data //2分
3.
(1)q-->next //2分
(2)p //2分
(3)return P //z分
4.
(a)int Stack::Pop() 1/2分
(b)elem[top--] //2分
(c)PopO //2分
四、写出程序运行结果(每小题8分,共16分)
1.114 138 55 //每个数据占3分,全对给8分
2.abedef 30 114分,每个数据2分
abedefxyz 50 114分,每个数据2分
五、指出程序或函数的功能(每小题6分,共12分)
1.随机产生出lO个i0至ioo(~99)之间的素数并显示出来。
2.首先从键盘上输入一个整数给n,然后依次输入n个整数建立以表头指针为f的链表。
评分标准:根据叙述情况酌情给分。
六、程序改错,请根据程序段或函数模块的功能改写个别地方的错误(6分】。
错误行的行号为5 7 8
分别改正为b.InitFranction(1,3);c=a.FranAdd(b);c·FranOu。pu'()
评分标准:共6个数据,每个数据1分。
七、编程(每小题8分,共16分)
评分标准:根据编程情况酌情给分。
1.
#include
void main()
{
int i; //用i作为循环变量
int p=1; //用P作为累乘变量
int s=l; //用S作为累加循环变量
for(i=l;i<=10;i十+)(P*=3;s+=P;}
cout< )
2.
Array Array::Uion(Array~aa){
int k=n+aa,n;
int*w=new int[k]:
int i;
for(i=O~i
return r;
}