《C++程序设计》课程考试试卷.docx
C+程序设计课程考试试卷学年第 学期 各班级时量:100分钟 总分:100分,考试形式:闭卷一、填空题(每题2分,共20分).C+源程序的扩展名是.1 .类中使用关键字static说明的成员称为成员.2 .具有相同函数名但具有不同实现的函数称为 函数.3 .构造函数是一个函数名称与相同的特殊的成员函数.4 .静态成员是属于的,被该类的所有对象共有,它除了可以通过对象名来引用 外,还可以使用类名限定来引用.5 .类默认的拷贝构造函数的参数只有一个,该拷贝构造函数的参数是.6 .定义一个类B的对象bl,并给它赋值,其实参值为5,该语句为.7 .类的析构函数有 个参数.8 .在保护继承方式下,基类的public成员成为派生类的成员.9 .运算符重载是通过函数来实现的,定义运算符重载函数要使用关键字.二、判断题(每题2分,共20分). C+是一门面向对象的程序设计语言,支持封装性和继承性,不支持多态性.1 . break语句和continue语句都可以出现在while循环体中,且二者作用和执行过程完全相 同的.2 .构造函数和析构函数都是系统自动调用的成员函数.3 .静态成员函数中引用静态数据成员和非静态数据成员的方式是相同的.4 .基类可以派生出派生类,派生类还可以作基类派生出新的派生类.5 .类中成员的访问权限可以是私有,公有或保护的,且默认的访问权限是私有的.6 .静态成员函数既可使用对象引用,也可使用类名加作用域运算符的方法来引用.7 .使用new运算符创立的对象称为堆对象.8 .基类中成员在派生类中都是可以访问的.9 .虚函数就是纯虚函数,纯虚函数就是虚函数,二者是相同的.三、选择题(每题3分,共15分).:int stu3 3 = 1, 5, 6, 3, 0, 2);数组元素 stu的值为().A. 2 B. 1 C. 0 D. 3.以下关于析构函数的描述中,错误的选项是().A.析构函数的函数体都为空B.析构函数是用来释放对象的C.析构函数是系统自动调用的 D.析构函数是不能重载的.以下关键字中,不属于定义类时使用的关键字是().A. class B. private C. public D. default.以下关于友元函数的描述中,错误的选项是().A.友元函数不是成员函数B.友元函数的调用方法同一般函数C.友元函数只可访问类的私有成员D.友元函数可以是另一类中的成员函数.以下关键字中,用来说明虚函数的关键字是().A. inline B. virtual C. operator D. public四、简答(每题5分,共15分)1. C+语言程序中具有什么特点的函数适合被定义为内联函数,内联函数在实现过程中与一 般函数有何不同?2. C+语言程序中使用const定义的常量比使用#define定义的常量有何优点?3. 简单描述C+语言程序中的类的构造函数有什么特点?五、程序阅读题(每题6分,共30分)1、写过递归函数fac(int n)的调用过程,从键盘输入5,分析程序并写出运行结果. ttinclude <iostream. h> int fac (int n);void main () int n;cout请输入一个n: ;cin>>n;cout<<n<<z,!=,<<fac (n) <<endl;)int fac(int n) if (n=l) return 1;else return n*fac(n-1);2、语句friend void Print (Date &);定义了 Date类的友员,分析友员的特性,并写出程 序的运行结果.ttinclude <iostream. h> class Date public:Date (int y, int m, int d) year=y; month二m; day=d; friend void Print(Date &);private:int year, month, day;);void Print(Date &d) cout<<d, year<<,/,<<d. month。' /' <<d. day<<endl; void main 0 Date dl(2008,8,8),d2(2015, 12,24);Print (dl);Print (d2);3、分析以下程序,填写下表中各类成员在不同类中的访问权限. ttinclude <iostream. h> class Apublic: void fl();protected: int al;private: int a2;);class B:public A public: void f2();protected: void f3();private: int b;);class C:protected B public: void f4();protected: int cl;private: int c2;);各类成员的访问权限表(表格中有X的位置表示不需耍填写,答卷中照样打X)noala2f2()f3()bf4()clc2类A (基类)XXXXXX类B(公有继承)XXX类C(保护继承)4、分析以下程序的输出结果,熟悉多重继承派生类构造函数和析构函数的用法. #include <iostream.h> class A public:A(int i)a=i; cout«HConstructor called.AnM;-A()cout«nDestructor called.Ann; void Print() cout«a«endl; private:int a;);class Bpublic:B(int i) b=i; cout«nConstructor called.Bnn; B() cout«nDestructor called.Bnn;void Print() cout«b«endl; private:int b;);class Cpublic:C(int i) c=i; cout«nConstructor called.Cnn; -C()cout«nDestructor called.Cnn;int Getc() return c; private:int c;);class D:public A,public B public:D(int i,int j,int k,int l):B(i),A(j),c(l) d=k; cout«nConstructor called.Dnn; D() cout«"Destructor called.Dnn;void Print() A:Print();B:Print();cout«d«V<<c.Getc()«endl;)private:int d;C c;);void main() D d(5,6,7,8);d.PrintQ;B b(2);b=d;b.PrintQ;5、自定义数学中的复数类Comlex类(复数类的数据成员有实部real和虚部image),使用 友员函数实现运算符重载,完成复数的加法、减法运算.