面向对象程序设计期末考试

更新时间:2023-05-31 07:47:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

面向对象程序设计期末考试

中央广播电视大学2006-2007学年年度第一学期“开放本科”期末考试

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

2007年1月

一、单项选择题(每小题1分,共20分)

1.由C++源程序文件编译而成的目标文件的默认扩展名为( C )。

A.cpp B.exe C.obj D.lik

2.设x和y均为bool量,则x&&y为真的条件是( A )。

A. 它们均为真 B.其中一个为真

C. 它们均为假 D. 其中一个为假

3.在下面的二维数组定义中,正确的语句是( C )。

A.int a[5][]; B.int a[][5];

C.int a[][3]={{1,3,5},{2}}; D.int a[][10];

4.在文件包含命令中,被包含文件的扩展名( C )。

A.必须是 .h; B.不能是 .h;

C.可以是 .h或 .cpp; D.必须是 .cpp;

面向对象程序设计期末考试

5.要使语句“p=new int[10][20]”正确,p应事先定义为( D )。

A.int *p; B.int **p;

C.int *p[20]; D.int (*p)[20];

6.在关键字public后定义的成员为该类的( B )成员。

A.私有 B. 公有 C.保护 D.任何

7.假定AA为一个类,a为该类私有的数据成员,若要在该类的一个成员函数中访问它,则书写格式最好为( B )。

A.a B.AA::a

C.a( ) D. AA::a( )

8.队列具有( A )的操作特性。

A.先进先出 B.先进后出 C.进出无序 D.仅进不出

9.假定AB为一个类,则执行“AB a,b(3),*p”语句时共调用该类构造函数的次数为( D )。

A. 5 B. 4 C. 3 D. 2

10.在重载一个运算符时,其参数表中没有任何参数,这表明该运算符是( B )。

面向对象程序设计期末考试

A. 作为友元函数重载的1元运算符

B. 作为成员函数重载的1元运算符

C. 作为友元函数重载的2元运算符

D. 作为成员函数重载的2元运算符

二、填空题(每空2分,共20分)

1.当执行cout语句输出endl数据项时,将使C++显示输出屏幕上的光标从当前位置移动到 下一行 的开始位置。

2.假定x和y为整型,其值分别为16和5,则a/y和double(x)/y的值分别为 3 和 3.2 。

3.strlen(“apple”)的值为 5 。

4.C++程序运行时的内在空间可以分为全局数据区,堆区,栈区和 代码 区。

5.假定a是一个一维指针数组,则a+i所指对象的地址比a大 4×i 字节。

6.如果一个派生类只有一个唯一的基类,则这样的继承称为 单继承 。

面向对象程序设计期末考试

7.假定AA是一个类,“AA * abc()const;”是该类中的一个成员函数的原型,在该函数体中 不能够 向*this或其成员赋值。

8.假定用户没有给一个名为AB的类定义构造函数,则系统为其定义的构造函数为 AB( ) 。

9.假定用户为类AB定义了一个构造函数“AB(int aa){a=aa;}”,该构造函数实现对数据 a 的初始化。

10.作为类的成员函数重载地个运算符时,参数表中只有一个参数,说明该运算符有 2 个操作数。

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

1.打印出2至99之间的所有素数(即不能被任何数整除的数)。 #include<iostream.h>

#include<math.h>

void main()

{

int i,n;

面向对象程序设计期末考试

for(n=2;n<99;n++){

int temp=int(sqrt(n));//求出n的平方根并取整 for(i=2; ⑴ ;i++)

if(n%i==0) ⑵ ;

if(i>temp)cout<<n<<' ';

}

cout<<'\n';

}

⑴i<=temp ⑵ break

2.下面是对按从小到大排列的有序数组a[n]中进行二分查找x的算法,若查找成功返回该元素的下标,否则返回-1。

int BinnarySearch(int a[],int n,int x)

{

int low=0,high=n-1;//定义并初始化区间下界和上界变量 int mid; //定义保存中点元素下标的变量 while(low<=high){

面向对象程序设计期末考试

mid=(low+high)/2;

if(x==a[mid]); ⑴

else if(x<a[mid])high=mid-1;

else; ⑵

}

return -1;

}

⑴return mid ⑵low=mid+1

3.请补充完整如下的类定义:

#include<string.h>

class A{

char *a;

public:

A(){a=0;}//定义无参构造函数,使A的值为空

面向对象程序设计期末考试

A(char *aa){

a= ⑴ ;//进行动态存储分配

strcpy(a,aa);//用aa所指字符串初始化a所指向的动态存储空间

}

⑵ ;//定义析构函数,删除

};

⑴ new char[strlen(aa)+1]

⑵~A(){delete []a;}

4. 一个类定义如下:

class Goods

{

private:

char gd_name[20];

int weight; a所指向的动态存储空间

面向对象程序设计期末考试

static int totalweight;

public:

Goods(char *str,int w){

strcpy(gd_name,str);

weight=w;

totalweight+=weight;

}

~Goods(){totalweight-=weight;}

char * GetN(){ ⑴ ;}

int GetW(){return weight;}

static int GetTotal_weight(){

⑵ ;

}

};

⑴cout<<gd_name<<endl ⑵return totalweight

面向对象程序设计期末考试

四、理解问答题(写出前两小题的程序运行结果和指出后两小题的程序(或函数)所能实现的功能。每小题6分,共24分) 1. #include<iostream.h>

const int T=8;

void main()

{

int i,s=0;

for(i=1;i<=T;i++){

s+=i*i;

cout<<s<<' ';

}

cout<<endl;

}

运行结果:1 5 14 30 55 91 140 204

2. #include<iostream.h>

面向对象程序设计期末考试

class CE{

private:

int a,b;

int getmax(){return(a>b?a:b);}

public:

int c;

void SetValue(int x1,int x2,int x3){

a=x1,b=x2,c=x3;

}

int GetMax();

};

int CE::GetMax(){

int d=getmax();

return(d>c?d:c);

}

面向对象程序设计期末考试

void main()

{

int x=5,y=12,z=8;

CE ex;

ex.SetValue(x,y,z);

cout<<ex.GetMax()<<endl;

}

运行结果:12

3. int ff(int x,int y){

int z;

cout<<x<<'+'<<y<<'=';

cin>>z;

if(x+y==z)return 1;else return 0;

}

函数功能:输入2个整数相加的结果,结果正确返回1,否则返回0

面向对象程序设计期末考试

4.char *f(char *s){

int n=strlen(s);

char * r=new char[n+1];

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

if(s[i]>='a' && s[i]<='z')r[i]=s[i]-'a'+'A'; else r[i]=s[i];

r[n]='\0';

return r;

}

函数功能:将字符串中的小写字母转换为大写

五、编程题(每小题6分,共12分)

1. 按照下面函数原型语句编写一个递归函数求出并返回数组a中n个元素的平方和。

int f(int a[],int n)

程序如下:

int f(int a[],int n){

面向对象程序设计期末考试

if(n==1)return a[0]*a[0];

else return a[n-1]*a[n-1]+f(a,n-1);

}

2. 根据下面类中Sum函数成员的原型和注释写出它的类外定义。 class AA{

int *a;

int n;

int MS;

public:

void InitAA(int aa[],int nn,int ms) {

if(nn>ms){cout<<"Error!"<<endl;exit(1);} MS=ms;

a=new int[MS];

for(int i=0;i<n;i++)a[i]=aa[i];

}

面向对象程序设计期末考试

int Sum();//求出并返回数组a中前n个元素之和 };

程序如下:

int AA::Sum(){

int sum=0;

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

sum+=a[i];

return sum[U1] ;

}

本文来源:https://www.bwwdw.com/article/hyu4.html

Top