C++期末复习题

余年寄山水
533次浏览
2020年08月04日 01:02
最佳经验
本文由作者推荐

枣庄学院分数线-试用期自我评价












线

























































































































( 20 至 20 学年 第___学期 )
课程名称: C++语言 考试时间
: 110 分钟
课程代码: 试卷总分
: 100 分
考试形式: 闭卷 学生自带普通计算机器:


一、判断题(在下列各题中,请在正确 的题后括号中打√,错误的题后括号中打。本大
题共15小题,每小题1分,总计15分)
1. C++源程序时,出现了警告错(Warning)也可以生成可执行文件。√
2.定义变量时,变量的存储类说明符不得省略。×
3.增1和减1运算符不仅可以作用在变量上,也可以作用在表达式上。×
4.在定义一个数组时,对其部分元素进行了初始化,没有初始化的元素的值都是无意
义的。×
5.开关语句可实现多路分支。√
6.指针的类型是它所指向的变量或对象的类型。√
7.函数可以设置默认的参数值,默认参数值必须设置在函数定义时的形参上。×
8.对象成员的表示方法与结构变量成员的表示方法相同。√
9.构造函数和析构函数都可以重载。×
10.静态数据成员必须在构造函数的成员初始化列表中进行初始化。×
11.友元函数是说明在类体内的非成员函数,它可以访问类中的所有成员。√
12.派生类只继承基类中的公有成员和保护成员,而不继承私有成员。×
13.运算符重载 是通过函数来实现的,定义运算符重载函数时,函数名中要使用关
键字operator。√
14.只要是成员函数就可以说明为虚函数,因为虚函数是一种成员函数。×
15.含有纯虚函数的类称为抽象类。√
二、填空题(在___处填上最准确的答案)(本大 题共15个空,每空1分,总计15分)
1.已知:double dd[ ][3]={{1.2, 2.4, 3.6}, {4.8, 5.2},{6.4}}; 这里dd是
一个二维数组的数组名,该数组共有 9 个元素,每个元素的类型是 double 。
数组元素dd[0][0] dd[1][1]的值是 5.3 。
2.表达式语句是一个表达式后边加上 分号的。
3.使用关键字inline说明的函数称为 内联 函数,具有相同函数名但具有不同
实现的函数称为 重载 函数。
4.使用class定义 的表中,成员的默认访问权限是私有的;由struct定义的类中,
成员的默认的访问权限是 公有的。
5.静态成员是属于 类的,它除了可以通过对象名来引用外,还可以使用类
名限定。
6.运行下面程序段后,k值为 36 。
int k=1,n=263;
do {k*=n%10;n=10; } while(n);
7.利用“对象名.成员变量”形式访问的对象成员仅限于被声明为 public 成员;
第 1 页 共 10 页


若要访问其他成员变量,需要通过成员函数函数或 友元 函数。
8.在保护继承方式下,基类的public成员成为派生类的保护 成员。
9.C++语言多态性主要表现在动态联编、函数重载和运算符重载
10.虚函数是一种非静态成员函数。说明方法是在函数名前加关键字virtual
三、选 择题(在每个小题四个备选答案中选出一个正确答案)(本大题共20小题,每小
题1分,总计20分)
1.面向对象的(B )是一种信息隐蔽技术,目的在于将对象的使用者与设计者分开。不
允许 使用者直接存取对象的属性,只能通过有限的接口与对象发生联系。
A.多态性 B.封装性 C.继承性 D.重用性
2.下列标识符中,(B )是合法的。
A.goto B.Student C. 123 D.k-ld
3.已知a=4,b=6,c=8,d=9,则“(a++,b>a ++&&c>d)?++d:aA.9 B.6 C.8 D.0
4.以下不正确的语句是(B )。
A.if(x>y); B.if(x=y)&&(x!=0) x+=y;
C.if(x!=y)cin>>x;else cin>>y;D.if(x5.以下能正确计算1*2*3*…*10的程序段是( C )。
A.do {i=1;s=1; B.do {i=1;s=0;
s=s*i; i++;} s=s*i;i++;}
while(i<=10); while(i<=10);
C. i=1;s=1; D.i=1;s=0;
do {s=s*i; do{s=s*i;
i++;} i++;}
while(i<=10); while(i<=10);
6.下列数组的定义中,(C )是错误的。
A.char ca1[]={‘c’,’m’,’n’}; ca2[]=”name”;
C. char ca3[4]=”your”; array[]={1,2,3,4};
7.如果一个函数无返回值,定义时它的函数类型应是(C )。
A.任意 B.int C.void D.无
8.已知:int fun (int &a),m=10;下列调用fum()函数的语句中,正确的是(C )。
A.fun(&m); B.fun (m*2); C.fun (m); D.fun (m++);
9.在C++语言中,关于参数默认值的描述正确的是( B )。
A.只能在函数定义时设置参数默认值
B.设置参数默认值时,应当从右向左设置
C.设置参数默认值时,应当全部设置
D.设置参数默认值后,调用函数不能再对参数赋值
10.如果x是整型变量,则合法的形式是( D )。
A.&(x+5) B.*x C.&*x D.*&x
11. 拷贝构造函数具有的下列特点中,(D )是错误的。
A.如果一个类中没有定义拷贝构造函数时,系统将自动生成一个默认的
第 2 页 共 10 页


B.拷贝构造函数只有一个参数,并且是该类对象的引用
C.拷贝构造函数是一种成员函数
D.拷贝构造函数的名字不能用类名
12.关于静态成员的描述中,(B )是错误的。
A.静态成员可分为静态数据成员和静态成员函数
B.静态数据成员定义后必须在类体内进行初始化
C.静态数据成员初始化不使用其构造函数
D.静态成员函数中不能直接引用非静态成员
13.关于友元的描述中,(A )是错误的。
A.友元函数是成员函数,它被说明在类体内
B.友元函数可直接访问类中的私有成员
C.友元函数破坏封装性,使用时尽量少用
D.友元类中的所有成员函数都是友元函数
14. 以下有关类与结构体的叙述不正确的是(C )
A. 结构体中只包含数据;类中封装了数据和操作
B. 结构体的成员对外界通常是开放的;类的成员可以被隐藏
C. 用struct不能声明一个类型名;而class可以声明一个类名
D. 结构体成员默认为public;类成员默认为private
15.派生类的对象对它的(A)是可以访问的。
A.公有继承的基类的公有成员 B. 公有继承的基类的保护成员
C. 公有继承的基类的私有成员 D. 保护继承的基类的公有成员
16.下列对基类和派生类关系的描述中,错误的是(B )。
A.派生类是基类的具体化 B.派生类是基类的子集
C.派生类是基类定义的延续 D.派生类是基类的组合
17.下列虚基类的声明中,正确的是(D )。
virtual B:public A l class B:public A
B:public A virtual B: virtual public A
18.要实现动态联编,必须通过( A)调用虚函数。
A.对象指针 B.成员名限定 C.对象名 D.派生类名
19.下列关于抽象类的描述中,错误的是( D)。
A.抽象类中至少应该有一个纯虚函数 B.抽象类可以定义对象指针和对象引用
C.抽象类通常用作类族中最顶层的类 D.抽象类的派生类必定是具体类
20.下列描述中,(D )是抽象类的特征。
A.可以说明虚函数 B.可以进行构造函数重载
C.可以定义友元函数 D.不能说明其对象
四、写出程序的运行结果(本大题共5小题,共计30分)
1.程序一(本题4分)
#include
class Date
{
public:
第 3 页 共 10 页


void Setvalue(int m,int d,int y)
{
month=m;
date=d;
year=y;
}
void Display()
{
cout< }
private:
int month;
int date;
int year;
};

void main()
{
Date today;
cout<<
ue(18,12,2005);
y();
}
2.程序二(本题6分)
#include
#include
class Complex
{
public:
Complex(double r,double i);
~Complex();
double abscomplex();
private:
double real;
double imag;
};

Complex::Complex(double r,double i)
{
cout<<
real=r;
imag=i;
cout<<
}

Complex::~Complex()
{
第 4 页 共 10 页


cout<<
cout<<
}

double Complex::abscomplex()
{
double t;
t=real*real+imag*imag;
return sqrt(t);
}
int main()
{
Complex A(3,4);
Complex B(6,8);
cout<<
cout<<
return 0;
}
3.程序三(本题6分)
#include
class Point
{
public:
Point()
{
x=0;
y=0;
cout<<
cout< }
Point(int x1,int y1)
{
x=x1;
y=y1;
cout<<
cout< }
~Point()
{
cout<<
}
int Getx() {return x;}
int Gety() {return y;}
private:
int x,y;
};

第 5 页 共 10 页


void main()
{
cout<<
Point *Ptr1=new Point;
delete Ptr1;
cout<<
Ptr1=new Point(1,2);
delete Ptr1;
}
4.程序四(本题8分)
#include
class BaseA1
{
public:
BaseA1(int i)
{
cout<<
x1=i;
}

void print()
{
cout<<
}
protected:
int x1;
};
class BaseA2
{
public:
BaseA2(int j)
{
cout<<
x2=j;
}

void print()
{
cout<<
}
protected:
int x2;
};
class BaseA3
{
public:
BaseA3()
第 6 页 共 10 页


{
cout<<
}

void print()
{
cout<<
}
};
class MDerivedB: public BaseA2, public BaseA1, public BaseA3
{
public:
MDerivedB(int a, int b, int c, int d):BaseA1(a),A2(d),
A1(c),BaseA2(b){}
void print()
{
BaseA1::print();
BaseA2::print();
BaseA3::print();
}
private:
BaseA1 A1;
BaseA2 A2;
BaseA3 A3;
};
void main()
{
MDerivedB obj(1,2,3,4);
();
}
5.程序五(本题6分)
#include
const double PI=3.14159;
class Shapes
{
protected:
int sidevalue1,sidevalue2,high;
public:
void setvalue(int x,int y=0,int h=0)
{
sidevalue1=x;
sidevalue2=y;
high=h;
}
virtual void CalculateArea()=0;
};

第 7 页 共 10 页


class Square:public Shapes
{
public:
virtual void CalculateArea()
{
cout<<
}
};

class Rectangle:public Shapes
{
public:
virtual void CalculateArea()
{
cout<<
}
};

class Circle:public Shapes
{
public:
virtual void CalculateArea()
{
cout<<
}
};
class LadderShape:public Shapes
{
public:
virtual void CalculateArea()
{
cout<<
laddershaper:
}
};

void main()
{
Shapes* pointer[4];
Square s1;
Rectangle r1;
Circle c1;
LadderShape l1;
pointer[0]=&s1;
pointer[0]->setvalue(10);
pointer[0]->CalculateArea();
pointer[1]=&r1;
第 8 页 共 10 页


pointer[1]->setvalue(10,5);
pointer[1]->CalculateArea();
pointer[2]=&c1;
pointer[2]->setvalue(10);
pointer[2]->CalculateArea();
pointer[3]=&l1;
pointer[3]->setvalue(10,12,8);
pointer[3]->CalculateArea();
}
五、程序设计题(本大题共2小题,总计20分)
1、定义一个Score类,Score中 有CourseScore私有成员用于表示学生成绩,有SetScore成员函数用
于设定学生成绩 ,有PrintScore成员函数用于在控制台上输出成绩。在主函数中定义两个Score类的
对象 stu1、stu2,其成绩分别为85和98,并输出这两个学生的成绩。(8分)
2、定义一个点 类Point,其私有数据包含点的平面坐标x、y,利用有参构造函数实现对象坐标的确
定。编写一友 元函数Distance计算任意两点的距离。在主函数中定义两个点P1、P2,坐标分别为(0,0)
和(10,20),计算并输出这两个点的距离(12分)
#include
class Score
{
private:
double CourseScore;
public:
void SetScore(double s);
void PrintScore();
};
void Score::SetScore(double s)
{
CourseScore=s;
}
void Score::PrintScore()
{
cout<<”The Student’s Score is:”<}
void main()
{
Score stu1,stu2;
re(85);
re(98);
core();
core();





#include
#include
第 9 页 共 10 页


class Point
{
public:
Point(double x1,double y1)
{
x=x1;
y=y1;
}
friend double Distance(Point &p1,Point &p2); 友元函数的声明
private:
double x,y;
};
double Distance(Point &p1,Point &p2) 普通函数作为友元函数
{
double deltax,deltay;
deltax=p1.x-p2.x; 访问私有成员
deltay=p1.y-p2.y; 访问私有成员
return sqrt(deltax*deltax+deltay*deltay);
}

void main()
{
Point p1(0,0);
Point p2(10,20);
cout<<以上两给定点之间的距离是:

第 10 页 共 10 页

shouchaobao-棋王读后感


河北民族师范学院-春节见闻


新税法-抗日英雄事迹


我会飞-浙江省自主招生网


山东理科状元-期中考试反思


抗洪英雄-自我简介


圣诞老人图片-童年趣事作文800字


韩国留学生伤不起-小学入学年龄