河南电大面向对象程序设计期末复习题1(历年考试题)
1.字符串“a+b=12\n”的长度为( B )。 A.6 B.7 C.8 D.9
2.假定一个二维数组的定义语句为“int a[3][4]={{3,4),{2,8,6));”,则元素a[2][1]的值为( A )。A.0 B.4 C.8 D.6
3.以下正确的描述是( B )。
A.函数的定义可以嵌套,函数的调用不可以嵌 B.函数的定义不可以嵌套,函数的调用可以嵌套 C.函数的定义和函数的调用均可以嵌套 D.函数的定义和函数的调用均不可以嵌套
4.设有定义“double array[10];”,则表达式sizeof(array)/sizeof(array[0])的结果为array数组的( B )。 A.首地址 B.元素个数 C.每个元素所占的字节数 D.总字节数
5.若使P指向包含30个整型元素的动态数组空间,则使用的定义语句为( A )。 A.int*p=new int[30] B.int*p=new int(30) C.int*p=new[30] D.*p=new int[30]
6.软件产品与其他软件产品组合成一个整体的难易程度叫做软件的( C )。 A.可维护性 B.可复用性 C.兼容性 D.正确性
7.在多文件结构的程序中,通常把类的声明单独存放于( D )中。 A.主文件 B.实现文件 C.库文件 D.头文件
8.在一个用数组实现的队列类中,假定数组长度为MS,队首元素位置为first,队列长度为length,则队首的后一个位置为( B )。
A.first+1 B.(first+1)%MS C.(first一1)%MS D.(first+length)%MS
9.假定一个类的构造函数为“A(int aa=1,int bb=0){a=aa;b=bb;)”,则执行“A x(4);”语句后,x.a和x.b的值分别为( D )。 A.1和0 B.1和4 C.4和1 D.4和0
10.假定AB为一个类,则执行“AB a(2),b[3],*p[4];”语句时共调用该类构造函数的次数为( B )。 A.3 B.4 C.5 D.9
二、填空题(每小题2分,共20分)
1.用于输出表达式值的标准输出流对象是 cout
2.假定x=5,y=6,则表达式x- -*一 一y的值为 25
3.假定x是一个逻辑量,则x||true的值为 true(或1) 。
4.c++提供的预处理命令有宏定义命令,条件编译命令和 文件包含 命令。
5.假定a是一个一维数组,则a[i]的指针访问方式为 *(a + i) 。
6.变量V定义为“double V=23.4;”,要使指针pv指向v,则定义‘pv的语句为 double*pv=&v .
7.若在类的定义体中只给出了一个成员函数的原型,则在类外给出完整定义时,其函数名前必须加上 类名 和两个冒号分隔符。
8.若采用x.abc(y)表达式调用一个成员函数,在成员函数中使用的 *this 就代表了类外的X对象。
9.假定用户没有给一个名为AB的类定义析构函数,则系统为其定义的析构函数为 ~AB(){}
10.假定用户只为类AB定义了一个构造函数“AB(int a8,int bb=O)(a=aa;b=bb;)”,则定义该类的对象时,其实参表中至多带有 2 个实参。
三、程序填充题。根据题意在横线上填写合适的内容。(每小题6分。共24分)
1.下面函数是求两个整型参数a和b的最小公倍数。
int f2(int a,int b)
{
int i=2,p=1;
do{
while(a%i= =0 && b%i= =0 ){
p*=i;a/=i;b/=i;
}
i++;
}while(a>=i&& b>=i );
return p*a*b;
2.对数组a中的元素按相反次序重新排列。
void PV(int a[],int n)
{
int i;
for(i=0;i<n/2;i++){
int x=a[i];
A[i]=a[n—i一1] ;
a[n—i一1]=X ;
}
}
3.假定有定义为“struct NODE{int data;NODE*next;);”,下面算法是把以L为表头指针的链表中各结点依次按相反次序链接并返回新链表的表头指针。
NODE*f8(NODE*L)
{
if(L= =NULL)return NULL;
NODE*p=NULL,*q=L,*t;//P为新链表的表头指针,初始值为空
while(q!=NULL){
t2q;
q=q->next;
t一>next= P ; p= t ;
}
return P;
}
4.类A的定义
class A{
int*a;int n;int MaxLen;
public:
A():a(O),n(O),MaxLen(O){) //无参构造函数
A(int*aa,int nn,int MM){ //带参构造函数
N=nn:
MaxLen=MM;
if(n>MaxLen)exit(1);
a=new int[MaxLen];
for(int i=0;i<n;i++) A[i]=aa[i] ; //利用数组aa给数组a赋值
}
~A(){ delete[]a ;} //释放动态存储空间
int GetValue(int i){return a[l];} //函数体返回a{1]的值
};
四、理解问答题。分别写出前2小题的程序运行结果和指出后2小题的程序或函数功能。(每小题6分。共24分)
1.#include<iostream.h>
const int B=2:
void main()
{
int p=1,s=1;
while(s<50){
P*=B;
s+=P。
}
cout<<“S=”<<s<<endl;
运行结果: s = 63
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;
}
int GetMin();
};
int CE::GetMin(){
int d=getmin();
return(d<c?d:c);
}
void main(){


