自考C++程序设计2016年10月试题及答案解析
-
有一个Person类,私有数据成员name、age和sex分别表示人的姓名、年龄和性别。雇员类Employee是Person的派生类,新增数据成员部门department和薪水salary。请用C++代码描述这两个类,并用Employee类的成员函数Display实现雇员的姓名、年龄、性别、部门和薪水的输出。(要求编写派生类的构造函数)
-
给出下面程序的输出结果
#include ﹤iostream﹥
using namespace std;
void main( )
{
void sort( int s[ ]);
int score[5];
int i;
for(i=0;i﹤5;i++)
score[i]=i;
sort( score);
cout﹤﹤"运行结果是:";
for(i=0;i﹤5;i++)
cout﹤﹤score[i]﹤﹤" ";
}
void sort int s[ ])
{
int t;
for(int i=0; i﹤4; i++)
for (int j=i+1; j﹤5; j++)
if(s[i]﹤s[j])
{
t=s[i];s[i]=s[j];s[j]=t;
}
}
-
给出下面程序的输出结果
#include ﹤iostream﹥
using namespace std;
class Clock{
public:
Clock( )
{
cout﹤﹤"clock的构造函数"﹤﹤endl;
}
~Clock( )
{
cout﹤﹤" clock的析构函数﹤﹤endl;
}
};
class Date
{
public:
Date( )
{
cout﹤﹤"Date的构造函数"﹤﹤endl;
}
~Date( )
{
cout﹤﹤"Date的析构函数"﹤﹤endl;
}
};
void main( )
{
Clock c;
Date d;
}
-
一个通讯录contacts有姓名name和电话tel两个属性,有三个成员函数searehN、insertN和deleteN分别完成查找、插入和删除功能,请完成contacts的类图。
-
类book,含有2个数据成员num编号和price价格,有成员函数set和display分别输入和显示书的编号和价格,在main中调用所有成员函数。
#include ﹤ iostream﹥
using namespace std;
class book
{
private:char num[8];
public:
void set( )
{
cin﹥﹥mum﹥﹥price;
}
void display( )
{
cout﹤﹤ num﹤﹤" "﹤﹤ price﹤﹤ endl;
}
};
void main( )
{
book b;________;
b. display( );
}
-
完成程序空白处,可参考以下运行结果:
4!=24
n=-2!
不能计算n!
程序执行结束
#include ﹤iostream. h﹥
int f(int n)
{
if(n﹤=0) throw n;
int s=1;
for( ________ )
s *=i; //计算1*2*3…*n的值retum s;
}
void main( )
{
try
{
cout﹤﹤________﹤﹤endl;
cout﹤﹤"-2!="﹤﹤f(-2)﹤﹤endl;
}
catch(int n)
{
cout﹤﹤"n="﹤﹤n﹤﹤"不能计算n!"﹤﹤endl;
catch(...) { cout﹤﹤"出现异常!"﹤﹤endl;
}
cout﹤﹤"程序执行结束"﹤﹤endl;
}
-
程序用于在屏幕上显示指定的文本文件的内容。
#include ﹤iostream﹥
#include ﹤fstream﹥
using namespace std;
int main( )
{
ifstream ifile;
char fn[ 20], ch;
cout﹤﹤"输入文件名";cin﹥﹥fn;
________; //打开指定的文件
if(! ifile)
{
cout﹤﹤fn﹤﹤"文件不能打开"﹤﹤endl;
retum 0;
}
while((ch = ifile. get())!=EOF)________; //输出字符
cout﹤﹤ endl;
ifile. close(); //关闭文件
return 1;
}
-
#include ﹤iostream﹥
using namespace std;
________ PI=3.1415;
double length( float r) //圆的周长
{
return 2*PI*r;
}
________ //矩形的周长{return 2*(x+y);
}
void main( )
{
float a =2, b=3, r=4;
cout﹤﹤"圆周长"﹤﹤ length(r)﹤﹤endl;
cout﹤﹤"矩形周长"﹤﹤ length(a,b)﹤﹤endl;
}
-
#include ﹤iostream. h﹥
template ﹤typename AT﹥
AT max(AT x, AT y)
{
retum(x﹥y)? x:y;void main( )
{
int i1=10, i2=56;
double d1=50.344, d2=56.346;
char c1='k', c2='n';
cout﹤﹤"较大的整数是:"﹤﹤max(i1, i2)﹤﹤endl;cout﹤﹤"较大的双精度型数是:"﹤﹤max(d1, a);
cout﹤﹤ endl;
cout﹤﹤"较大的字符是:"﹤﹤max(c1, c2)﹤﹤endl;
}
-
#include ﹤iostream﹥
#include ﹤string﹥
using namespace std;
int change( string s)
{
s=s+"dog!";
cout﹤﹤ s﹤﹤ endl;
}
void main( )
{
string str("it is a ");
change(str);
}
-
#include ﹤iostream﹥
using namespace std;
class Test {
public:
static int x;
};
int x=70;
void main( )
{
cout﹤﹤Test:: x;
}
-
#include ﹤iostream. h﹥
void swap( int &a, int &b)
{
a=a+b;
b=a-b;
a=a-b;
}
void main( )
{
int a =5,b=3;
cout﹤﹤"a="﹤﹤a﹤﹤",b="﹤﹤b﹤﹤endl;
swap(&a, &b);
cout﹤﹤"a="﹤﹤a﹤﹤"b="﹤﹤b﹤﹤ endl;
}
-
运算符重载需要使用关键字“________”。
-
#include ﹤iostream﹥
using namespace std;
template ﹤T﹥
T max(T x, T y)
{
if(x﹥=y) return x;
else retum y;
}
void main( )
{
cout﹤﹤ max(6.07, 9.08)﹤﹤ endl;cout﹤﹤ max(20, 50) ﹤﹤ endl;
}
-
说明纯虚函数的一般形式为“class类名{ ________函数类型函数名(参数列表)=0; };”。
-
对MyFirst类定义析构函数是_________。
-
insert(iterator it, const T&)是向it所指向量位置前_______一个对象。
-
使用关键字const修饰的数据成员称为________数据成员。
-
________是类的实例。
-
关键字private、public和________以后的成员分别叫做私有成员、公有成员和保护成员。
-
C++函数的返回值类型可以是除________和函数以外的任何类型。
-
函数重载可使一个函数名具有多种功能,称这种特性为________。
-
将对象作为函数参数,是将实参对象的值传递给________。
-
使用关键字inline说明的函数称为________函数。
-
类对象一般都包括数据成员和________。
-
面向对象的程序设计方法是以________代表求解问题的中心环节。
-
对象的________只能由这个对象的操作来存取。
-
动态分配内存使用关键字________,释放内存使用关键字delete。
-
表达式“20/3*sqrt(4.0)/5”值的数据类型是________。
-
所谓“________”就是将一个新标识符和一块已经存在的存储区域相关联。
-
C++程序有且只能有一个名为________的主函数。
-
语句“________;”用来向屏幕输出显示信息“Hello!”。
-
C++注释方式“//”的有效范围从“//”至________结束。
-
下列对派生类的描述中,错误的是( )
- A.派生类至少应有一个基类
- B.派生类的成员除了自己定义的成员外,还包含了它的基类成员
- C.基类中成员访问权限继承到派生类中都保持不变
- D.一个派生类可以作为另一个派生类的基类
-
C++类体系中,不能被派生类继承的有( )
- A.静态数据成员
- B.构造函数
- C.虚函数
- D.静态成员函数
-
用运算符delete删除—个动态对象时( )
- A.首先为该动态对象调用构造函数,再释放其占用的内存
- B.首先释放该动态对象占用的内存,再为其调用构造函数
- C.首先为该动态对象调用析构函数,荐释放其占用的内存
- D.首先释放该动态对象占用的内存,再为其调用析构函数
-
下列字符常量的写法中,错误的是( )
- A.'\t'
- B."b"
- C.'*'
- D.'a'
-
动态编联所支持的多态性称为运行时的多态性,支持的函数是( )
- A.构造函数
- B.友元函数
- C.继承
- D.虚函数
-
类模板template ﹤class T﹥classX{…};,其中友元函数f对特定类型T(如int),使函数f(X ﹤int﹥&)成为X﹤int﹥模板类的友元,则其说明应为( )
- A.friend void f( );
- B.friend void f(X﹤T﹥&);
- C.friend void A::f( );
- D.friend void C(T);
-
假设声明了以下的函数模板,错误的调用语句是( )template ﹤class T﹥T max(T x, T y) { return (x﹥y)?x:y; }并定义了int i; char c;
- A.max(i,i)
- B.max(c,c)
- C.max((int)c,i)
- D.max(i,c)
-
若有说明:int n=2, *P=&n, *q=p;,则以下非法的赋值语句是( )
- A.n=*q
- B.p=n
- C.p=q
- D.*q=*p
-
进行文件操作时需要包含头文件( )
- A.iostream
- B.fstream
- C.stdio
- D.stdlib
-
在编译指令中,宏定义使用指令( )
- A.#define
- B.#include
- C.#typedef
- D.#friend
-
下面说法正确的是( )
- A.生成对象时调用析构函数
- B.定义类时必须写出该类的构造函数
- C.调用构造函数时必须在主函数中明确写出调用格式
- D.析构函数不可以重载
-
下列哪个函数不是类的成员函数( )
- A.构造函数
- B.析构函数
- C.友元函数
- D.拷贝构造函数
-
下列有关重载函数的说法中错误的是( )
- A.重载函数必须具有不同的返回值类型
- B.重载函数名必须相同
- C.重载丞数参数个数可以不同
- D.重载函数必须有不同的形参列表
-
下列关于纯虚函数与抽象类的描述中,错误的是( )
- A.纯虚函数是一种特殊的函数,它允许没有具体的实现
- B.抽象类是指具有纯虚函数的类
- C.一个基类的说明中有纯虚函数,该基类的派生类一定不再是抽象类
- D.抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出
-
cout是C++的( )
- A.关键字
- B.对象
- C.类
- D.运算符
-
如果A是抽象类,则下面正确的是( )
- A.A中没有纯虚函数
- B.A a;
- C.A a[3];
- D.A *pa;
-
在下面有关析构函数特征的描述中,正确的是( )
- A.一个类中可以定义多个析构函数
- B.析构函数名与类名完全相同
- C.析构函数不能指定返回类型
- D.析构函数可以有一个或多个参数
-
派生类的对象对它的哪一类基类成员是可以访问的( )
- A.公有继承的基类的公有成员
- B.公有继承的基类的保护成员
- C.公有继承的基类的私有成员
- D.保护继承的基类的公有成员
-
假定有类AB,有相应的构造函数定义,能正确执行“AB a(4), b(5), c[3], *p[2]={&a, &b};”语句,请问执行完此语句后共调用该类析构函数的次数为( )
- A.14
- B.5
- C.3
- D.1
-
一个函数的功能不太复杂,但要求被频繁调用,选用最适合的是( )
- A.内联函数
- B.重载函数
- C.递归函数
- D.嵌套函数