试卷代号:1008
中央广播电视大学2009-2010学年度第二学期“开放本科”期未考试
面向对象程序设计试题
2010 年1月
得分|评卷人
一、单项选择题(每小题2分,共 20分)
1.用来构成C++程序文件的基本单位是().
A.字符
B,语句
C.函数
D.表达式
2.在下列的符号常量定义中,错误的定义是()。
A. const double DD=3.14;
B. const intM=20;
c. const char ch;
D. const bool mark == true;
3.下面给字符数组赋初值时,正确的语句是()。
A. char s1[]= “abcdef ” r
B. char s2[4]=”abcd” ;
C. char s3[2][3]一{ “abc”,”xyz” ‘;D. char s4[4][]={ ‘a’,’x’,’s’,’t ‘}﹔
4.假定一条定义语句为“int al10],x,* pa-a;”,若要把数组a中下标为3的元素值赋给x,则不正确的语句为()。
A. x=pa[3];
B.x= * (a+-3);
c. x=a[3];
D. x= * pa+3;
5.在一个完整类的定义中,应包含有()成员的定义。
A.数据
B.函数
C.数据和函数
D.数据或函数
6.假定AA 为一个类,a()为该类公有的函数成员,x为该类的一个对象,则访问x对象中函数成员a()的格式为()。
A. x.a
B. x.a(
C. x—>a
D. 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.s一>a
C. s.a
D.* s
10.若派生类公有继承基类,则基类的公有和保护成员在派生类中将(―)成员。
A.全部变成公有
B.全部变成保护
C.全部变成私有
D.仍然相应保持为公有和保护
二、填空题(毎小题2分,共20分)
1.在C+ +程序中包含一个头文件或程序文件的预处理命令的标识符为
2.C+ +常数0x45对应的十进制值为 °
3.元素类型为int的数组a[10]共占用 字节的存储空间。
4.在C++语言中,一个函数由函数头和 这两个部分组成。
5.一个指针类型的对象占用内存的—个字节的存储空间•
6.假定一个二维数组为c[5兀8],则的值为二维元素 的地址。
7.与结构成员访问表达式(* p). score等价的表达式是 。
8.对于类中定义的任何成员,其隐含访问权限为 。
9.假定AA是一个类,“AA* abc()产是该类中一个成员函数的原型,则在类外定义时的 函数头为 。
10.假定AB为一个类,则执行“AB a[20\”语句时,系统自动调用该类无参构造函数的 次数为 o
三、程序填充题(根据題意在横线上填写合适的内容。毎小题6分,
共24分)
1.下面函数是求两个整型参数a和b的最小公倍数。
int f2(int a, int b)
(
int 1=2, p=l;
do {
while(a%i= =0 && ) {
P* =i; a/ = i; b/ = i;
)
i++;
}while(a> = i && )(
return p * a * b j
}
2.对数组a中的元素按相反次序重新排列。
void PV(tn.t a口,int n)
{
int i;
for(i=0; i<n/2; i+ + ) (
intx=a[i];
}
}
3.假定有定义为“struct NODE{int data; NODE* next;,”,下面算法是把以L为表头 指针的单链表中各结点依次按相园次序链接并返回新锥表的表头指针。
NODE* f8(NODE* L) e
{
if(L= = NULL) return NULL;
NODE *p=NULL, *q=L, * //p为新链表的表头指针,初始值为空
while(q! =NULL) { 〃通过q遍历L单链表
t=q;
q=q—>next:
t—>next=
4.类A的定义
class’ A
int * a> int n; int MaxLenj public:
AO: a(0), n(0), MaxLen(O) (} A(int * aa, int nn, int MM) {
n=nnj
MaxLen=MM;
if(n>MaxLen) exit(l);
a=new int^MaxLenJ;
for(int i=S iVn; i+ + ) i 〃利用数组aa给数组a赋值
〜A() { 5} int GetValue(int i) (return
四、理解问答题(分别毎出前2小题的程序运行结果和揩出后2小题
的函數功能。毎小题6分,共24分)
1.# include< iostream. h>
const int T=6)
void main()
{
int i,j,k=O;
for(i=l;i< = Tji+=2)(
for(j = 2;jV = T;j+=2) k+ + ;
} cout«”k= “VVkVVendl;
}
运行结果:
2.# include< iostream. h>
class CE {
private:
int a,b,c;
public:
CE(int aa, int bb, int cc) : a(aa), b(bb), c(cc) {}
int GetSumO {return a4~b+c;}
}*
void mainO
{
int x=5,y=12,z=8;
CEex(x,y,z);
cout〈<ex. GetSum()(<endlj
)
运行结果:
3.int PP(int n)
{
int i,p=l|
for(i=l;iV = n;i+ + ) p * =i;
return p;
}
函数功能:
4.int f(char * s)
inti=O, J-
while( * s++)i++;
returh
};
函数功能:
五、编程题(毎小题6分,共12分)
1.根据下面函数原型编写一个函数,求出并返回由字符指针a所指向的字符串中包含的 所有英文字母的总数。
int CT(char * a) j
2,根据下面类中Reversel函数成员的原型和注释写岀它的类外定义。
class AA {
int * a;
int n;
public;
void InitAA(int aa[], int nn) {
n=nnj a=newint[n];
for(int i=0; iVn$ i+ + ) a[i] = aa[i];
}
AA * Reverse*);//通过动态存储分配得到一个AA类对象并由x所指向,
〃并动态分配x->aEx->n]^组空间,要求x->n的值等于this->n 〃的值,x一〉a[x—>n]中每个元素的值是按照this->aEn]中数组元素的 〃相反次序排列得到的,要求该函数返回x的值。
试卷代号:1008
中央广播电视大学2009-2010学年度第二学期“开放本科”期末考试
面向对象程序设计 试题答案及评分标准
(供参考)
2010年7月
一、单项选择题(毎小题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.井 include ¥
2. 69
3.40
4.函数体
5.4
6.c[3兀0] ,
7.p — > score
8.private(或私有)
9.AA* AA: ;abc()
10.20
三、程序填充题(根据题意在横线上填易含适的内容。毎小题6分,共24分)
评分标准:每空3分。
1.b%i==0、b〉=i
2.a[订= a[n—i—i—l] = x
3.p、t
4.a[订= aa[i]、delete []a
四、 理解间答题(分别写出前2小题的程序运行结果和后2小题的函敷功能。毎小蔑6分,美
24分)
1.k==9
2.25
3.返回参数n的阶乘值。
4.求出并返回字符指针參数s所指向的字符串长度。
五、 编程题(毎小题6分,共12分)
1.根据完整程度酌情给分.
int CT(char * a) (
intc=O| while( * a) { 〃1分
if(( * a>= ‘a’ && * aV= ‘z’) | | ( * a>= ‘A’ && * a> =,Z’)) c +
+ j
a+ + ;
} 〃5分
return c» 〃6分
2.请根据完藍程度酌情给分。
AA * AA:: ReverselO
f 〃1分
{
AA * x=new AAj 〃2分
x—〉n=n; 〃3分
x— >a=new int[x—〉n];
for(int i=0j i<n; i+ + ) 〃4分
x_〉a[n — 1 —i]=a[i]; 〃5分
return x; 〃6分
}
评论0