C++ 考试经典试题样卷四

C++ 考试经典试题样卷四

一. 选择题(以下每题有四个选项可供选择,请选择最正确的一个答案,将标号填入答题纸上,每题1分,共20分)

1、 能用作用户自定义标识符。

A) friend B) -var C) 3xyz D) Float 2、面向对象程序设计将数据与 放在一起,做为一个相互依存、不可分割的整体来处理。 A) 对数据的操作 B) 信息 C) 数据隐藏 D) 数据抽象 3、一个类的析构函数 。

A)唯一的 B)允许重载 C)至多可有两个 D)只能是缺省的 4、类型修饰符unsigned修饰 类型是错误的。

A) char B) int C) long int D) float 5、若执行完以下语句,i和j的值分别为 。

int i; int &j=i; i=5; j=i+1;

A) 5,5 B) 5,6 C) 6,6 D) 6,5 6、对于语句int *pa[5];的描述,下列说法正确的是 。

A)pa是一个指向数组的指针,所指向的数组是5个int型元素; B)pa是一个指向某数组中第5个元素的指针,该元素是int型变量; C)pa[5]表示某个数组的第5个元素; D)pa是一个具有5个元素的指针数组,每个元素都是一个int型指针。

7、假设整型数i的地址为0x12345678,指针ip地址为0x21850043,则执行以下语句后,k的值为 。 int i=100; int *ip=&i; int k=*ip;

A) 0x12345678 B) 0x21850043 C) 100 D) 不确定 8、在C++中,一个函数带有参数说明时,则参数的默认值应该在 中给出。 A) 函数定义 B) 函数声明 C) 函数定义或声明 D) 函数调用

9、指针可以用来表示数组元素,若已知语句:int a[3][7];则下列表示中错误的是 。 A) *(a+1)[5]

B) *(*a+3)

C)*(*(a+1)) D)*(&a[0][0]+2)

10、有如下定义:int a[5],*p; p=a;则下列描述错误的是 [10] 。 A) 表达式p=p+1合法的 B) 表达式a=a+1是合法的 C) 表达式p-a是合法的 D) 表达式a+2是合法的 11、#include

int a=3; int f(int); void main( ) { int a=5; f(a);

cout << \}

void f(int b) {

b=4; a+=b; }

程序的输出结果是 [11] A)3

B)5

C)7

D)9

12、以下程序运行结果是 [12] 。

#include void main(){

int x=1,y=0,a=0,b=0;

switch(x) { case 1: switch(y)

{case 0:a++;break; case 1:b++;break; } case 2:

a++;b++;break; }

cout << a<<”,” << b; }

A)2,1 B) 1,2

C) 1,1 13、执行下列程序段时,输出 [15] 。 int s1=0,s2=0,s3=0,s4=0; for(int t=1;t<=4;t++) switch(t)

{

case 4:s1++;break; case 3:s2++;break; case 2:s3++; default:s4++; }

cout<

A) 语法出错 B) 1,1,1,2 C) 1,2,3,2 D) 1,1,2,2 14、下列说法正确的是: [13] 。 A) 一个类的对象可以是另一个类的成员 B) 一个类可以作为另一个类的派生类 C) 一个类定义在另一个类的说明中 D) 以上说法均正确

15、类MyClass的定义如下:

class MyClass {

public:

MyClass(){value=0;} SetValue(int i){value=i;}

private:

int value; };

则对语句:MyClass *p,my;p=&my;正确的描述是 [14] 。 A) 语句p=&my;是把对象my赋值给指针变量p;

B) 语句MyClass *p,my;会调用两次类MyClass的构造函数 C) 对语句*p.SetValue(5)的调用是正确的 D) 语句p->SetValue(5)与my.SetValue(5)等价 16、下列各类函数中, 不是类的成员函数。

A) 构造函数 B) 析构函数 C) 友元函数 D) 拷贝构造函数 17、派生类的对象对它的基类成员中 是可以访问的。

A) 公有继承的公有成员 B) 公有继承的私有成员 C) 公有继承的保护成员

D)0,0

D) 私有继承的公有成员

18、有关析构函数的说法不正确的是 。

A) 析构函数有且只有一个 B) 析构函数无任何函数类型

C) 析构函数和构造函数一样可以有形参

D) 析构函数的作用是在对象被撤销时收回先前分配的内存空间 19、通常拷贝构造函数的参数是 。

A) 某个对象名

B) 某个对象的成员名 C) 某个对象的引用名 D) 某个对象的指针名

20、若类A和类B的定义如下: class A

{ int i,j; public:

void get(); }

class B: A

{ int k; public:

void make(); }

void B::make() {

k=i*j;

}

则上述定义中, 是非法的表达式。

A) void get(); B) int k; C) void make(); D) k=i*j;

二、填空题(每空1分,共20分)

1、 数学式子x2+y2写成C++语言表达式是 [1] 。

2、如果a=1,b=2,c=3,d=4,则条件表达式a

3、设有函数定义:int f1(void) {return 100,200;},调用f1时,函数返回值为 [3] 。

4、C++使用cin和cout进行输入输出操作的程序必须包含头文件 [4] ,其语句形式为 [5] 。

5、用C++表达式描述命题“a与b中有一个小于c”: [6] 。

6、函数调用语句fun(a+b,(x,y),fun(n+k,d,(a,b)))中实参的个数为 [7] 。

7、定义内联函数所用的关键字 [8] ,定义友元所用的关键字为 [9] 。 8、执行常量定义语句const int size=100*sizeof(int);后,符号常量size的值为 [10] 。 9、设m=1,n=2, 则表达式m++= =n和++m= =n的值分别为 [11] 和 [12] 。

10、任何类中允许有 [13] 、 [14] 、 [15] 三种类型的数据,数据和成员函数的默认类型为 [16] 。 11、C++支持面向对象程序设计的四个要素是:封装性、继承和派生、 [17] 和 [18] 。 12、若Queue是一个类,aQueue是它的一个对象,而且该类中定义了一个静态成员函数show()

则在类外对该成员的函数进行调用的方式可以为 [19] 和 [20] 。

三、阅读程序,写出程序运行结果(第[3]、[10]空为3分,其余每空1分,共20分) 1、写出下列程序的运行结果

#include class CSample { public:

CSample(); void Display();

private: int i;

static int k; };

Csmaple::CSample() {i=0; k++; }

void CSample::Display()

{ cout<<”i=”<

程序的输出结果为 [1] [2] 。 2、#include

void splitfloat(float x, int *p1, float *p2) {

*p1=(int)x; *p2=x-*p1; }

void main() {

int n; float x ,f; cin>>x;

splitfloat(x,&n,&f);

cout<<”n=”<

输入3.1415 ,输出结果为________[3]________ 3、 #include

int nextStudentID=0; class StudentID { public:

StudentID(int id=0) { value=id;

cout<<“Assigning student id:”<

~StudentID()

{ - -nextStudentID;

cout<<“Destructing ID:”<

int value; }; class student { public:

student(char * pName=“no name”, int ssID=0):id(ssID) { cout<<“Constructing student:”<

protected:

StudentID id; }; void main()

{ student s(“Randy”,9818);

student t(“Jenny”,9819);

}

输出结果为____[4]___________ [5] [6] [7] [8] [9] 。 4、 #include

class B { public: B( ) {};

B(int i, int j ); void printb();

private: int a,b;

};

class A { public: A( ) {};

A(int i, int j); void printa();

private: B c; };

A::A(int i, int j ):c(i,j) {};

void A::printa( ) {c.printb( );} B::B(int i, int j ) {a=i; b=j; }

void B::printb( )

{cout<<”a=”<

void main( ) {

A m(7,8); m.printa( ); }

输出结果为_____[10]__________ 5、#include

class B { public: B(); B(int i); ~B(); void Print() ; private: int b;

}; B::B() { b=0; cout<<\

}

B::B(int i) { b=i;

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4