当前位置:首页 >> 其它课程 >> 许昌学院C++期末复习题

许昌学院C++期末复习题


选择题 1
为了提高函数调用的实际运行速度,可以将较简单的函数定义为__________。 A、内联函数 B、重载函数 C、递归函数 D、函数模板 2. 若 AA 为一个类,a 为该类的非静态数据成员,在该类的一个成员函数定义中访问 a 时,其书写格式为__________。 A、a B、AA.a C、a( ) D、AA::a( ) 3. 当派生类从一个基类保护继承时,

基类中的一些成员在派生类中成为保护成员,这 些成员在基类中原有的访问属性是__________。 A、任何 B、公有或保护 C、保护或私有 D、私有 4. 若要对 Data 类中重载的加法运算符成员函数进行声明,下列选项中正确的是 __________。 A、Data+(Data); B、Data operator+(Data); C、Data+operator(Data); D、operator+(Data,Data); 5. 下列关于函数模板的描述中,正确的是__________。 A、函数模板是一个实例函数 B、使用函数模板定义的函数没有返回类型 C、函数模板的类型参数与函数的参数相同 D、通过使用不同的类型参数,可以从函数模板得到不同的实例函数 6. C++系统预定义了 4 个用于标准数据流的对象,下列选项中不属于此类对象的是 __________。 A、cout B、cin C、cerr D、cset 7. 有如下函数模板定义: template <class T1,class T2> T1 FUN(T2 n){return n*5.0;} 若要求以 int 型数据 9 作为函数实参调用该模板,并返回一个 double 型数据,则该 调用应表示为_________。 A、 FUN(<double>9) B、 double FUN<9> C、 FUN(9) D、 FUN<9>(double) 8. 下列关于析构函数的描述中,错误的是__________。 A、析构函数可以重载 B、析构函数由系统自动调用 C、每个对象的析构函数只被调用一次 D、每个类都有析构函数 9. 下列关于构造函数的描述中,错误的是__________。 A、构造函数名与类名相同 B、构造函数可以有返回值 C、构造函数可以重载 D、每个类都有构造函数 10. 下列关于派生类和基类的描述中,正确的是__________。 A、派生类成员函数只能访问基类的公有成员 B、派生类成员函数只能访问基类的公有和保护成员 C、派生类成员函数可以访问基类的所有成员 D、派生类对基类的默认继承方式是公有继承 参考答案: 1. 1 A 2 A 3 B 4 B 5 D 6 D 7 C 8 A 9 B 10 B

选择题 2

( ( (















)1. 从语言角度来说,类是一种数据类型,而_________是具有这种类型的变量。 A、特征 B、对象 C、实物 D、实例 )2. 对于类中定义的成员,其默认的访问权限为_________。 A、public B、protected C、private D、static )3. 下列描述中_________不是构造函数的特征。 A、构造函数的函数名与类名相同 B、构造函数必须指定类型说明 C、构造函数可以设置缺省参数 D、构造函数可以重载 )4. 在一个函数中,要求通过函数来实现一种不太复杂的功能,并且要求加快执行 速度,选用_________。 A、内联函数 B、重载函数 C、递归调用 D、嵌套调用 )5. 下面有关重载函数的说法中正确的是_________。 A、重载函数必须具有不同的返回值类型 B、重载函数形参个数必须不同 C、重载函数必须有不同的形参列表 D、重载函数名可以不同 )6. 使用派生类的主要作用是 。 A、提高代码的可重用性 B、提高程序的运行效率 C、加强类的封装性 D、实现数据的隐藏 )7. 如果在基类中将成员函数 show 声明为不带返回值的纯虚函数,正确的写法 是 。 A、virtual show( )=0; B、virtual void show( ); C、virtual void show( )=0; D、void show( )=0 virtual; )8. 已知: print( ) 函数是一个类的常成员函数,它无返回值,下列表示中 _________是正确的。 A、void print( ) const; B、const void print( ); C、void const print( ); D、void print(const); )9. 关于 new 运算符的下列描述中,错误的描述是 。 A、它可以用来动态创建对象和对象数组 B、使用它创建的对象和对象数组可以 使用运算符 delete 删除 C、使用它创建对象时要调用构造函数 D、使用它创建对象数组时必须指定初始值 )10. 以下 关键字对应的属性破坏了程序的封装性。 A、 const B、 friend C、 private D、 protected 参考答案: 1 2 B C

3 B

4 A

5 C

6 A

7 C

8 A

9 D

10 B

选择题 3
1. C++语言是从早期的 C 语言逐渐发展演变而来的,与 C 语言相比,它在求解问题方 法上进行的最大改进是________。 A、面向过程 B、面向对象 C、安全性 D、复用性 下列关于对象初始化的叙述中,正确的是________。 A、定义对象的时候不能对对象进行初始化 B、定义对象之后可以显式地调用构造函数进行初始化 C、定义对象时将自动调用构造函数进行初始化 D、在一个类中必须显式地定义构造函数实现初始化 下列关于基类和派生类关系的叙述中,正确的是________。 A、每个类最多只能有一个直接基类 B、派生类中的成员可以访问基类中的任何成员 C、基类的构造函数必须在派生类的构造函数体中调用 D、派生类除了继承基类的成员,还可以定义新的成员 下列关于赋值运算符“=”重载的叙述中,正确的是________。 A、赋值运算符只能作为类的成员函数重载 B、默认的赋值运算符实现了“深层复制”功能 C、重载的赋值运算符函数有两个本类对象作为形参 D、如果己经定义了复制(拷贝)构造函数,就不能重载赋值运算符 下面有关重载函数的说法中正确的是________。 A、重载函数必须具有不同的返回值类型; B、重载函数形参个数必须不同; C、重载函数必须有不同的形参列表 D、重载函数名可以不同; 下列关于构造函数的描述中,错误的是________。 A、构造函数可以设置默认参数; B、构造函数在定义类对象时自动执行 C、构造函数可以是内联函数; D、构造函数不可以重载 下面描述中,表达错误的是________。 A、公有继承时基类中的 public 成员在派生类中仍是 public 的 B、公有继承时基类中的 private 成员在派生类中仍是 private 的 C、公有继承时基类中的 protected 成员在派生类中仍是 protected 的 D、私有继承时基类中的 public 成员在派生类中是 private 的 应在下列程序划线处填入的正确语句是________。 class Base { public: void fun( ){cout<<"Base::fun"<<endl;} }; class Derived:public Base { public: void fun( ) {_____________ //显示调用基类的函数 fun( ) cout<<"Derived::fun"<<endl; } }; A、fun( ); B、Base.fun( ); C、Base::fun( ); D、 Base->fun( );

2.

3.

4.

5.

6.

7.

8.

有如下程序: class Base { char c; public: Base(char n):c(n){ } virtual ~Base( ){cout<<c;} }; class Derived:public Base { char c; public: Derived(char n):Base(n+1),c(n){ } ~Derived( ){cout<<c;} }; int main( ) { Derived d('X'); return 0; } 执行上面的程序将输出________。 A、XY B、YX C、X D、Y 10. 若在表达式 y/x 中,“/”是作为成员函数重载的运算符,则该表达式还可以表示为 ________。 A、x.operator/(y) B、operator/(x,y) C、y.operator/(x) D、 operator/(y,x) 9.

参考答案:

1 B

2 C

3 D

4 A

5 C

6 D

7 B

8 C

9 A

10 C

选择题 4
( )1. 下列关于 C++函数的叙述中,正确的是_________。 A)每个函数至少要具有一个参数 B)每个函数都必须返回一个值 C)函数在被调用之前必须先声明 D)函数不能自己调用自己 ( )2. 下列关于类和对象的叙述中,错误的是_________。 A)一个类只能有一个对象 B)对象是类的具体实例 C)类是对某一类对象的抽象 D)类和对象的关系是一种数据类型与变量的关系 ( )3. 在 C++中,用于实现运行时多态性的是_________。 A)内联函数 B)重载函数 C)模板函数 D)虚函数 ( )4. 对于语句 cout<<x<<endl;错误的是描述是_________。 A)“cout”是一个输出流对象 B)“endl”的作用是输出回车换行 C)“x”是一个变量或常量 D)“<<”称作提取运算符 ( )5. 有如下类声明,则类 MyDERIVED 中保护的数据成员和成员函数的个数是 _________。 class MyBASE { private: int k; public: void set(int n){ k=n;} int get( )const{ return k;} class MyDERIVED: protected MyBASE { protected: int j;

};

public: void set(int m, int n){ MyBASE::set(m); j=n;} int get( ) const { return MyBASE::get( )+j; } }; A)4 B)3 C)2 D)1 ( )6. 已知在一个类体中包含如下函数原型: Volume operator-(Volume);,下列关于 这个函数的叙述中,错误的是________。 A)这是运算符-的重载运算符函数 B)这个函数所重载的运算符是一个一元运算符 C)这是一个成员函数 D)这个函数不改变类的任何数据成员的值 ( )7. 在下列函数原型中,可以作为类 AA 构造函数的是_________。 A)void AA(int); B)int AA(); C)AA(int)const; D)AA(int); ( )8. 下面四个选项中,_________是用来声明虚函数的。 A)virtual B)public C)include D)using namespace ( )9. 要实现动态联编,必须通过_________调用虚函数。 A)对象指针 B)成员名限定 C)对象名 D)派生类名 ( )10. 以下_________成员函数表示纯虚函数。
A)virtual int vf(int); 参考答案: B)void vf(int)=0; C)virtual void vf()=0; D)virtual void vf(int){}

1 C

2 A

3 D

4 D

5 B

6 B

7 D

8 A

9 A

10 C

填空题 1
1. 面 向 对 象 的 程 序 设 计 有 四 大 特 征 , 它 们 是 抽 象 、 _______________ 、 ______________ 、___________。 2. 在 C++中,类的成员访问权限分别是:公有成员,私有成员和_________________。 类成员中缺省访问方式为_________________。 3. 重载运算符函数有关键字引出_________________。 4. 非成员函数应声明为类的_ ___函数才能访问这个类的 private 成员。 5. 派生类中的成员不能直接访问基类中的__ __成员。 6. 运算符重载函数可能是类的___ _函数,也可以是类的_ __函数, 还可以是普通函数。 7.面向对象的程序设计有四大特征,它们是抽象、封装、__________ 、__________。 8.静态的成员函数没有隐含的_________ ,所以,它们只能访问静态的数据成员。 9.假定 MyClass 为一个类,则该类的拷贝初始化构造函数的声明语句为________ 。 10. 在 C++中, 构造派生类对象时, 总是先从___ 的初始化开始的。 11. 在 C++类中,______________类只能作为基类使用,而不能声明它的对象,定 义该类至少具有一个____________ 。 12. 下面是个 Cat 类的声明与使用,请补充完整。
#include <iostream> using namespace std; class Cat { static int count; public: Cat() { count++; cout << "Now cat number is" <<count << endl; } ~Cat() { count--; cout << " Now cat number is " << count << endl; } }; =0; int main() { Cat a, b, c; return 0; } 该 程


、 、











、 、



13.

。 将下面的 MyPoint 类定义补充完整,使得程序的输出结果是(10,10) (5,5)
#include <iostream.h> class MyPoint { public: { X = xx; Y = yy; cout<<"("<<X<<","<<Y<<") ";} private: int X, Y; };

void main() { MyPoint a(10,10),b; }

参考答案: 1 封装、继承、多态 2 保护或 protected,私有或 private 3 operator 4 友元函数 5 私有或 private 6 成员 友元 7 继承、多态 8 this 指针 9 MyClass(MyClass &); 10 基类成员 11 抽象,纯虚函数 12 int Cat ::count,Now cat number is 1,Now cat number is 2,Now cat number is 3,Now cat number is 2,Now cat number is 1,Now cat number is 0 13 MyPoint(int X=5,int Y=5)

填空题 2
1. 若要将函数“void FriFun( );”声明为类 MyClass 的友元函数,则应在类 MyClass 的 定义中加入语句 _____________________________。 2. 下列程序的输出结果为 012,请根据注释将横线处的缺失部分补充完整。 class Test{ public: Test(int a) {data=a;} ~Test( ) {} void print( ){cout<<data; } private: int data; }; int main( ){ Test t[3]={______________________};//对有 3 个元素的 Test 类对象数组 t 初始化 for(int i=0;i<3;i++) t[i].print( ); return 0; } 3. 请在横线处填写派生类 Derived 的继承方式,使得程序的输出结果为 Base。 class Base{

public: void print( ){cout<<"Base";} }; class Derived: __________ Base { }; int main( ){ Derived d; d.print( ); return 0; } 4. 下列程序的输出结果为 1 2.3 2 4.6,请将横线处的缺失部分补充完整。 class Base{ public: Base(int a):idata(a){} void print( ){cout<<idata<<<<' '; private: int idata; }; class Derived:public Base{ public: Derived(int a, double b): _________________ ,ddata(b){} void print( ){Base::print();cout<<ddata<<<<' ' ; private: double ddata; }; int main( ){ Derived dl(1,2.3), d2(2,4.6); d1.print( ); d2.print( ); return 0; } 5. 下列程序的输出结果为-5/8 -3/4,请将横线处的缺失部分补充完整。 class Fraction { //"分数"类 public: Fraction(double a,double b):num(a),den(b){} ~Fraction( ){} //重载取负运算符"-",返回一个分数对象,其分子是原来分子的相反数。 Fraction operator-( ){ _____________________________ return f; } void print( ){ cout<<num<<'/'<<den<<' ';} private: double num; //分子 double den; //分母

}; int main( ){ Fraction f1(5,8),f2(3,4); (-f1).print( );(-f2).print( ); return 0; } 6. 下面程序的输出结果是______________。 class Base{ public: int m,n; Base(int i,int j):m(i),n(j){ } }; class Derived: public Base{ public: int m, k; Derived(int i,int j):Base(i,j),m(i+1),k(j+1){} }; int main( ){ Derived d(1,5); cout<<d.m<<d.k<<d.n; return 0; } 7. 在用 class 定义一个类时,数据成员和成员函数的默认访问权限是______________。 8. 含有纯虚函数的类称为__________________。 9. 已知 int DBL(int n){return n + n;}和 long DBL(long n){return n+n;}是一个函数模板的 两个实例,则该函数模板的定义是 ____________________。 10. 在下面程序的横线处填上适当的语句,使该程序执行结果为 10. class MyClass { public: MyClass(int a){x = a;} ______________________________________ //取 x 值 private int x; }; int main( ) { MyClass my(10); cout<<my.GetNum( )<<endl; return 0; } 11.根据程序中的注释将下列缺失部分补充完整。 class Point{ int x, y; //点的 x 和 y 坐标 public: Point(int xx=0,int yy=0):x(xx),y(yy){} };

class Circle{ Point center;//圆心位置 int radius; //半径 public: //利用 cx 和 cy 分别初始化圆心的 x 和 y 坐标 Circle(int cx,int cy,int r):_________________________________{ } void area(){cout<<3.14159*radius*radius<<endl;} }; 参考答案: 1. friend void FriFun(); 2. 2.0,1,2 3. 3. public 4. 4. Base(a) 5. 5.Fraction f(-num,den); 6. 265 7.私有或 private 8. 抽象类 9. template <tpyename T>; T DBL(T n){return n+n;} 10. int GetNum(){return x;} 11. center(cx,cy),radius(r)

操作题 1
1. 请改正 main 函数中的错误, (正确语句写在对应语句的右侧) 使程序的输出结果为: member=0 member=5 member=10 源程序文件 main.cpp 清单如下: class MyClass { public: MyClass(int i){member=i;} void SetMember(int m){member=m;} int GetMember( )const {return member;} void print( )const {cout<<"member="<<member<<endl;} private: int member; }; void main( ) { /* * * * * * * * * * found * * * * * * * * * */ MyClass obj1; MyClass obj1(0); obj1.print( ); MyClass obj2(3); /* * * * * * * * * * found * * * * * * * * * */

obj1.member=5; obj1.SetMember(5); /* * * * * * * * * * found * * * * * * * * * */ MyClass.SetMember(10); obj2.SetMember(10); obj1.print(); obj2.print(); } 2. 分析下列程序中的错误,并说明原因 (1) class student { char name[10]; int age; float aver; void printStu( ){} }; void main( ) { student p1,p2,p3; p1.age=16; //… 第一题错误分析: } p1.age=16; 有错 ,因为 age 是私有数据成员,不能直接访问

(2) class stack { public: stack(int sz); private: char *p; int size; }; stack::stack(int sz) { p=new char[size=sz]; } void main() { stack stt; //...}

第二题错误分析: stack stt; 有错,类中没有定义无参构造函数

3. 已知一个源程序文件 main.cpp.其中定义了用于表示日期的类 Date,但类 Date 的定 义并不完整,请按要求完成下列操作,将类 Date 的定义补充完整: ① 定义私有数据成员 year,month 和 day 分别用于表示年,月,日,它们都是 int 型的数据。请在注释“// * *1 * *”之后添加适当的语句。 ② 完成默认构造函数 Date 的定义, Date 对象的默认值为: 使 year=1,month=1,day=1, 请在注释“// * * 2 * *”之后添加适当的语句。 ③ 完成重载构造函数 Date(int y,int m,int d)的定义,把数据成员 year,month 和 day 分别初始化为参数 y,m,d 的值,请在注释“//* * 3 * *”之后添加适当的语句。 ④ 完成成员函数 print 的类外定义,使其以“年-月-日”的格式将 Date 对象的值 输出到屏幕上。请在注释“// * * 4 * *”之后添加适当的语句。 注意:除在指定位置添加语句之外,请不要改动程序中的其他内源程序文件 main.cpp 清单如下: // main.cpp class Date { public: //* * 2 * * Date( ) {year=1 ; month=1 ;day=1 ;} Date(int y,int m,int d) { //* * 3 * * year=y ;month=m ;day=d ; } void print ( ) const; private: // date members //* * 1 * * int year, month,day; }; void Date::print( )const { //* * 4 * * cout<<year<<"--"<<month<<"--"<<day<<endl; } int main( ) { Date national_day(1949,10,1); national_day.print( ); return 0; } 操作题 2 读程序写结果: 1.有如下程序: class XA{ int a; public:

static int b; XA(int aa):a(aa) {b++;} ~XA( ){} int get(){return a;} }; int XA::b=0; int main( ){ XA d1(2),d2(3); cout<<d1.get()+d2.get( )+XA::b<<endl; return 0; } 运行时的输出结果是 7 2.有如下程序: class Point{ int x,y; public: Point(int x1=0,int y1=0):x(x1),y(y1){} int get( ){return x+y;} }; class Circle{ Point center; int radius; public: Circle(int cx,int cy,int r):center(cx,cy),radius(r){} int get(){return center.get()+radius;} }; int main( ){ Circle c(3,4,5); cout<<c.get( )<<endl; return 0; } 运行时的输出结果是 12 3.有如下程序: class Pair{ int m,n; public: Pair(int j,int k):m(j),n(k){} int get( ) {return m;} int get( ) const {return m+n;} }; int main( ){ Pair a(3,6); const Pair b(4,5); cout<<a.get( )<<b.get();

return 0; } 运行时的输出结果是

39

4. 有如下程序: class Time {public: Time(){minute=0;sec=0;} Time(int m,int s):minute(m),sec(s){} Time operator++( ); void display( ){cout<<minute<<":"<<sec<<endl;} private: int minute; int sec; }; Time Time::operator++( ) {if(++sec>=60) {sec-=60; ++minute;} return *this; } int main( ) {Time time1(34,58); ++time1; time1.display( );} return 0; } 运行时的输出结果是 34:59


更多相关文档:

许昌学院C++期末复习题

许昌学院选修课 12页 免费如要投诉违规内容,请到百度文库投诉中心;如要提出功能问题或意见建议,请点击此处进行反馈。 许昌学院C++期末复习题 隐藏>> 选择题 1 为了...

许昌学院数据库考试试题

许昌学院数据库考试试题_IT认证_资格考试/认证_教育专区。create database Stu_Cour on ( name='Stu_Cour_Data', filename='C:\Stu_Cour_DB\Stu_Cour.mdf',...

许昌学院 2010 - 2011 学年第一学期期末考试试题试卷A

2010 2011 学年第一 许昌学院 2010 - 2011 学年第一学期期末考试试题试题名称: VHDL 程序设计&EDA 原理及应用 使用专业: 应用技术 试卷类型:A 卷 使用年级:...

许昌学院概率论复习题

许昌学院C++期末复习题 暂无评价 14页 5财富值 许昌学院成人教育(本科函授......概率论复习题 12页 2财富值如要投诉违规内容,请到百度文库投诉中心;如要提出功能...

许昌学院试题题型、指导语和命题规范

许昌学院试题题型、指导语和命题规范_专业资料许昌学院试题题型、指导语和命题规范指导语:是针对题型需要达到的考核目的,向应考者指明答题方式的语句,并注明试题的...

许昌学院网络原理试题册

许昌学院计科院网络原理试题试卷(一)一、选择题(本大题共 15 小题,每小题 2 分,共 30 分) 1.网络协议主要由以下三个要素组成( )。 A、语义、语法与...

许昌学院自主招生面试试题综合素质答案技巧

许昌学院自主招生面试试题综合素质答案技巧_其它考试_资格考试/认证_教育专区。许昌学院自主招生面试试题与答题技巧 许昌学院面试试题解答许昌学院面试试题解答 一、许昌...

汇编试卷B

许昌学院 2004―2005 学年第一学期期末试题 试题名称: 汇编语言 试卷类型: (B)卷 使用年级: 03 级专科 使用专业:应用教育网络 题号 一二三四五 总分 得分 ...

许昌学院成人教育(本科函授)考试试题

许昌学院成人教育(本科函授) 许昌学院成人教育(本科函授)考试试题试题名称:法律与道德 使用专业:所有专业 试卷类型: (A)卷 使用年级: 院系___专业___班级___...

c实验答案

C++程序设计》实验指导书 //每输出 5 个换行 //初始化 第 6 页 许昌学院 ...的设计思想,及环境语言、工具等 通过设计一个 time 类和一个 stock 类达到...
更多相关标签:
网站地图

文档资料共享网 nexoncn.com copyright ©right 2010-2020。
文档资料共享网内容来自网络,如有侵犯请联系客服。email:zhit325@126.com