试卷代号:1008
中央广播电视大学2008-2009学年度第一学期“开放本科”期末考试
面向对象程序设计试题
2009年1月
一、单项选择题(每小题2分,共20分)
1.C+ +程序的基本功能模块为( )
A.表达式
B.标识符
C.语句
D.函数
2.当处理特定问题的循环次数已知时,通常采用()来解决。
A. for循环
B. while循环
C. do循环
D switch语句
3.下面函数原型语句正确的是()。
A. int Function( void a);
B. void Function (int),
c. int Function(a)
D. int(double a>
4.假定变量m定义为“int n=7;”,则定义变量p的正确语句为()。
A. int p= &m;
B. int * p=-&mt
C. int &.p * m;
D.int * p=m
5.假定变量a和pa定义为”double a[10], * pa = a;”,要将12. 35赋值给数组a中的下标为5的元素,不正确的语句是( )。
A. pa[5] = 12. 35;
B. a[5]=12. 35;
C. * (pa + 5) = 12. 35;
D. * (a[0] + 5) = 12. 35;
6.假定AA为一个类,a为该类私有的数据成员.GetValueO为该类公有函数成员,它返 回a的值,x为该类的一个对象,则访问x对象中数据成员a的格式为(,)a
A. x. a
B. x. a()
C. x—>GetValue()
D. x. GetValueO
7.类的构造函数是在定义该类的一个()时被自动调用执行的。
A-成员函数
B.数据成员
C.对象
D.友元函数
8.假定AB为一个类,则执行“AB X;”语句时将自动调用该类的( )。
A.带参构造函数
B,无参构造函数
C.拷贝构造函数
D.赋值重载函数
9-假定一个类AB只含有一个整型数据成员a,当用户不定义任何构造函数时,系统为 该类定义的无参构造函数为( )。
A. ABO (a=0;}
B. AB(int aa = 0): a(aa) {}
C. AB(int aa): a(aa) (}
D. ABO {}
10.如果表达式a+ +中的”+ + ”是作为普通函数重载的运算符,若采用运算符函数调 用格式,则可表示为( )
A. a. operator++ ()
B. operator+ +(a)
C. operator+ + (a,l)
D. operator++ (1 ,a)
二、填空题(每小题2分,共20分)
1.C++语言是在 语言的基础上发展起来的。
2.假定x=5,y=6,则执行表达式y*=x++计算后,y的值为 。
3.在if语句中,每个else关键字与它前面同层次并且最接近的 关键字相配套。
4.一维字符数组a[20]能够存储的字符串的长度至多为 o
5.假定p所指对象的值为25,p+1所指对象的值为42,则执行* p+ +运算后,p所指对 象的值为 。
6.若采用p~>abc(y)表达式调用一个成员函数,在成员函数中使用的 就代表 了类外的P指针。
7.当用户为一个类定义有 时,则系统不会为该类再自动生成一个默认 的构造函数。
8.假定用户只为类AB定义了一个构造函数“AB(intaa, intbb = 0) {a=aa; b=bb;}”, 则定义该类的对象时,其实参表中至少带有—个实参。
9.在重载一个单目运算符时,参数表中没有参数,说明该运算符函数只能是类的
10.重载一个运算符时,该运算符的优先级、 以及运算对象的个数都不允许 改变。
得分|评卷人
三、程序填充题,根据题意在横线上壊写合适的内容。(毎小题6分, 共24分)
1.斐波那契数列的第1和第2个数分别为0和1,从第三个数开始,毎个数等于其前两 个数之和。求斐波那契数列中的第10个数。
# included iostream. h>
void mainO (
int f,fl,f2,i;
fl = 0| f2= 1 i
for(i=3»i<= 10»i+ 4 ) {
f= ;
fl = f2j
f2 = ;
)
coutV VfV Vendh
}
2.假定有定义为“struct NODE(int data; NODE* next;};”,下面算法根据table数组中 的n个元素建立一个表头指针为L的链表,链表中结点值的顺序与数组元素值的顺序相同。
void f5(NODE » & L, int table口, int n) {
if(nV = 0) {L=NULL; return;}
L=new NODE, 〃生成附加的表头结点
int i = 0 j
NODE * p=L;
while( ) {
p=p—>next=new NODE;
p — > data = ;
i+ + i
}
p->next=NULL; 〃把最后一个结点的指针域置空 L=L一〉next* 〃使L指向链表的第一个带值的结点
}
3.类A的定义
class A {
int a;
public:
A() (a=0;}
A(int aa);a(aa)() 〃定义构造函数,用参数aa初始化数据成员a
}|
mainO (
; 〃定义类A的指针对象p
; 〃用P指向动态对象并初始化为整数5
}
4.类Goods的定义
class Goods (
private;
char name[20]> 〃商品名称
int weightj 〃商品重量
public:
Goods (char * str»int w){ 〃构造函数
strcpy(name»str);
weight = w;
}
char » GetNO { 订 〃返回商品名称
nt GetWO{ ;} //返回商品重量
四、理解问答题,分别写出前2小题的程序运行结果和指出后2小题
的程序或函数功能。(毎小题6分,共24分)
1.甘 includeViostream. h>
int a[6]= {3,10.15,8,12,5);
void mainO (
int s0,sl,s2;
s0 = si —s2 = 0»
for(int i = 0; iV6; i+ + ) (
switch(a[i]%3) (
case 0 i s0+ = a[i] jbreakj
case 1 * si + =a[i] [break;
case 2 * s2+=a[i]; break.
}
cout«sO«, ‘VVslVV’ ,<<s2«endlj
)
运行结果:
2.# includeViostream. h>
# includeVstring. h>
class CD {
char * a
int b(
public:
void lnit(char * aat int bb) {
a = new char[strlen(aa) + l];
strcpy(a*aa) t
b=bbj
}
void OutputO {coutVVaVV’ ‘VVbVVendl;)
}.
void main() {
CD dxi
dx. Init(“abcdel” ,30)
dx. OutputO I
}
运行结果:
3.void SJ(int n> {
int i=0,x$
while(iVn) {
x=rand() %90+10; if(x%2==0) continue» i+ + § coutVVxVV’、
}
}
函数功能:
4.int fun8(int a[]. int n) (
int s = 0;
for(int i = 0j iVn;,i+ + ) s+ =a[ijj return s«
}
函数功能:
五、埔程题(毎小题6分,共12分)
L求满足表达式22+42+.;. +n2的值,其中n取从键盘输入值的最大偶数。假定分别 采用i和s作为循环变量与求和变量,并限定使用for循环编程。
2.编写出下面Strings类的构造函数的类外定义。
class Strings (
char *s;〃指向动态分配的字符串数组空间
intn;〃记录字符申长度
public:
Strings(char * str)»//构造函数
试卷代号:1008
中央广播电魏大学2008-2009学年度第一学期“开放本科’‘期末考试
面向对象程序设计 试题答案及评分标准
(供参考)
. 2009年1月
一、 单项选择题(毎小题2分,共20分)
1.D 2. A 3. B 4. B 5. D
6. D 7. C 8. B 9. D 10. C
二、 填空题(毎小艇2分,共20分)
1.C
2.30
3.if
4.19
5.42
6.this
7.构造函数
8.1
9.成员函数
10.结合性
三、 程序填充題,根据题憲在横线上壊写合造的内容。(毎小题6分,共24分)
评分标准:每空3分
1.fl + f2 f
2.iVn table[i]
3.A * p p=new A(5)
4.return name .return weight
四、 理解问答题,分别写出前2小题的程序运行结果和指出后2小题的程序或函數功能。(毎 小.6分,共24分)
评分标准:第3、4小题根据叙述完整程度酌情给分。
1.30 10 13
2.abcdef 30
3.随机产生并输出n个11至99之间的素数。
4.计算并返回一维数组a中n个元素之和。
五、 编程題(毎小題6分,共12分)
评分标准:根据编程情况酌情给分。
1.# includeViostream. h>
void main()
int n, i = 0, s=0) //I 分
cin>>nj //2 分
if(n%2= = 1) n=n—1 ; 〃3 分
for(i = 2j i< = nj i+=2) s+=i*i; 〃5 分
coutVV”s= “VVsVVendl; ‘ 〃6 分
}
2.Strings:: Strings(char * str) { 〃1 分
n=strlen(str) j 〃2 分
s = new char[n+1] ; 〃4 分
strcpy(s,str) I 〃6 分
评论0