2007-2013全国计算机二级C++等级考试真题及答案(3)

2019-03-28 08:05

(32)建立一个有成员对象的派生类对象时,各构造函数体的执行次序为(C)。 A)派生类、成员对象类、基类 B)成员对象类、基类、派生类 C)基类、成员对象类、派生类 D)基类、派生类、成员对象类

(33)如果表达式 a>=b 中的“>=”是作为非成员函数重载的运算符,则可以等效地表示为(A)。

A)a.operator>=(b) B)b.operatotr>=(a) C)operator>=(a,b) )operator>=(b,a) (34)当使用 ofstream 流类定义一个流对象并打开一个磁盘文件时,文件的默认打开方式为(B)。 A)ios base::in B)ios_base::binary C)ios_base::in|ios_base::out D)ios_base::out (35)在一个抽象类中,一定包含有(C)。

A)虚函数 B)纯虚函数 C)模板函数 D)重载函数 二、填空题(每空2分,共30分)

(6)当使用关键字__void__作为函数返回类型时,该函数不返回任何值。

(7)已知数组 a 中有 n 个元素,下列语句将数组 a 中从下标 x1 开始的 k 个元素移动到从下标 x2 开始的 k 个元素中,其中 0<=x1=x1; i--) a[_x2+k-1_]=a[i]; (8)有如下程序: #include using namespace std;

int fun1(int x) {return++x;} int fun2(int &x) {return++x;} int main(){ int x=1,y=2; y=fun 1(fun2(x)); cout<

程序的输出结果是_2,3_。 (9)有如下程序: #include using namespace std; class pumpkin{ public:

pumpkin(){++count;} ~pumpkin(){--count;} static void total_count(){

cout<

private:

static int count; };

int pumpkin::count=0; int main(){

11

pumpkin pl[10];

pumpkin::total_count(); return 0; }

这个程序的输出结果是__10pumpkin(s)__。 (10)有如下递归函数: int Fun(int n){ if(n<=1) return 1;

__else return n*Fun(n-1);__ }

请补充完整,使得函数 Fun 能够正确计算形参 n 的阶乘。 (11)请在下列程序中的空格处填写正确的语句: class Sample{ public:

Sample(){} ~Sample(){}

void SetData(int data)

{ //将 Sample 类成员变量 data 设置成形参的值 __Sample::data=data__ //注意形参与成员同名 }

private: int data; };

(12)有如下类定义,请将Sample类的拷贝构造函数补充完整。 class Sample{ public: Sample(){)

~Sample() {if(p) delete p;) Sample (const Sample& s){ __p=new int;*p=s.*p__ }

void SetData(int data) {p=new int(data);} private: int*p; };

(13)重载加法运算符“+”,其函数名是__operator +_。 (14)有如下程序: #include using namespace std; class Wages{ //\工资\类 double base; //基本工资 double bonus; //奖金 double tax; //税金 public:

Wages(double CBase, double CBonus,

12

double CTax)

:base(CBase), bonus(CBonus), tax(CTax){}

double getPay()const; //返回应付工资额

Wages operator+(Wages w)const; //重载加法 };

double Wages::getPay()const {return base+bonus-tax;}

Wages Wages::operator+(Wages w)const

{ return Wages(base+w.base, bonus+w.bonus, tax+w.tax); }

int main(){

Wages wl(2000,500,100),w2(5000,1000,300); cout<<(wl+w2).getPay()<

}(15)有如下程序: #include using namespace std; class Pet{

char name[10]; public:

Pet(char*name){strcpy(this->name, name);} const char*getName()const {return name;} virtual void call()const=0; };

class Dog: public Pet{ public:

Dog(char*name):Pet(name){}

void call()const{cout<<\汪汪叫\};

class Cat:public Pet{ public:

Cat(char*name):Pet(name){}

void call()const{cout<<\喵喵叫\};

int main(){

Pet *pet1=new Dog(\哈克\ *pet2=new Cat(\吉米\cout<getName(); pet1->call(); cout<

cout<getName(); pet2->call();

13

cout<

程序的输出结果是__哈克汪汪叫__ __吉米喵喵叫__

2008年9月二级 C++笔试试卷参考答案 二、填空题 (6)void (7)X2+k-1 (8)2,3 (9)10pumpkin(s) (10)else return n*Fun(n-1); (11)Sample::data (12)p=new int; *p=s.*p; (13)operator + (14)8100

2009年9月全国计算机二级笔试C++

一、选择题(1-10,21-40每题2分,11-20每题1分)

(11)已知函数FA调用FB,若要把这两个函数定义在同一个文件中,则 D A)FA必须定义在FB之前 B)FB必须定义在FA之前

C)若FA定义在FB之后,则FA的原型必须出现在FB的定义之前 D)若FB定义在FA之后,则FB的原型必须出现在FA的定义之前 (12)有如下两个类定义 C class AA{}; class BB{ AA v1,*v2; BB v3; int *v4; };

其中有一个成员变量的定义是错误的,这个变量是 A)v1 B)v2 C)v3 D)v4

由于AA和BB都是类的定义,在类定义中无法声明一个自己的对象,所以在BB的类定义中,企图声明一个BB类的对象,是非法的。 (13)有如下类定义: B class XX{ int xdata; public:

XX(int n=0) : xdata (n) { } };

class YY : public XX{ int ydata; public:

YY(int m=0, int n=0) : XX(m), ydata(n) { } };

YY类的对象包含的数据成员的个数是 A)1 B)2 C)3 D)4

(14)下列有关运算符函数的描述中,错误的是 C A)运算符函数的名称总是以operator为前缀

14

B)运算符函数的参数可以是对象

C)运算符函数只能定义为类的成员函数(友元函数)

D)在表达式中使用重载的运算符相当于调用运算符重载函数 (15)下列关于模板形参的描述中,错误的是 B A)模板形参表必须在关键字template之后 B)模板形参表必须用括弧( )括起来 C)可以用class修饰模板形参

D)可以用typename修饰模板形参

(16)在下列枚举符号中,用来表示“相对于当前位置”文件定位方式的是 A

A)ios_base::cur B)ios_base::beg C)ios_base::out D)ios_base::end (17)下列字符串可以用作C++标识符的是 D

A)2009var B)goto C)test - 2009 D)_123 (18)下列枚举类型的定义中,包含枚举值3的是 A A)enum test {RED, YELLOW, BLUE, BLACK}; B)enum test {RED, YELLOW=4, BLUE, BLACK}; C)enum test {RED=-1, YELLOW,BLUE, BLACK}; D)enum test {RED, YELLOW=6, BLUE, BLACK}; (19)有如下程序段: C int i=1; while (1) { i++;

if(i == 10) break;

if(i%2 == 0) cout << '*'; }

执行这个程序段输出字符*的个数是

A)10 B)3 C)4 D)5 (20)已知数组arr的定义如下: D int arr[5] = {1,2,3,4,5};

下列语句中输出结果不是2的是 A)cout << *arr+1 <

(21)计算斐波那契数列第n项的函数定义如下:B Int fib(int n){

if (n == 0) return 1; else if (n == 1) return 2;

else return fib(n-1)+fib(n-2); }

若执行函数调用表达式fib(2),函数fib被调用的次数是 A)1 B)2 C)3 D)4

(22)Sample是一个类,执行下面语句后,调用Sample类的构造函数的次数是 D Sample a[2], *p = new Sample;

A)0 B)1 C)2 D)3 (23)下列关于虚基类的描述中,错误的是 C

A)使用虚基类可以消除由多继承产生的二义性

15


2007-2013全国计算机二级C++等级考试真题及答案(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:非常规油气资源

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: