软件学院《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)"< 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; }