中央广播电视大学2005-2006学年度第一学期"开放本科"期末考试
计算机专业 面向对象程序设计 试题
2006年1月
一、单项选择题(每小题2分,共20分)
1.程序中主函数的名字为( )。
A.main B.MAlN
C Main D.任意标识符
2.为了提高程序的运行速度,可将不太复杂的功能用函数实现,此函数应选择( )。
A内联函数 B.重载函数
C递归函数 D.函数模板
3.将两个字符串连接起来组成一个字符串时,选用( )函数。
A.strlen() B.strcap()
C.strcat() D.strcmp()
4.用new运算符创建一维整型数组的正确语句是( )。
A.int*p=flewa[10] D.int*p=new noat[10]
C.int*p=newintCl0] D.int=p newin[5]={1,2,3,4,5}
5.假定有定义"int b[l0] int*pb;",则不正确的赋值语句为( )。
A.pb=b B.pb=&b[0]
C.pb=new int D.pb=b[5]
6.假定AA为一个类,a为该类公有的数据成员,x为该类的一个对象,则访问x对象中
数据成员a的格式为( )。
A.x(a) B.x[a]
C。 x一>a D. x.a
7.假定AB为一个类,则执行"ABx(a,5);"语句时将自动调用该类的( )。
A.带参构造函数 B.无参构造函数
C拷贝构造函数 D.赋值重载函数
8.对于任一个类,用户所能定义的析构函数的个数至多为( )。
A.0 B.1
C 2 D.任意个
9.对类中引用成员的初始化是通过构造函数中给出的( )实现的。
A.函数体 D.参数表
C初始化表 D.初始化表或函数体
10.如果表达式a==b中的"=="是作为普通函数重载的运算符,若采用运算符函数调
用格式,则可表示为( )。
A.a.operator==(b) B.b.operator==(a)
C.operator==(a,b) D.operator==(b,a)
二、填空题(每小题2分,共20分)
1.常数一4.205和6.7E-9分别具有 和 位有效数字。
2.元素类型为double的二维数组a[4][6]共有 个元素,共占用
字节的存储空间。
3.假定对二维数组a[3][4]进行初始化的数据为{3,5,6,2,8,7},则a[1][1]和a
[2][3]分别被初始化为 和 。
4.假定p为指向二维数组intd[4][6]的指针,则p的类型为 ,其中一个元素d
[i][j]表示成指针访问方式为
5.已知变量a定义为"int a=5;",要使ra成为a的引用,则ra应定义为 ,要使rb指向a,则rb应定义为 。
6.若只需要通过一个成员函数读取其数据成员的值,而不需要修改它们,则应在函数头的后面加上 关键字;若只需要读取引用参数的值,不需要对其修改,则应在该参
数说明的开始使用 关键字。
7.假定一个类对象数组为A[N],当定义该数组时,将自动调用该类的无参构造函数的次数为 次,当离开它的作用域时,将自动调用该类析构函数的次数为 次。
8.假定AB为一个类,则类定义体中的"AB(AB&x);"语句为该类 的原型语句,而"operator=(AB& x);"为该类 的原型语句。
9.在定义一个派生类时,使用 关键字表示为私有继承,使用 关键宇表示为公有继承。
10.重载一个运算符时,该运算符的 、 以及操作符的个数不允许改变。
三、程序填充题(对程序、函数或类中划有横线的位置,根据题意按标
号把合适的内容填写到程序后面的标号处。每小题5分,共20
分)
1.在输出屏幕上打印出一个由字符'x'组成的等腰三角形,该三角形的高为5行,从上到 下每行的字符数依次为1,3,5,7,9。
#include
void main()
{
int i,j;
for(i=1; (1) ;i++)(2) )cout<<'';
else (3) ;
cout<
}
(1) (2) (3)
2.从一个字符串中删除所有同一字符后得到一个新字符串并输出。
#inClude
const int 1en:20;
vOiddelstr(chara[ ],charb[ ],charc);
vOidmain()
charstrl[1en],str2[1en];
CharCh;
cout<<"输入一个字符串:";
cin>>str"
cout<<"输入一个待删除的字符:";
cin>>ch;
delstr(strl,str2,Ch);
cout<
vOiddelstr(chara[ ],charb[ ],charc)
{
intj=0;
fOr(int i;0; (1) ;i++)
if( (2) )b[j++]=a[i];
b[j]= (3) ;
)
(1) (2) (3)
3.已知一维数组类ARRAY的定义如下,ARRAY与普通-维数组区别是:其重载的运
算符[]要对下标是否越界进行检查。
claSSARRAY{
int*vl //指向存放数组数据的空间
intSl //数组大小
public:
ARRAY(int a[],int n);
~ARRAY()delete[]v;
int size()return s;
int&operator[](intn);
};
(1) operator口(intn) //[]的运算符成员函数定义
{
if(n<0,I (2) )cerr<<"下标越界!";exit(1);
return (3) ;
}
(1) (2) (3)
4.一个类定义如下;
Class Point
{
private:
int x,y;
public:
Point()x=y=0;
Point(int xO,int y0)x=x0;y=y0;
intGetX()return xl
ihtGetY()returny;
void print()cout<<"Point("<
(2) ;//友元函数声明
};
POint operator+(POint&pt,inl dd)
//加号操作符重载函数,实现Point类对象与整数的加法
POint temp=pt;
temp.x+=dd;
temp.y+=dd;
return temp;
POint operator+(POint&ptl,POint&pt2)
//加号操作符重载函数,实现两个Point类对象的加法
POint temp=ptl;
temp.x+=pt2.x;
temp.y+=pt2.y;
(3) ;
(1)
(2)
(3)
四、理解问答题,写出前三小题的程序运行结果和指出后两小题的程
序(或函数)所能实现的功能。(每小题6分,共30分)
1.#include
const int B:2;
vOid main()
{
int p=1,S=1;
while(s<50)
p*=B;
s+=p;
cout<<"S="<
运行结果:
2. # include<iostream, h>
class CE
private:
int a,b;
int getmin() (return (a<b? a:b);
public:
int c;
void SetValue(int xl,int x2', int x3)
a=xl; b=x2; c=x3;
iht GetMin();
};
int CE: :GetMin()
iht d= getmin();
return (d<c? d: c);
void main()
{
int x=5,y=12,z=8;
CE * ep;
ep = new CE;
ep-->SetValue(x+ y,y-z, 10);
cout<<ep-> GetMin( ) <<Eendl;
CE a= * ep;
cout<<a. GetMin() * 3 + 15<<endl;
运行结果:
3. #include
class A {
iht a[10]; int n;
public:
A(int aa[], iht nn), n(nn) {
or(int i--OF i
int Get(int i) return alii;
int SumA(int nn) {
int s=O;
or(int j=O; j
};
void main() {
int ail= 2,5,8,10,15,20;
A x(a,4);
A y(a,6);
int d=l;
for(int i=0; i<4; i++) d*=x. Get(i);
iht f=y. SumA(5);
cout<<"d="<
4. #t include
include
#. include
const int N=1O;
int ff(int x, int y)
int z;
eout<
if(x+y==z) return l ; else return 0;
void main()
{
int a,b,c=0;
srand(time(0)) ; //初始化随机数序列
for(int i=0;i
b=rand() %20+1 ;
c+=ff(a,b) ;
cout<<"得分:"<
程序功能:
5. char * f(char * s){
int n= strlen(s);
char * r= new char[n+1];
for(int i=O; i
else r[i] = s[i] ;
r[n]='/o';
return r;
程序功能:
五、编程题(每小题5分,共10分)
1.编写一个函数,分别求出由指针a所指向的字符串中包含的每种十进制数字出现的次数,把统计结果保存在数组b的相应元素中,该函数的原型如下。
void fun(char* a, int b[ ])
2.根据下面类中CompareBig函数成员的原型和注释写出它的类外定义。
class AA {
int* a;
int n;
int MS;
public.
void InitAA(int aa[], int nh, int ms) {
if(nn>ms) cout<<"Error!"<
n=nn;
a=new int[MS]
for(int i=0; i
intCompareBig(AA&b);//比较*this与b的大小,从前向后按两数组
//中的对应元素比较,若,this中元素值大则返回l,若b中
//元素值大则返回一1,若相等则继续比较下一个元素,直到·
//一个数组中无元素比较,此时若两者的n值相同则返回o,
//否则若*this中的n值大则返回1,若b中的n值大则返回一1。
};
试卷代号:1008
中央广播电视大学2005-2006学年度第一学期"开放本科"期末考试
计算机专业 面向对象程序设计 试题
(参考答案)
2006年1月
一、单项选择题(每小题2分,共20分)
1.A 2.A 3.C 4.C 5.D
6.D 7.A 8.B 9.C 10.C
二、填空题(每小题2分,共20分) .
评分标准:每小题若有两个空,则每空1分;若只有一个空,则每空2分。
1. 4 2 2. 24 192
3.8 0 4.int(*)[6] *(*(d+i)+j)
5.int&ra=9; int**rb=&9; 6.const const
7.N N 8.拷贝构造函数 赋值重载函数
9.private public 10.优先级 结合性
三、程序填充题(对程序、函数或类中划有横线的位置,根据题意按标号把合适的内容填写到程
序后面的标号处。每小题5分。共20分)
评分标准:对一空给2分,对两空给4分,对三空给5分。
1.(1)i<=5
(2)j>:5+i
(3)cout<<'x'
2.(1)a[i](或a[i]!='\0')
(2) a[i]! =c
(3) '\0'
3.(1)int&ARRAY::
(2)n>=s
(3)v[n](或*(v+n))
2. int AA: :CompareBig(AA& b)
iht k;
if(n>b, n) k=b. n; else k=n;
for(int i=0; i
else if(a[i] if(k=:n && k==b. n) return O;
else if(k'
}
来源:网络整理 免责声明:本文仅限学习分享,如产生版权问题,请联系我们及时删除。
相关文章:
假如由你负责组织开展七一建党主题活动日,你策划了参观04-27
通过对办事大厅服务窗口的满意度调查,群众反映普遍存在04-27
你是某市局办公室主任,办公室还有副主任老王,科员小李,今04-27
为了深化“放管服”改革,江苏省推出“好差评”微信小程04-27
你是信访局的,有人打来电话说有群众打电话举报,你说:“这04-27
疫情期间,身处国门战“疫”一线的海关人勇敢“逆行”留04-27
最近防疫工作不断升级,市级部门要求延缓休假,所有基层岗04-27
你是科长,手下有副科长老李和刚进入单位一年的小王,今天04-27