文档库 最新最全的文档下载
当前位置:文档库 › 厦门大学软件学院C++期末考试热身卷

厦门大学软件学院C++期末考试热身卷

软件学院《C++程序设计》考试热身卷(1)

备注:试卷需要收回!学号:24320142202492 姓名:王崇菲

选择题

1、有函数原型void test(int a,int b=7,char *c="*"),下面函数调用中,不合法的调用()

A)test(5); B)test(5,8); C)test(6,"#") D)test(0,0,"*");

2、下面有关重载函数的说法中正确的是()

A)重载函数必须具有不同的返回值类型;B)重载函数形参个数必须不同;

C)重载函数必须有不同的形参列表D)重载函数名可以不同;

3、下列关于构造函数的描述中,错误的是()

A)构造函数可以设置默认参数;B)构造函数在定义类对象时自动执行

C)构造函数可以是内联函数;D)构造函数不可以重载

4、下列关于类和对象的叙述中,错误的是

A)类是对某一类对象的抽象B)对象是类的具体实例

C)一个类只能有一个对象D)类和对象的关系是一种数据类型与变量的关系5、下列关于运算符重载的叙述中,正确的是

A)通过运算符重载,可以定义新的运算符

B)有的运算符只能作为成员函数重载

C)若重载运算符+,则相应的运算符函数名是+

D)重载一个二元运算符时,必须声明两个形参

6、已知在一个类体中包含如下函数原型: VOLUME operator-(VOLUME)const;,下列关于这个函数的叙述中,错误的是

A)这是运算符-的重载运算符函数B)这个函数所重载的运算符是一个一元运算符

C)这是一个成员函数D)这个函数不改变类的任何数据成员的值

7、有如下类声明:class Foo { int bar; }; 则Foo类的成员bar是

A)公有数据成员B)公有成员函数

C)私有数据成员D)私有成员函数

8、在下列函数原型中,可以作为类AA构造函数的是

A)void AA(int); B)int AA( );

C)AA(int)const; D)AA(int);

9、下列关于this指针的叙述中,正确的是

A)任何与类相关的函数都有this指针B)类的成员函数都有this指针

C)类的友元函数都有this指针D)类的非静态成员函数才有this指针

10、设有如下说明

typedef struct ST

{

long a; int b; char c[2];

} NEW;

则下面叙述中正确的是()

A)以上的说明形式非法B)ST是一个结构体类型

C)NEW是一个结构体类型D)NEW是一个结构体变量

11、下列关于对象初始化的叙述中,正确的是

A)定义对象的时候不能对对象进行初始化

B)定义对象之后可以显式地调用构造函数进行初始化

C)定义对象时将自动调用构造函数进行初始化

D)在一个类中必须显式地定义构造函数实现初始化

12、若在表达式y/x中,“/”是作为成员函数重载的运算符,则该表达式还可以表示为A)x.Operator/(Y) B)operator/(x,Y)

C)Y.operator/(x) D)operator/(y,x)

13、某类中有一个无参且无返回值的常成员函数Show,则正确的Show函数原型是A)const void Show();B)void const Show();

C)void Show()const;D)void Show(const);

14、下列叙述中正确的是

A)线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的

B)线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构

C)线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构

D)上述三种说法都不对

15、为了提高函数调用的实际运行速度,可以将较简单的函数定义为

A)内联函数B)重载函数C)递归函数D)函数模板

16、下列关于析构函数的描述中,错误的是

A)析构函数可以重载B)析构函数由系统自动调用

C)每个对象的析构函数只被调用一次D)每个类都有析构函数

17、已知:int a,&ra=a;关于ra的描述中正确的是( )

A. ra是int型变量a的地址值

B. a是int型变量ra的地址值

C. ra是int型变量a的引用

D. ra是int型变量a的指针

18、重载函数在调用时选择的依据中,错误的是( )

A.参数个数B.参数类型C.函数名字 D.函数类型

19、要求通过函数来实现一种不太复杂的功能,并且要求加快执行速度,选用( ).

A.内联函数B.重载函数C.递归调用D.嵌套调用

20、下述静态数据成员的特性中,错误的是( )

A.说明静态数据成员时前边要加修饰符static

B.静态数据成员要在类体外进行初始化

C.引用静态数据成员时,要在静态数据成员前加〈类名〉和作用域运算符

D.静态数据成员不是所有对象所共有的

21、在C++中,关于下列设置参数默认值的描述中,正确的是( )

A.不允许设置参数的默认值

B.设置参数默认值只能在定义函数时设置

C.设置参数默认值时,应该是先设置右边的再设置左边的

D.设置参数默认值时,应该全部参数都设置

22、在C++中,cin是个

A.类B.对象C.模板D.函数

23、下列程序段中包含4个函数,其中具有隐含this指针的是

int fun();

class Test{

public:

int fun2();

friend int fun3();

static int fun4();

};

A.fun1 B.fun2 C.fun3 D.fun4

填空题

C++语言中使用const定义常量时需要指出常量类型_、_常量名_ 和常量值_ 。

函数调用excc((v1,v2),(v3,v4,v5),v6);语句中实参的个数是_____3 _.

在用class定义一个类时,数据成员和成员函数的默认访问权限是(private )。在下面程序的横线处填上适当的语句,使该程序执行结果为10.

#include

using namespace std;

class MyClass

{ public:

MyClass(int a){x = a;}

(int getnum(){return x;})//取x值

private

int x;

};

int main()

{ MyClass my(10); cout<

}

5、非成员函数应声明为类的(友元)函数才能访问这个类的private成员。

6、判断题:静态数据成员是属于某个对象的。 F

7、判断题:没有参数的两个函数也可以重载。 F

三、简答题

请描述静态数据成员的特性和静态成员函数在访问数据成员(包括静态数据成员和非静态数据成员)时的要求;

静态数据成员为类的所有对象所共有,一旦数据值发生变化,则在所有类对象中该值均发生变化。

静态成员函数可以直接访问该类的静态数据成员和成员函数,单数需要通过对象名来访问非静态数据成员

使用const修饰类的成员函数有什么优点?

不会改变对象数据成员的值,更有安全性

C++异常处理机制有何优点?

避免局部错误造成程序的全盘崩溃,提高程序的安全性和稳固性

定义了用于表示日期的类Date,请按要求完成下列操作,将类Date的定义补充完整:

(1)定义私有数据成员year,month和day分别用于表示年,月,日,它们都是int型的数据. (2)完成默认构造函数Date的定义,使Date对象的默认值为:year=1,month=1,day=1,

(3)完成重载构造函数Date(int y,int m,int d)的定义,把数据成员year,month和day分别初始化为参数y,m,d的值

(4)完成成员函数print的类外内联定义,使其以"年-月-日"的格式将Date对象的值输出到屏幕上.

class Date

{

int year;

int month;

int day;

public:

Date():year(1),month(1),day(1){}

Date(int y,int m,int d):year(y),month(m),day(d){} void print();

};

void Date::print()

{

cout<

}

四、程序结果运行题

#include

void fun(int& x, int y) { int t = x; x = y; y = t; }

int main( )

{

int a[2] = {23, 42};

fun(a[1], a[0]);

std::cout<< a[0] << ", " << a[1] << std::endl;

return 0;

}

程序结果:

42,23

#include

using namespace std;

class Test{

pulbic:

Test() { cout<<2; }

Test(const Test &t) { cout<<1;}

};

Test fun(Test &u) {Test t=u; return t; }

int main( )

{ Test x,y; x=fun(y); return 0;

}

程序结果:

2211

#include

using namespace std;

class AA{

int n;

public:

AA(int k):n(k){ }

int get( ){ return n;}

int get( )const{ return n+1;}

};

int main( ) {

AA a(5);

const AA b(6);

cout<

return 0;

}

程序结果:

57

#include

using namespace std;

class Test {

public:

Test( ) { n+=2; }

~Test( ) { n-=3; }

static int getNum( ) { return n; } private:

static int n;

};

int Test::n = 1;

int main( )

{

Test* p = new Test;

delete p;

cout << "n=" << Test::getNum( ) << endl;

return 0;

}

程序结果:

n=0

#include

#include

class Girl{

char *name , *dial;

public:

Girl(char *n, char *d)

{ name=new char[strlen(n)+1];

strcpy(name, n);

dial= new char[strlen(d)+1];

strcpy(dial,d);

}

friend void disp(Girl &);

~Girl(){ delete name; delete dial;}

};

void disp(Girl &x)

{ cout<<”Girl \’s name is:”<

void main() {

Girl e(“Liping”,”0379-*******”);

disp(e); }

程序结果:

Girl’s name is Liping,tel:0379-*******

#include

using namespace std;

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),raaius(r){}

int get(){return center.get()+radius;}

};

int main(){

Circle c(3,4,5);

cout<

return 0;

}

程序结果:

12

五、代码题

1、声明一个dog类,包含体重、年龄、出生日期等三个数据成员及相应的成员函数。定义一个对象dog1,体重为5,年龄为10;再定义另一个对象dog2,使用dog1的状态来初始化。要求:1 采用多文件编程;

2 成员函数可实现对信息的录入和显示,至少要求要有一个const类型的成员函数

3 构造函数应包含参数默认值;

4 “出生日期”为类成员(定义为“日期”类)

//file:Date.h

#include

using namespace std;

class Date

{

int year;

int month;

int day;

public:

Date():year(1),month(1),day(1){}

Date(int y,int m,int d):year(y),month(m),day(d){}

Date(Date & d)

{

year=d.year;

month=d.month;

day=d.day;

}

void print() const;

void input(int y,int m,int d)

{

year=y;

month=m;

day=d;

}

};

void Date::print() const

{

cout<

}

//file;dog.h

#include

#include

#include"Date.h"

using namespace std;

class dog

{

int weight;

int age;

Date birthday;

public:

dog(int w=0,int a=0,int y=2015,int m=1,int d=1):weight(w),age(a),birthday(y,m,d){};

dog(dog & d)

{

weight=d.weight;

age=d.age;

birthday=d.birthday;

}

void display() const;

void scan();

};

void dog::display() const

{

cout<<"weight:"<

cout<<"age:"<

cout<<"birthday:";

birthday.print();

}

void dog::scan()

{cout<<"Please input the dog's weight and age"<

cin>>weight>>age;

int y,m,d;

cout<<"Please input the dog's birthday(year month && day)"<>y>>m>>d;

birthday.input(y,m,d);

}

//file;main.cpp

#include

#include"dog.h"

using namespace std;

int main()

{

dog dog1(5,10);

dog dog2(dog1);

dog1.display();

dog2.display();

dog1.scan();

dog1.display();

system("pause");

return 0;

}

相关文档
相关文档 最新文档