试卷代号:1008
中央广播电视大学2010-^2011学年度第一学期“开放本科”期末考试
面向对象程序设计试题
2011年1月
一.单项选择题{每小题2分,共 20分)
1、用来构成C十+程序文件的基本单位是() .
A.字符
B.语句
C.函数
D.表达式
2.在下列的符号常量定义中,错误的定义语句是(》。
A. const double DD-3.14;
B. const int M =- 20;
c. const char ch;
D. const bool mark-true;
3.下面给字符数组赋初值时,正确的语句是()。
A. char s1[]-“abcdef”;
B. char s2[4 ]”abcd”;
c. char s3[2][3]= { “abc”, “xyz2” ‘ ;
D. char s4[4][]-{’ ‘l;
4.假定一条定义语句为“int a[10];”,则下面()表示数组a中下标为3的元素不正确。
A. a[3]
B*(a+3)
C. a[2+1];
D. * a+3
5.在一个完整类的定义中,应包含有()成员的定义。
A.数据
B函数
C.数据和函数
D.数据或函数
6.假定AA为一个类,a()为该类公有的函数成员,x为该类的一个对象,则访问x对象中函数成员a()的格式为()。
A. x.a
B. x. a()c. x一>aD. x一>a()
7.假定AA是一个类,abc()是该类的一个成员函数,则参数表中隐含的第一个参数的标识符为( )。
A. abc
B. int
C. this
D. bool
8.对于一个类的构造函数,其函数名与类名()。
A.完全相同
B.基本相同
C.不相同
D.无关系
9.假定AB为一个类,则执行“AB * s=new AB(a,5); “语句时得到的一个动态对象为()
A. s
B.5一>a
C. s.a
D.* s
10.若派生类公有继承基类,则基类的公有和保护成员在派生类中将()成员。
A.全部变成公有
B全部变成保护
C全部变成私有
D.仍然相应保持为公有和保护
二、填空题(每小题2分,共20分)
11.存储字符串誓需要占用 个字节.
12.重载一个函数的条件是,该函数必须在参数的 或参数对 应的类型上与其它同名函数不相同。
13.假定p是一个指向整数对象的指针,则用 表示该整数对象。
14.元素a[i]的指针访问方式为 。
15.已知有语句为“int a[3]={8,7,9};”,则* a + 5的值为 。
16.已知有语句为“for(int i = 0; i< = n; i+ + ) S;”,则i的取值次数为 „
17.对类中对象和基类成员的初始化只能通过在构造函数中给出的(函数体/初始化表) 来实现。
18.假定AB为一个类,则执行l,ABa, b(2), c[3] , *p=&a;”语句时共调用该类无参构 造函数的次数为 次。
19.假定派生类及其基类中都定义有同名函数成员,若要在派生类中调用基类的同名函 数成员时,就需要在其函数名前加上 和类区分符。
20.派生类的成员函数能够直接访问所含基类的 成员和保护 成员。
三、程序填充题,根据题意在横线上填写合适的内容。(每小题6分,
共24分)
21.统计出字符串参数中英文字母的个数并返回。
int countCchar str[J){
int num=0; 〃给统计变量赋初值
for(int i= 0 ; str[i]; i + + )
if(str[i]>=,a, && str[门V=’z’ [ I str[i]〉=’A’ && str[i]V=’Z’)
return num;
}
22.对数组a[n]中的n个元素按照相反次序排列。
void AA(int Jni n)
int i;
for(i = 0;i<Cn/2 ;i + +) {
int x=a[i]; a[il ~a[n— 1一门;
23.类A的定义,按注释填写内容,
class A (
char * a;
public:
〃定义无参构造函数,使a的值为空
A(char * aa) {
a= new char[slrlen(aa) + 1]
strcpyfa,aa);
— AO (delete □心}
};
24.类Goods的定义,按注释填写内容
class Goods
(
private •
char name[20j ;
int weight: static int totalW ;
public:
Goods (char * str,int w) ( strcpyCname,str); weight —w; totalW+ — weight ;
}
static int GetTotalWO {
//商品名称
〃商品重量
〃同类商品的总重量
//构造函数
〃返回同类商品的总重量
};
int Goods: : totalW = 0 ;
四、理解问答题,分别写出前2小题的程序运行结果和后2小题的函 数功能。(每小题6分,共24分)
25.include^iostream. h>
void niain()
(
int x=5 ; switch(2 * x—3) {
case 4: coutWxVV’ ? ; break; case 7: cout<<2 * x+K<? ? ; break; case 10: coutVV3 * x— 1VV’ ‘; break; default: cout<C<CfZdefaultz/<<endl;
>
运行结果:
26.S include<iostream. h>
include<Cstring. h〉
void mainO
{
int i ,len —0 ;
char a[3][8]= {“yeaWmonthCday”}; for(i = 0;iV3;i+ + )
len+ = sirlen(a[i]); cout<<len<C<endl;
}
运行结果;
27.int PPCint n)
(
int i,s = 0;
for(i~ 1.i<;™n;i + + ) s+ * i;
return s;
函数功能:
28.int FindMinCIntNode * f) //f为一个单链表的表头指针
(
if(! f) (cout<V”链表为空,退出运行! \n”; exit(l);} int min=f—>datas 〃将第1个结点的值赋给min IntNode *p=f->next; 〃p 指向第 2 个结点 while(p) ( 〃循环扫描结点
if(p一>data<min) min= p—>data;
p = p —〉next;
}
return min;
}
函数功能:
五、编程题(每小题6分.共12分)
29.按照下面函数原型语句编写一个递归函数求出并返回数组a中n个元素之和 int f(int 旺],int n);
30.根据下面类中Find函数成员的原型和注释写岀它的类外定义.
class AA (
int * a;
int n;
public:
AACint aa口 , int nn) {
n=nn; a_aa;
}
int FFCint x), 〃从数组应n]中顺序查找出大于x的元素个数并返回
试卷代号:1008
中央广播电视大学2010-2011学年度第一学期“开放本科”期末考试
面向对象程序设计试题答案及评分标准
(供参考)
2011年1月
一、 单项选择题(每小题2分,共20分)
I.C 2. C 3. A 4. D 5. C
6. B 7. C 8. A 9. D 10. D
二、 填空题(每小题2分•共20分)
II.2
12.个数(或数目)
13.* p
14.关(a+i)
15.13
16.n+1
17.初始化表
18.4
19.基类名
20.公有(或公用)
三’程序填充题,根据题窟在横线上填写合适的内容。(每小题6分,共24分)
21.num+ +
22.虬口一1 —i]= x
23.A(){a = 0;}或 A(){a=NULL;}或 A();a(0)(}或 AO :a(NULL) {}
24.return totalW
四、理解问答题,分别写出前2小题的程序运行结果和指出后2小题的程序或函数功能。(每
小题6分.共24分)
评分标准:第3、4小题根据叙述完整程度酌情给分。
25.11
26.12
27.计算并返回1到参数n值之间所有整数的平方之和。
28.遍历以f为表头指针的单链表.求出并返回f单链表中所有结点的最小值
五、编程题(每小题6分,共12分)
29.ini f(int a[] ,int n)
I
if(n=-O) return 0; 〃2 分
else return a[n—l] + f(a,n—1) ; 〃6 分
}
注:if 语句可改写为 if(n^ = l) return a[0];
30.int AA::FF(int x)
{
int c=0 j 分
for(int i=0; iVn; id- + )
if(a[i]>x) c-r + ; //5 分
return c; 〃6 分
)
评论0