您好,欢迎来到意榕旅游网。
搜索
您的当前位置:首页C++试卷

C++试卷

来源:意榕旅游网


一、单选题

1、 一个C++源程序文件的扩展名为(C) A、.h B、.c

C、.cpp D、.cp

2、 与C语言printf(“Hello,World\\n”);语句功能相同的C++语句是(B) A、cout>>”Hello,World\\n”; B、cout<<”Hello,World\\n”; C、cin>>”Hello,World\\n”; D、cin<<”Hello,World\\n”;

3、 C++语言中,所有函数说明都必须指明返回值类型,没有返回值的应把函数类型说明为(D ) A、int B、char C、float D、void 4、 对使用关键字new所开辟的动态存储空间,释放时必须使用( C) A、free B、create C、delete D、realse 5、 下列标识符中,不合法的用户标识符为(A )。 A、a#b B、_int C、a_10

D、PAd

6、 一个函数功能不太复杂,但要求被频繁调用,则应把它定义为(A ) A、内联函数 B、重载函数 C、递归函数 D、嵌套函数 7、 int Func(int,int); 不可与下列哪个函数构成重载(B) A、int Func(int ,int ,int); B、double Func(int,int); C、double Func(double, double); D、double Func(int ,double);

8、 下列关于函数参数默认值的描述中,正确的是( B) A、函数参数的默认值只能设置一个

B、若一个函数含有多个参数,其中一个参数设置成默认值后,其后所有参数都必须设置默认值。 C、若一个函数含有多个参数,则设置默认参数时可以不连续设置默认值 D、C++语言中函数都必须设有默认值 9、 如果没有为一个类定义任何构造函数的情况下,下列描述正确的是(A ) A、编译器总是自动创建一个不带参数的构造函数 B、这个类没有构造函数 C、这个类不需要构造函数 D、该类不能通过编译 10、假定AB为一个类,则执行AB x;语句时将自动调用该类的(B ) A、有参构造函数 B、无参构造函数 C、拷贝构造函数 D、赋值构造函数

11、假定AA为一个类,a()为该类公有的函数成员,x为该类的一个对象,则访问x对象中函数成员a()的格式为(B )

A、x.a B、x.a() C、x->a D、x->a() 12、静态数据成员的初始化必须在(B ) A、类内 B、类外

C、构造函数内

D、静态成员函数内

13、如果类A被说明成类B的友元,则( D)。 A、类A的成员即类B的成员 B、类B的成员即类A的成员 C、类A的成员函数不得访问类B的成员 D、类A的成员函数可以访问类B的成员 14、以下叙述错误的是(A ) A、派生类一般都用公有派生 C、赋值兼容规则也适用于多重继承的组合 15、解决二义性问题的方法有(C ) A、只能使用作用域分辨操作符。 C、使用作用域分辨操作符或虚基类。

B、对基类成员的访问必须是无二义性的

D、基类的公有成员在派生类中仍然是公有的 B、使用作用域分辨操作符或赋值兼容规则。 D、使用虚基类或赋值兼容规则。

第 1 页 共 6 页

16、建立包含有类对象成员的派生类对象时,自动调用构造函数的执行顺序依次为( C) A、自己所属类、对象成员所属类、基类的构造函数 B、对象成员所属类、基类、自己所属类的构造函数 C、基类、对象成员所属类、自己所属类的构造函数 D、基类、自己属性类、对象成员所属类的构造函数 17、实现两个相同类型数加法的函数模板的声明是(C ) A、add(T x,T y) B、T add(x,y) C、T add(T x,y) 18、所谓多态性是指(B )

A、不同的对象调用不同名称的函数 C、一个对象调用不同名称的函数

D、T add(T x,T y)

B、不同的对象调用相同名称的函数 D、一个对象调用不同名称的对象

D、函数体

19、在派生类中定义虚函数时,与基类中相应的虚函数不同的是(D A、参数类型 B、参数个数 C、函数名称

20、要将类A说明是类B的虚基类,正确的描述是( B ) A、class virtual B:public A B、class B:virtual public A C、virtual class B:public A D、class B:public A virtual 二、填空题

1、在面向对象程序设计框架中, 对象 是程序的基本单元。

2、一个C++程序的开发步骤通常包括编辑、编译、 链接 、运行和调试。 3、C++语言支持的两种多态性分别是编译时的多态性和 的多态性。

4、假定A为一个类,则语句A(A &a);为该类 复制构造 函数的原型说明。

5、不同对象可以调用相同名称的函数,但可导致完全不同的行为的现象称为_函数重载___ ____。 6、在C++中,声明布尔类型变量所用的关键字是__bool___ ___。

7、对象成员构造函数的调用顺序取决于这些对象成员在 声明 的顺序,与它们在成员初始化列表中给出的顺序无关。

8、 友元函数 提供了不同类或对象的成员函数之间、类的成员函数与一般函数之间进行数据共享的机制。

9、设在程序中使用如下语句申请了一个对象数组:

Point * ptr = new Point[2];

则在需要释放ptr指向的动态数组对象时,所使用的语句是_delete[]ptr;_______。 10、类A有如下成员函数

int A::fun(double x){return (int) x/2;} int A::fun(int x){return x*2;} 设a为类A的对象,在主函数中有int s=a.fun(6.0)+a.fun(2),则执行该语句后,s的值为___7_____。 三、程序分析题

1、 写出下面程序的输出结果。 #include void main()

{ for(int i=-1;i<4;i++) cout<<(i?’0’:’*’); } 结果为:0*000 2、 写出下面程序的输出结果。 #include class Test { int num; public:

第 2 页 共 6 页

Test(int n=0){num=n;num++;} ~Test(){cout<<”Destructor is active, number=”<};

void main() { Test x[2];

cout<<”Exiting main”<Destructor is active,number=1 Destructor is active,number=1

3、 给出下面程序的输出结果。 #include template class Sample { T n; public:

Sample(T i){n=i;}

int operator==(Sample &);

};

template

int Sample::operator==(Sample &s) { if(n==s.n) return 1; else return 0; } void main()

{ Samples1(2),s2(3); cout<<”s1与s2的数据成员”<<(s1==s2?”相等”: “不相等”)< s3(2.5),s4(2.5); cout<<”s3与s4的数据成员”<<(s3==s4?”相等”: “不相等”)<输出结果为:

s1 与 s2的数据成员不相等 s3与s4的数据成员相等 4、 给出下面程序的输出结果。 #include class aa

{ public: virtual int func(){return 0;} }; class test: public aa

{ public: int func(){ return 58; } }; void main()

第 3 页 共 6 页

{ test d; aa &b=d;

cout<输出结果: 58 0

5、 写出下面程序的输出结果。 #include class Date

{ int Year,Month,Day; public: Date(int y=2009,int m=9,int d=10){Year=y; Month=m; Day=d;} void PrintDate(){cout<};

class Time

{ int Hour,Minutes,Seconds; public: Time(int h=2,int m=45,int s=0){Hour=h; Minutes=m;Seconds=s;} void PrintTime(){cout<class Date_Time:public Date,public Time { public:

Date_Time(){};

Date_Time(int y,int mo,int d,int h=0,int mi=0,int s=0):Date(y,mo,d),Time(h,mi,s){} void PrintDate_Time(){PrintDate(); PrintTime();}

};

void main()

{ Date_Time a,b(2010,1,28,3,0,0),c(2010,2,1,12,0); a.PrintDate_Time(); b.PrintDate_Time(); c.PrintDate_Time(); }

输出结果: 2009/9/10 2:45:0 2010/1/28 3:0:0 2010/2/1 12:0:0

第 4 页 共 6 页

四、完成程序题

1、 请在横线处填上适当的语句,以使程序完整。 #include class Point { int x,y; public:

Point(int a, int b){ x=a; y=b; cout<<\"Point...\"<class Rectangle : public Point { int H, W; public:

Rectangle(int a, int b, int h, int w):_ Point( a, b)_______________ //构造函数初始化列表 { H=h; W=w; cout<<\"Rectangle...\"<void Show( ){ cout<<\"H=\"<void main()

{ Rectangle r1(3,4,5,6);

r1.Showxy( ); r1.Show( ); }

2、 请在横线处填上适当的语句,以使程序完整。 #include class A { public: A(){ }

__virtual_______ void func( ){ cout << \"CA \" << \"->\"; } ~A( ) { }

_ virtual _______ void fund( ){ cout << \"DA \" << \"->\"; } };

class B : public A { public:

B( ) { func( ); } //自己类中没有func()函数,则调用基类中的虚函数。 void fun( ) { cout<<\" go \"; func( ); } ~B( ) { fund( ); } //自己类中没有fund()函数,则调用基类中的虚函数。 };

class C : public B { public: C( ) { }

void func( ) { cout <<\"CC\" << \"->\"; } ~C( ) {fund();} //自己类中有fund()函数,则调用自己类中的成员函数。 void fund( ){ cout << \"DC \" << \"->\"; } };

void main( )

第 5 页 共 6 页

{ C c; c.fun( );

} //行动结果为:CA->go CC->DC->DA

第 6 页 共 6 页

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- yrrf.cn 版权所有

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务