厦门大学软件学院C 期末考试热身卷
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
cout << "n=" << Test::getNum( ) << endl;
return 0;
}
程序结果:
n=0
#include<iostream>
using namespace std;
class Point{
int x,y;
public:
Point(int x1=0,int y1=0):x(x1),y(y1){}
2、 函数调用 excc((v1,v2),(v3,v4,v5),v6);语句中实参的个数是_____3 _.
3、 在 用 class 定 义 一 个 类 时 , 数 据 成 员 和 成 员 函 数 的 默 认 访 问 权 限 是
( private
)。
4、 在下面程序的横线处填上适当的语句,使该程序执行结果为 10.
class Date
{
int year;
3
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<<year<<"-"<<month<<"-"<<day<<endl; }
2、下面有关重载函数的说法中正确的是()
A)重载函数必须具有不同的返回值类型; B)重载函数形参个数必须不同;
C)重载函数必须有不同的形参列表 D)重载函数名可以不同;
3、下列关于构造函数的描述中,错误的是()
A)构造函数可以设置默认参数; B)构造函数在定义类对象时自动执行
C)构造函数可以是内联函数; D)构造函数不可以重载
int get(){return x+y;}
};
class Circle{
Point center;
int radius;
D.静态数据成员不是所有对象所共有的
21、在 C++中,关于下列设置参数默认值的描述中,正确的是 ( )
A.不允许设置参数的默认值
B.设置参数默认值只能在定义函数时设置
C.设置参数默认值时,应该是先设置右边的再设置左边的
D.设置参数默认值时,应该全部参数都设置
22、在 C++中,cin 是个
A.类 B.对象 C.模板
void main() { Girl e(“Liping”,”0379-5515179”);
disp(e); } 程序结果: Girl’s name is Liping,tel:0379-5515179
#include <iostream>
using namespace std;
class Test {
D)AA(int);
9、下列关于 this 指针的叙述中,正确的是
A)任何与类相关的函数都有 this 指针 B)类的成员函数都有 this 指针
C)类的友元函数都有 this 指针
D)类的非静态成员函数才有 this 指针
10、设有如下说明
typedef struct ST
{
long a; int b; char c[2];
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
2
二、 填空题
1、 C++语言中使用 const 定义常量时需要指出 常量类型 _、_常量名_ 和 常量值_ 。
19、要求通过函数来实现一种不太复杂的功能,并且要求加快执行速度,选用( ).
A.内联函数 B.重载函数 C.递归调用 D.嵌套调用
20、下述静态数据成员的特性中,错误的是 ( )
A.说明静态数据成员时前边要加修饰符 static
B.静态数据成员要在类体外进行初始化
C.引用静态数据成员时,要在静态数据成员前加〈类名〉和作用域运算符
}
5、非成员函数应声明为类的(友元)函数才能访问这个类的 private 成员。
6、判断题:静态数据成员是属于某个对象的。 F
7、判断题:没有参数的两个函数也可以重载。 F
三、简答题 1、 请描述静态数据成员的特性和静态成员函数在访问数据成员(包括静态数据成员和非静
态数据成员)时的要求; 静态数据成员为类的所有对象所共有,一旦数据值发生变化,则在所有类对象中该
软件学院《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,"*");
D)在一个类中必须显式地定义构造函数实现初始化
1
12、若在表达式 y/x 中,“/”是作为成员函数重载的运算符,则该表达式还可以表示为
A)x.Operator/(Y)
B)operator/(x,Y)
C)Y.operator/(x)
D)operator/(y,x)
13、某类中有一个无参且无返回值的常成员函数 Show,则正确的 Show 函数原型是
四、程序结果运行题
#include <iostream>
#include <iostream>
void fun(int& x, int y) { int t = x; x = y; y = using namespace std;
t; }
class Test{
int main( )
pulbic:
{
Test() { cout<<2; }
int a[2] = {23, 42};
Test(const Test &t) { cout<<1;}
fun(a[1], a[0]);
};
std::cout<< a[0] << ", " << a[1] << Test fun(Test &u) {Test t=u; return t; }
std::endl;
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.函数类型
(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 对象的 值输出到屏幕上.
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;
#include <iostream.h> #include <string.h> 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:”<<x.name<<”,tel:”<<x.dial<<endl; }
D)重载一个二元运算符时,必须声明两个形参
6、已知在一个类体中包含如下函数原型: VOLUME operator-(VOLUME)const;,下列关于
这个函数的叙述中,错误的是
A)这是运算符-的重载运算符函数 B)这个函数所重载的运算符是一个一元运算符
C)这是一个成员函数
D)这个函数不改变类的任何数据成员的值
4、下列关于类和对象的叙述中,错误的是
A)类是对某一类对象的抽象
B)对象是类的具体实例
C) 一个类只能有一个对象
D)类和对象的关系是一种数据类型与变量的关系
5、下列关于运算符重载的叙述中,正确的是
A)通过运算符重载,可以定义新的运算符
B)有的运算符只能作为成员函数重载
C)若重载运算符+,则相应的运算符函数名是+
#include <iostream>
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<<MY.GETNUM()<<endl; return 0;
值均发生变化。 静态成员函数可以直接访问该类的静态数据成员和成员函数,单数需要通过对象名来访 问非静态数据成员 2、 使用 const 修饰类的成员函数有什么优点?
不会改变对象数据成员的值,更有安全性 3、 C++异常处理机制有何优点?
避免局部错误造成程序的全盘崩溃,提高程序的安全性和稳固性 4、 定义了用于表示日期的类 Date,请按要求完成下列操作,将类 Date 的定义补充完整:
} NEW;
则下面叙述中正确的是( )
A)以上的说明形式非法
B)ST 是一个结构体类型
C)NEW 是一个结构体类型
D)NEW 是一个结构体变量
11、下列关于对象初始化的叙述中,正确的是
A)定义对象的时候不能对对象进行初始化
B)定义对象之后可以显式地调用构造函数进行初始化
C)定义对象时将自动调用构造函数进行初始化
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)每个类都有析构函数
7、有如下类声明: class Foo { int bar; }; 则 Foo 类的成员 bar 是
A)公有数据成员
B)公有成员函数
C)私有数据成员
D)私有成员函数
8、在下列函数原型中,可以作为类 AA 构造函数的是
A)void AA(int);
B)int AA( );
C)AA(int)const;
int main( )
return 0;
{ Test x,y; x=fun(y); return 0;
}ቤተ መጻሕፍቲ ባይዱ程序结果:
} 程序结果:
42,23
2211
4
#include <iostream> 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<<a.get()<<b.get(); return 0; } 程序结果: 57