内容发布更新时间 : 2024/12/23 13:38:35星期一 下面是文章的全部内容请认真阅读。
《面向对象程序设计(本科)》2017期末试题及答案
一、单项选择(每小题2分,共20分)
1.字符串“a+b=12\n”的长度为( )。 A.6
B.7
C.8
D.9
2.假定一个二维数组的定义语句为“int a[3][4]={{3,4),{2,8,6));”,则元素a[2][1]
的值为( )。 A.0
B.4
C.8
D.6
3.以下正确的描述是( )。
A.函数的定义可以嵌套,函数的调用不可以嵌套 B.函数的定义不可以嵌套,函数的调用可以嵌套 C.函数的定义和函数的调用均可以嵌套 D.函数的定义和函数的调用均不可以嵌套
4.设有定义“double array[10];”,则表达式sizeof(array)/sizeof(array[0])的结果为array数组的( )。
A.首地址 B.元素个数
C.每个元素所占的字节数 D.总字节数
5.若使P指向包含30个整型元素的动态数组空间,则使用的定义语句为( )。 A.int*p=new int[30] B.int*p=new int(30) C.int*p=new[30]D.*p=new int[30] 6.软件产品与其他软件产品组合成一个整体的难易程度叫做软件的( )。 A.可维护性 B.可复用性C.兼容性 D.正确性
7.在多文件结构的程序中,通常把类的声明单独存放于( )中。 A.主文件 B.实现文件C.库文件 D.头文件
8.在一个用数组实现的队列类中,假定数组长度为MS,队首元素位置为first,队列长度为length,则队首的后一个位置为( )。
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的值分别为( )。
A.1和0 B.1和4 C.4和1 D.4和0
10.假定AB为一个类,则执行“AB a(2),b[3],*p[4];”语句时共调用该类构造函数的次数为( )。
A.3
B.4
C.5
D.9
二、填空题(每小题2分,共20分)
1.用于输出表达式值的标准输出流对象是 2.假定x=5,y=6,则表达式x- -*一 一y的值为 3.假定x是一个逻辑量,则x||true的值为 。
4.c++提供的预处理命令有宏定义命令,条件编译命令和 命令。 5.假定a是一个一维数组,则a[i]的指针访问方式为 。
6.变量V定义为“double V=23.4;”,要使指针pv指向v,则定义‘pv的语句为 . 7.若在类的定义体中只给出了一个成员函数的原型,则在类外给出完整定义时,其函数 名前必须加上 和两个冒号分隔符。
8.若采用x.abc(y)表达式调用一个成员函数,在成员函数中使用的 就代表了类外的X对象。
9.假定用户没有给一个名为AB的类定义析构函数,则系统为其定义的析构函数为 10.假定用户只为类AB定义了一个构造函数“AB(int a8,int bb=O)(a=aa;b=bb;)”, 则定义该类的对象时,其实参表中至多带有 个实参。
三、程序填充题。根据题意在横线上填写合适的内容。(每小题6分。共24分) 1.下面函数是求两个整型参数a和b的最小公倍数。 int f2(int a,int b) {
int i=2,p=1; do{
while(a%i= =0 && ){ p*=i;a/=i;b/=i;
}
i++;
}while(a>=i&& ); return p*a*b;
2.对数组a中的元素按相反次序重新排列。 void PV(int a[],int n) {
int i;
for(i=0;i int x=a[i]; ; ; } } 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= ; } 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];