当前位置:文档之家› C++练习试卷2及参考答案

C++练习试卷2及参考答案

C++练习试卷2及参考答案一、填空题(每小题2分,共16分)1.对象中封装了描述该对象的①和②,每个对象就是一个微小的程序。

2.类是抽象的,①占用内存,而对象是具体的,②占用内存。

3.封装可以使得程序中各部分之间的相互影响变①,并且提高程序的安全性。

4.继承的方式有三种:①继承、②继承、③继承。

5.虚拟函数在①时表现出多态功能;而重载函数则在②时表现出多态性。

6.定义抽象类就是在类定义中至少声明一个①函数。

7.所谓模板是一种使用类型参数来产生一系列①或②的机制,是C++的一个重要特性。

8.如果异常错误类型为C++的类,并且该类有其基类,则应该将①类的错误处理程序放在前面, ②类的错误处理程序放在后面。

二、单项选择题(每小题2分,共20分)1、下列函数中,( )不能重载.A.成员函数B.非成员函数C.析构函数D.构造函数2、.继承具有( ),即当基类本身也是某一个类的派生类时,底层的派生类也会自动继承间接基类的成员.A.规律性B.传递性C.重复性D.多样性3、已知:print()函数是一个类的常成员函数,它无返回值,下列表示中, ( )是正确的.A.void print() constB.const viod print()C.void const print()D.void print(const)4、.类模板的使用实际上是将类模板实例化成一个具体的( ).A.类B.对象C.函数D.模板类5、( )是析构函数的特征.A.一个类中只能定义一个析构函数B.析构函数名与类名不同C.析构函数的定义只能在类体内D.析构函数可以有一个或多个参数6、采用函数重载的目的在于( ).A.实现共享B.减少空间C.提高速度D.使用方便,提高可读性7、下列do-while循环的循环次数为( ).已知:int i=6;do{cout<<i--<<endl;i--;}while(i!=0);A.0B.1C.3D.无限8、C++语言中规定函数的返回值的类型是由( ).A.return语句中的表达式类型所决定B.调用该函数时的主调用函数类型所决定C.调用该函数时系统临时决定D.在定义该函数时所指定的函数类型所决定9、( ).是子类对父类的函数覆盖而不是重载,而覆盖是一种浮在表面的遮掩,而不是渗透性、摧毁性的重建。

A. 重载函数B.友元函数C.虚函数D.模板函数10、要求通过函数来实现一种不太复杂的功能,并且要求加快执行速度,选用( )合适。

A. 内联函数;B. 重载函数;C. 递归调用;D. 嵌套调用。

三、简述题(9分)简述对象化编程与过程化编程的优缺点。

四、阅读程序,写出运行结果(每小题7分,共35分)1.//////////////////////////////// cat.h ////////////////////////////////#include <iostream.h>class Cat{ public:int GetAge();void SetAge(int age);void Meow(); //喵喵叫protected:int itsAge;};int Cat::GetAge(){return itsAge;}void Cat::SetAge(int age) {itsAge=age;}void Cat::Meow(){cout<<“Meow.\n”;}////////////////////////////////////////// cat.cpp //////////////////////////////////////////#include <iostream.h>#include “cat.h”void main(){Cat frisky;frisky.SetAge(5);frisky.Meow();cout<<“frisky is a cat who is”<<frisky.GetAge()<<“years old. \n”;frisky.Meow();}2.===========================================================#include <iostream.h>class A{ public:A(); A(int i,int j);~A(){cout<<"Destructor.\n";}void print();private:int a,b;};A::A() { a=5;b=10;cout<<"Default constructor.\n"; } A::A(int i,int j){ a=i,b=j;cout<<"Constructor.\n";} void A::print(){cout<<"a="<<a<<",b="<<b<<endl;} void main(){ A obj1,obj2(15,18);obj1.print();obj2.print(); }3.============================================================#include <iostream.h>void main(){ int x=7,y=3;switch(x%2) // 求余数{ case 1:switch (y){ case 0:cout<<"AAAA\t";case 1:cout<<"BBBB\t";break;default: cout<<"CCCC\t";}case 2:cout<<"Thanks\n";}}4. ============================================================#include <iostream.h> #include <string.h> template<class T>T min(T& a, T& b) { return a>b?b:a;} char* min(char* a, char* b){ return (strcmp(a, b)>0 ? b: a);} void main(){ cout <<min("Hello", "Good") <<endl; cout <<min(3,8) <<endl;}5. ===========================================================#include <iostream.h>class ST{public:ST(){cout<<”constructing…”<<endl;}~ ST(){cout<<”destructing…”<<endl;} };void main(){ ST st;try{ cout<<” exception start…”<<endl;throw 12;cout<<” exception end…”<<endl; }catch(int){cout<<"int exception.\n"; }catch(char c){cout<<"char exception.\n"<<c<<endl;} cout<<"That's ok.\n";}五、阅读下列程序,添上一个拷贝构造函数来完善整个程序,然后写出运行结果。

(10分)#include<iostream>using namespace std; class Vector{public:Vector(int s=10);void Display();void Set();~Vector(); protected:int size;int* buffer;};Vector::Vector(int s){ buffer=new int[size=s];for(int i=0;i<size;i++)buffer[i]=i*i;} void Vector::Display(){ for(int j=0;j<size;j++)cout<<buffer[j]<<endl;}void Vector::Set(){ for(int j=0;j<size;j++) buffer[j]=j+1;}Vector::~ Vector(){ delete[]buffer;}void main(){ Vector a(6);Vector b(a);a.Set();b.Display();}六、编程题(10分)编写class cA的派生类class cAB,增加成员函数,用于求圆的周长class cA{int r;public:cA(int x){ r=x; }double area( ) { return r*r*3.14; } int get_r( ) { return r; }};C++练习试卷2参考答案及评分标准一、填空题(每小题2分,共16分)1. ①属性②操作2. ①不要②要3. ①小4. ①公有②保护③私有5.①运行②编译 6. ①纯虚7. ①模板类②模板函数 8. ①派生类②基类二、单项选择题(每小题2分,共20分)三、简述题(9分)对象化编程特点描述(+3分)过程化编程特点描述(+3分)两者比较(+3分)四、阅读程序,写出运行结果(每小题7分,共35分)1、Meow (+2分)frisky is a cat who is 5 years old (+3)Meow (+2分)2、Default constructor (+1分)Constructor (+1分)a=5,b=10 (+1分)a=10,b=18 (+2分)Destructor (+1分)Destructor (+1分)3、CCCC (+3)Thanks (+4) 4. Good (+4)3 (+3) 5.constructing… (+1) exception start… (+1) int exception. (+2) That's ok. (+1) destructing… (+2)五、阅读下列程序,添上一个拷贝构造函数来完善整个程序,然后写出运行结果。

相关主题