自考C++程序设计2018年10月试题及答案解析
-
设计一个圆类circle和一个桌子类table。circle类包含私有数据成员radius和求圆面积的成员函数getarea( );table类包含私有数据成员height和返回高度的成员函数getheight( )。roundtable类继承所有上述类的数据成员和成员函数,添加了私有数据成员color和相应的成员函数。其中,main函数已给出。请完成程序的其他部分。
void main( ){roundtable rt(0.8,1.2,"黑色");
cout﹤"圆桌属性数据"﹤endl;cout﹤﹤"高度:"﹤﹤rt.getheight( )﹤"米"﹤﹤endl;
cout﹤"面积:"﹤﹤tr. geared( )﹤"平方米"﹤﹤endl;
cout﹤﹤"颜色"﹤﹤rt. getcolor( )﹤﹤endl;}
-
#include ﹤iostream.h﹥
using namespace std;
class Sample
{
protected:
int x;
public:
Sample( )
{
x=0;
}
Sample(int val)
{
x=val;
}
void operator++( )
{
x++;
}
};
class Derived:
public Sample
{
int y;
public:
Derived( ):
Sample( )
{
y=0;
}
Derived ( int val1, int val2):
Sample(val1 )
{
y=val2;
}
void operator--( )
{
x--; y--;
}
void disp( )
{
cout﹤﹤"x="﹤﹤x﹤﹤",y="﹤﹤y﹤﹤ endl;
}
};
void main( )
{
Derived d(3, 5);
D. disp( );d++;
D. disp( );d--;d--;
D. disp( );
}
-
#include ﹤iostream﹥
using namespace std;
void Result(char ch)
{
switch(ch)
{
case 'A':
case 'a':
cout ﹤﹤"well!";
break;
case 'B':
case 'b':
cout ﹤﹤"good!";
break;
case 'C':
case 'c':
cout ﹤﹤"pass!";
break;
default:
cout ﹤﹤"bad!"; break;
}
}
void main( )
{
char a1='b', a2='C', a3='f';
cout ﹤﹤"Results:"﹤ endl;
Result(a1);
Result(a2 );
Result(a3);
Result('A');
}
-
#include ﹤iostream.h﹥
class Point
{
int X,Y;
public:
Point(int x=0, int y=0)
{
X=x; Y=y; Countp ++;
}
Point( point &p)
{
X=p. X; Y=p.Y;
}
~Point( )
{
Countp--;
}
_____________;
static int Countp;void display( )
{
cout ﹤﹤X﹤﹤", "﹤﹤Y﹤﹤", ";
}
};
Point myfun( Point p1, Point p2, Point p3)
{
Point tmp(p1. X+p2. X+P3. X, p1. Y+p2.Y+p3. Y);
return tmp;
}
int Point:: Countp =0;
void main( )
{
Point pp,p1(1,2),p2(1);
Point p=myfun(pp0, pp1, pp2);
p. display ( );
_____________; //输出Countp的值
}
-
完成程序,使其结果为x=6,y=10x=11,y=10
#include ﹤iostream.h﹥
using namespace std;
class Sample
{
private:int x;
_____________;
public:
Sample (int a);
void print( );
};
Sample:
Sample( _____________ )
{
x=a; y=x++;
}
void Sample:: print( )
{
cout ﹤﹤"x="﹤﹤x﹤﹤",y="﹤﹤y﹤﹤end;
}
int Sample: : y =25;
void main( )
{
Sample s1(5);
Sample s2(10);
s1. print( );
s2. print( );
}
-
完成程序,使其输出结果为79
#include ﹤iostream. h﹥
using namespace std;
int main( )
{
int a[6]={23,15,64,33,40,58
};
_____________;
s1=s2=a[0];
for(int *p=a+1;
p﹤a+6; p++)
{
if(s1﹥*p) s1=*p;
if _____________;
}
cout ﹤﹤s1 +s2 ﹤﹤endl;
return 0;
}
-
#include ﹤iostream. h﹥
using namespace std;
_____________;
_____________;
{
T tmp =x*x+y*y+x*y;return tmp;
}
int main( )
{
int x1=1, y1 =4;
float x2=1.1, y2=2.2;
double x3=2.0, y3=3.1;
cout﹤﹤fun(x1, y1)﹤﹤endl;
cout ﹤﹤fun(x2, y2)﹤﹤endl;
cout ﹤﹤fun(x3, y3)﹤﹤ endl;
return 0;
}
-
把从键盘上输入的一批整数(以-1作为终止输入的标志)保存到文本文件“a:xxk1.dat”中。
#include ﹤iostream﹥
#include ﹤fstream.h﹥
#include ﹤stdlib. h﹥
void main( )
{
ofstream fout("a: xxk1.dat");
if( _____________ )
{
cout﹤﹤"文件没有打开!"﹤﹤end;
exit(1);
}
int x;cin﹥﹥x;
while(x! =-1)
{
fout ﹤﹤x﹤﹤' ';
cin ﹥﹥x;
}
_____________; //关闭文件
}
-
申请一个长度为10的int型空间,之后释放该空间。
#include ﹤iostream. h﹥
using namespace std;
int main( )
{
int *p=new int[ 10];
delete p;
return 0;
}
-
#include ﹤iostream. h﹥
using namespace std;
class A
{
int x, y;public:void set(int a, int b)
{
x=a; y=b;
}
int getx( )
{
return x;
}
int gety( )
{
return y;
}
int sum( )
{
return x+y;
}
};int main( )
{
A a;a. set(3, 4);
cout﹤﹤a.x﹤﹤a.y﹤﹤ a.sum( )﹤﹤ endl;
return 0;
}
-
#include ﹤iostream.h﹥
using namespace std;
void setzero(int &a)
{
a=0;
}
int main( )
{
int x1=10;setzero(&x1);
cout ﹤﹤x1﹤﹤ endl;
return 0;
}
-
改正后程序输出结果为2 5 8 11 14
#include ﹤iostream. h﹥
using namespace std;
void main( )
{
int i=1;
while(i﹤=15)
{
i++;if(i%3==2) continue;
else cout ﹤﹤1﹤﹤" ";
}
}
-
#include ﹤iostream. h﹥
using namespace std;
class Point
{
public:void init( ) {
}
static void output( ) {
}
};
void main( )
{
Point P;
Point:: init( );
P. output( );
}
-
拷贝构造函数使_________作为参数初始化创建中的对象。
-
假如一个类的名称为F,使用这个类的一个对象初始化该类的另一个对象时,可以调用_________构造函数来完成此功能。
-
用new申请某一个类的动态对象数组时,在该类中必须能够匹配到没有形参的或缺省参数的_________,否则应用程序会产生一个编译错误。
-
C++中解决命名冲突的机制是_________。
-
C++类中构造函数的个数最多是无限个,析构函数的个数最多是_________个。
-
C++中一般的程序都要有两条语句,包含头文件“#include ﹤iostream﹥”语句和使用命名空间“_________”语句。
-
C++的静态数据成员需要在_________进行初始化,可以被该类的所有对象共享。
-
描述命题“A小于8或小于C”的表达式为_________。
-
C++中字符串"a+b=12\n\t"的长度为_________。
-
不同对象可以调用相同名称的函数,但执行完全不同行为的现象称为_________。
-
假设类F的对象f是类A的成员对象,则“A a”语句执行时,先调用类_________的构造函数。
-
设"int a=3,b=4,C=5;",表达式“(a+b)﹥c&&b==c”的值是_________。
-
C++中定义重载函数时,应至少使重载函数的参数个数或_________不同。
-
假定x=15,则表达式X﹤=10?20:30的值为_________。
-
Windows环境下,由C++源程序文件编译而成的目标文件的扩展名是_________。
-
C++中字符串是通过字符数组来表示的,每一个字符串都有一个结尾字符_________。
-
具有至少一个纯虚函数的类是_________。
-
当一个成员函数被调用时,该成员函数的_________指向调用它的对象。
-
在_________继承的情况下,基类数据成员在派生类中的访问权限保持不变。
-
有关函数模板和模板函数说法错误的是( )
- A.函数模板只是对函数的描述,编译器不为其产生任何执行代码,所以它不是一个实实在在的函数
- B.模板函数是实实在在的函数,它由编译系统在遇到具体函数调用时所生成,并调用执行
- C.函数模板需要实例化为模板函数后才能执行
- D.当函数模板和一般函数同名时,系统先去匹配函数模板,将其实例化后进行调用
-
对类的构造函数和析构函数描述正确的是( )
- A.构造函数可以重载,析构函数不能重载
- B.构造函数不能重载,析构函数可以重载
- C.构造函数可以重载,析构函数也可以重载
- D.构造函数不能重载,析构函数也不能重载
-
将int类型指针p转换为char类型指针,则强制转换语句为_________。
-
下列关于运算符重载的叙述中,正确的是( )
- A.通过运算符重载,可以定义新的运算符
- B.有的运算符只能作为成员函数重载
- C.若重载运算符+,则相应的运算符函数名是+
- D.重载一个二元运算符时,必须声明两个形参
-
当使用ofstream流类定义一个流对象并打开一个磁盘文件时,文件的隐含打开方式为( )
- A.ios::out | ios::binary
- B.ios::in | ios::binary
- C.ios::out
- D.ios::in
-
假定A为一个类,则执行“A a[3], b(3);”语句时调用该类构造函数的次数为( )
- A.3
- B.4
- C.5
- D.9
-
C++中定义标准输入输出的库为( )
- A.stdio
- B.math
- C.iostream
- D.stdlib
-
允许用户为类定义一种模式,使得类中的某些数据成员及某些成员函数的返函值能取任意类型,这是一个( )
- A.类模板
- B.模板类
- C.函数模板
- D.模板函数
-
如果有int型变量a,则定义指向变量a的指针p正确的写法是( )
- A.int p=&a
- B.int * P=&a
- C.int&p=*a
- D.int*p = a
-
假定指针变量P定义为“int *P=new int(100);”,要释放P所指向的动态内存,应使用语句( )
- A.delete p;
- B.delete* p;
- C.delete&p;
- D.delete[ ]p;
-
下列对派生类的描述中,错误的是( )
- A.一个派生类可以作为另一个派生类的基类
- B.派生类至少有一个基类
- C.派生类的成员除了它自己的成员外,还包含了它的基类的成员
- D.派生类中继承的基类成员的访问权限到派生类保持不变
-
下列函数原型声明语句中,错误的是( )
- A.int f(void);
- B.void f(hat);
- C.int f(a);
- D.void f(double a);
-
下列对静态成员的描述中,不正确的是( )
- A.静态成员不属于对象,是类的共享成员
- B.静态数据成员要在类外定义和初始化
- C.调用静态成员函数时要通过类或对象激活,所以静态成员函数拥有this指针
- D.非静态成员函数也可以操作静态数据成员
-
C++中要实现动态联编,调用虚函数时必须使用( )
- A.基类指针
- B.类名
- C.派生类指针
- D.对象名
-
以下类模板定义正确的为( )
- A.template﹤class T﹥
- B.template﹤class T, class int i﹥
- C.template﹤class T, typename T﹥
- D.template﹤class T1,T2﹥
-
下列虚基类的声明中,正确的是( )
- A.class virtual B:public A
- B.class B:virtual public A
- C.class B:public A virtual
- D.virtual class B:public A
-
下列哪个类型函数不适合声明为内联函数( )
- A.函数体语句较多
- B.函数体语句较少
- C.函数执行时间较短
- D.函数被频繁调用
-
以下说法中正确的是( )
- A.C++程序总是从第一个定义的函数开始执行
- B.C++程序总是从main函数开始执行
- C.C++中函数必须有返回值
- D.C++中函数名必须唯一
-
设x和y均为bool量,则x&&y为真的条件是( )
- A.它们均为真
- B.其中一个为真
- C.它们均为假
- D.其中一个为假
-
拷贝构造函数应该是( )
- A.不带参数的构造函数
- B.带有一个参数的构造函数
- C.带有两个参数的构造函数
- D.缺省构造函数
-
若有以下类型标识符定义:char c='c'; int a=4; float f=3.14; double d=1.212; 则表达式C+a/(int)d+f的结果类型是( )
- A.float
- B.char
- C.int
- D.double