}
53.以下程序输出的第一行是(12),第二行是(13),第三行是(14)。
#include
voidf(inti)
{if(i>0){
cout<,i%10;
if(i>9)f(i/10);
}
elseif(i<0){
if(i<=-1)f(i/10);
cout<<(-i)%10;
}
elsecout<
}
voidmain(void)
{f(125);cout<<'\n';
f(-234)lcout<<'\n';
f(0);cout<<'\n';
}
Ⅱ面向对象部分
一、选择题
二、填空题
三、阅读程序题
四、改错题
五、完善程序题
五、编程题
一、选择题
1.下列说明有关构造函数的正确说法是。
A.任一类必定有构造函数B.类可以没有构造函数
C.构造函数不能重载D.任一类必定有缺省的构造函数
[答案]A:
当没有定义构造函数的时候,系统自动生成缺省的构造函数,所以B错;构造函数可以带参数,因而可以重载,所以C错;当用户显式的定义构造函数后,系统就不再给出缺省的构造函数,所以D错。
2.对于对象的说法不正确的是(D)。
A.对象是类的对象,类是对象的类,没有脱离类的对象
B.对象可以处理本对象内部的数据,也可接受其他对象传送来的信息,对象与对象的信息传送是通过公用接口来进行的
C.对象对信息的处理是自主性的,不需要外来事物的干涉
D.对象只有接受信息才能被激话,因此对象的行为是被动的
3.对于类的私有成员、公有成员不正确的是(D)。
A.私有成员只对内,不对外
B.公有成员也叫接口,是与外部联系的通道
C.私有成员主要对数据成员而言,当然有些成员函数也是私有的
D.类的私有成员、公有成员只是相对而言,可以随时改变的
4.关于类的继承的特性,不正确的是(C)。
A.子类对父类具有数据和程序代码的共享特征
B.子类与父类间有所差别
C.会增加代码的冗余
D.类间具有层次结构
5.下列不正确的是(C)。
A.对象必须先说明后使用,其说明的一般形式是:
“类名对象名;”
B.类的说明是不分配内存空间的,只在程序运行时对对象分配空间
C.同一类的不同对象,占有不同的内存空间
D.同类不同对象的成员函数占有相同的内存空间,对象中存储的是这些共享代码在内存中的地址
6.派生类的对象对它的基类成员中A是可以访问的。
A.公有继承的公有成员B.公有继承的私有成员
C.公有继承的保护成员D.私有继承的公有成员
7.假设person是一个类,p1是该类的一个对象,p2是一个指向pl的指针,getname()是其中的一个函数,则下面对象的使用不正确的是(A)。
A.person.getname();B.p1.getname();
C.p1.person:
:
getname();D.p2->getname();
8.对于基类中的private成员,其在公有派生类中的访问权限为。
A.不可访问B.privateC.protectedD.public
9.假定AB为一个类的类名,则该类的拷贝构造函数的函数原型是________。
A.AB&(ABx)B.AB(ABx)C.AB(AB&x)D.AB(AB*x)
10.下面有关类的构造函数与析构函数的叙述正确的是________。
A.同一个类的析构函数只能有一个B.同一个类的构造函数只能有一个
C.同一个类的析构函数可定义多个D.类的构造函数名可任意定义
12.若通过类的成员函数和友元函数所实现的运算符重载得功能是一样的,下列说法正确的是。
A.这两种函数的参数相同,函数体实现的过程不同
B.编译器对这两种函数编译时所作的解释相同
C.这两种函数都带有this指针
D.友元函数比成员函数多一个参数
13.以下选项中错误的是。
A.派生类可以继承多个基类
B.可以有多个派