A)MYX B)MYMY C)MXY D)MXYY (29)有如下程序: #include
Car(int i):weight(i){ }
friend int Total(const Car &c.const Boat &b); //① private:
int weight; };
class Boat{ public:
Boat(int i):weight(i){ }
friend int Total(const Car &c,const Boat &b); private:
int weight; };
int Total(const Car &c,const Boat &b){ //② return c.weight+b.weight; }
int main(){ Car c(10); Boat b(8);
cout<<\ return 0; }
下列关于程序的描述中,正确的是 D
A)程序编译正确 B)程序编译时语句①出错 C)程序编译时语句②出错 D)程序编译时语句③出错 (30)有如下程序: #include
void Name(); void Show(); protected: int page; };
class Book:private Media{ public:
void Print(){cout< 26 ③ void Show() {Media::Show();} //① }; int main(){ Book Bible; Bible.Name(); //② Bible.Print(); //③ Bible.Show(); //④ return 0; } 编译时有错误的是 A A)语句① B)语句② C)语句③ D)(31)有如下程序: #include virtual void Show(){cout<<'B';} }; class Derived:public Base{ public: void Show(){cout<<'D';} }; int main(){ Base *p1=new Derived; Derived *p2=new Derived; p1->Show(); p2->Show(); delete p1; delete p2; return 0; } 运行这个程序的输出结果是 D A)BB B)BD C)DB D)DD (32)有如下类定义: class Animal{ public: virtual void Name()=0; }; class Koala:public Animal{ public: void Name(){/*函数体略*/} }; 关于上述类定义,下列描述中错误的是 B A)类Koala是类Animal的派生类 27 语句④ B)类Koala中的Name函数是一个虚函数 C)类Animal中的Name函数是一个纯虚函数 D)语句\能够建立类Animal的一个对象a (33)已知类MyClock中未显式定义构造函数,并重载了加法运算符,使得下面的语句 序列能够正确执行: MyClock c1,c2; //...... c2=c1+10; 由此可知,为类MyClock重载的\运算符函数的声明是 C A)friend MyClock operator+(MyClock,int); B)friend MyClock operator+(MyClock,MyClock); C)friend MyClock operator+(int,MyClock); D)MyClock operator+(MyClock); (34)下列控制对齐方式的操作符中,错误的是 C A)internal B)center C)left D)right (35)有如下程序: #include Mountain(int h=0):height(h){ } virtual char *GetName()const {return \山\ int GetHeight() const{return height;} }; class Lushan:public Mountain{ public: Lushan(int d):Mountain(d){ } char *GetName()const {return \庐山\ }; int main(){ Mountain *p= new Lushan(1000); cout< 运行这个程序的输出结果是 D A)庐山海拔1000米 B)庐山海拔0米 C)山海拔1000米 D)山海拔0米 二、填空题(每空2分,共30分) (1)在长度为n的顺序存储的线性表中删除一个元素,最坏情况下需要移动表中的元素个数为_____1_____。 28 (2)设循环队列的存储空间为Q(1:30),初始状态为front=rear=30。现经过一系列入队与退队运算后,front=16,rear=15,则循环队列中有___2___个元素。 (3)数据库管理系统提供的数据语言中,负责数据的增、删、改和查询的是___3___ 。 (4)在将E-R图转换到关系模式时,实体和联系都可以表示成___4___ 。 (5)常见的软件工程方法有结构化方法和面向对象方法,类、继承以及多态性等概念属于___5___。 (6)如果a为int型变量,b为double型变量,则表达式a+b的值的类型为___6___。 (7)break语句可用于循环语句和___7___语句中。 (8)如果P是指向一个动态数组空间的指针变量,则释放该数组空间的语句是___8____ 。 (9)如果一个函数在其函数体内直接或间接地调用自己,则该函数称为___9___函数。 (10)调用时不必提供参数的构造函数称为___10___构造函数。 (11)有如下程序: #include Machine(){num++;} static void showNum() {cout< int Machine::num=0; int main(){ Machine a[10],b; Machine::showNum(); return 0; } 运行这个程序的输出结果是___【11】___ 。 (12)类Base、Component和Derived的定义如下,请将横线处缺失部分补充完整。 class Base{ double data; public: Base(double d):data(d){ } }; class Component{ int data; public: Component(int d):data(d){ } }; 29 class Derived:public Base{ Component com; char character; public: Derived(double a,int b,char c): //使用参数a初始化基类成员,使用参数b初始化成员对象com ___【12】___,character(c){ } }; (13)形状类Shape中包含一个纯虚函数draw,它无形参和返回值,则draw函数在Shape类中的原型声明是___【13】___ 。 (14)正方形类的定义如下,请将横线处缺失部分补充完整。 class Square{ private: double width; public: Square(double w):width(w){} //重载大于运算符\用于比较两个正方形的大小,函数结果类型为bool类型 ___【14】___(Square& s); }; (15)有如下程序,请将横线处缺失部分补充完整。 #include Dataset(T* arr,int length):size(1ength){ data=new T[length]; for(int i=0;i int main(){ int arr[]={2,4,6,8,10}; //利用数组arr初始化类模板Dataset的对象 set ___【15】___ return 0; } 2012年3月计算机等级考试二级C++笔试真题答案 参考答案: 30