自考C++程序设计模拟试题及答案(八)
-
已定义一个Shape抽象类,在此基础上派生出矩形Rectangle和圆形Circle类,二者都有GetPerim()函数计算对象的周长,并编写测试main()函数。
#include
using namespace std;
class Shape
{public:
Shape(){ }
~Shape(){ }
virtual float GetPerim()=0;
};
-
给出下面程序的输出结果。
#include
#include
#include
bool fun(long n);
void main()
{long a=10,b=30,1=0;
if(a%2=0)a++;
for(long m=a;m<=b;m+=2)
if(fun(m))
{if(1++%10=0)
cout<
cout<
}
}
bool fun(long n)
{int sqrtm=(int)sqrt(n);
for(int=2;i<=sqrtm; i++)
if(n%i==0)
retur false;
return true;
}
-
运行程序,写出程序执行的结果。
#include
void main()
{int a,b;
char ch;
cin>>a>>ch>>b;//从键盘上输入1.5 c 10
}
-
在下面程序横线处填上适当内容,使程序执行结果为:200_ _100
#include
template
T f(____________)
{if(____________)
return x+y;
else
return x*y;
}
void main()
{cout<
-
在下面程序横线处填上适当内容,使程序执行结果为:Y=1,Y=3,Z=5
#include
class B
{private:
int Y
public:
B(inty=0){Y=y;}
void print(){cout<"Y="<
};
class D:public B
{private:
B b;
int Z;
public:
D(int x,int y,int z):B(x),b(y){Z=z;}
void print()
{________;//打印基类B中的成员Y
________;//打印类成员b中的Y值
cout<<"Z="<
}
};
void main()
{D d(1,3,5);
D.print();
}
-
#include
class A
{private:
int X,Y;
public:
A(){X=Y=0;}
A(int xx,int yy):X(xx),Y(yy){}
A(A&a){________;}
int GetX(){return X;}
int GetY(){return Y;}
void SetXY(int x,int y){X=x,Y=y;}
};
void main()
{A*Ptr=newA[2];
Ptr[0].SetXY(5,10);
Ptr[1].SetXY(15,20);
cout<<"Release Ptr......"<
________;//释放动态分配内存
}
-
完成下面类中构造函数的定义。
#include
class A
{private:
int y;
int x;
public:
A(int,int);
A(const A&);
void show()
{cout<<"x="<
}
};
A::A(int i;int j):_________
{}
A::A (_________)
{x=t.x;y=t.y}
void main()
{A a1(3,5);
a1.show();
A a2(a1);
a2.show();
}
-
#include
int fun1(int);
void main()
{int i=12;
____________
____________
cout<<"fun1:"<<(*fp)(i)<
}
int funl(int k)
{k=k*2+1;
return k;
}
-
#include
class Aton
{int X,Y;
protected:
int zx,zy;
public:
void init(int i,int j){zx=i;zy=j;
Aton(int i,int j,int=0,int m=0)
(X=i, Y =j,zx=m, zy=n;}
};
void main()
Aton(25,20,3,5);
A.init(5,9);
cout<
-
#include
class X
{public:
int x;
public:
X(int x)
{cout<
x=x< X(X& t)
{x=t.x;
{cout<
void fun(X);
};
void fun(X t)
void main()
{fun(X(10));}
-
#include
class Bas
{public:
~Bas(){cout<<"Bas construct"<
virtual void f()=0;
};
class Dev:public Bas
{public:
~Dev(){cout<<"Bas construct"<
virtual void f(){cout<<"dev::f"<
};
void main()
{Bas*a=new Bas();
Dev p;
a=&p
a->f();
}
-
#include
classA
{public:
virtual~A(){}
virtual void f()
{cout<<"A::f()"<
virtual void g()
{cout<<"A::g()"<
};
class B:public A
{public:
virtual void g()
{cout<<"B::g()"<
virtual void k()
{cout<<"B::k()"<
};
void main()
{A*p=new B;
p->f();
p->g()
p->k();
delete p;
}
-
#include
template
class A
{private:
T x,y,s;
public:
A(T a,T b)
{x=a,y=b,s=x+y;}
void show()
{cout<<"x+y ="<
};
void main()
{A add(10,100);
add.show();
}
-
面向对象的四个基本特性是多态性、继承、_________和封装。
-
如果要把类B的成员函数void fun()说明为类A的友元函数,则应在类A中加入语句__________。
-
运算符的重载函数必须使用_______关键字。
-
局部对象和全局对象中在同一程序中_______生存期最长。
-
对象的成员函数可以通过_________指针访问对象自身。
-
类的定义以class开始,以_______结束。
-
声明一个常成员函数Fun,其返回类型为char,第一个参数类型为int,第二个参数类型为double,函数Fun的声明原型_________。
-
运算符“+”允许重载为类的成员函数,或者非成员函数。若用 operator+(c1,c2)这样的表达式来使用运算符“+”,应将“+”重载为________函数。
-
C++中istream的直接基类是_________。
-
定义类的动态对象数组时,系统只能够自动调用该类的_________构造函数对其进行初始化。
-
C++语言中可以实现输出一个换行符并刷新流功能的操控符是_________。
-
C++语言支持的两种多态性分别是编译时的多态性和_________的多态性。
-
在派生类中重新定义虚函数时必须在________参数上和基类保持一致。
-
C++中语句const char*const p=”hello”;所定义的指针p和它所指的内容都不能被_________。
-
如果使用数组名作为函数参数,形实结合时,传递的是________。
-
假设类X的对象x是类Y的成员对象,“b”语句执行时,先调用类_________的构造函数。
-
友元函数可以存取类的私有成员、公有成员和________。
-
________是istream类的对象,用于处理标准输入,即键盘输入。
-
C++是通过引用运算符_________来定义一个引用的。
-
有int a=1,b=2;则表达式a+++--b的值为_________。
-
下列说法中正确的是()
- A.类定义中只能说明成员函数的函数头,不能定义函数体
- B.类中的成员函数可以在类体中定义,也可以在类体之外定义
- C.类中的成员函数在类体之外定义时必须要与类声明在同一文件中
- D.在类体之外定义的成员函数不能操作该类的私有数据成员
-
对class Base,如使用Base*pt=new Base[2];建对象数组,则删除此数组使用的语句是()
- A.delete pt[2];
- B.delete pt[ ]
- C.delete [ ]pt;
- D.delete [2]pt;
-
如果一个类至少有一个纯虚函数,那么就称该类为()
- A.抽象类
- B.虚基类
- C.派生类
- D.以上都不对
-
下列有关设置函数参数值的描述中,正确的是()
- A.设置了默认值的参数右边允许出现没有指定默认值的参数
- B.参数默认值的设置顺序从参数表的左端开始
- C.参数默认值要设置在定义语句中,不能设置在声明语句中
- D.参数默认值可以是数值也可以是表达式
-
函数int sum(int a=1,int b=1,int c=3);可与下列哪个函数同时声明()
- A.double sum(int);
- B.char sum(int,int);
- C.int sum(double);
- D.int sum(int,int,int);
-
若有以下定义,int a=100,*p=&a;则说法错误的是()
- A.声明变量p,其中*表示p是一个指针变量
- B.变量p经初始化,获得变量a的地址
- C.变量p只可以指向一个整型变量
- D.变量p的值为100
-
一个类拥有多个构造函数,则这些构造函数间为()
- A.重载关系
- B.重复关系
- C.拷贝关系
- D.无关系
-
C++中是否允许在类结构中定义函数()
- A.不允许
- B.允许
- C.仅允许定义构造函数
- D.只不允许定义构造函数
-
在类定义中private,protected,public关键词出现的次数为()
- A.任意多次
- B.至多一次
- C.public至少出现一次
- D.至少一次
-
设函数void subone(in&)将形参减1,如有整型变量int k=10,则执行subone(k);后,k的值为()
- A.9
- B.10
- C.11
- D.未知
-
已定义了一个类A并有语句A*pa=new A(5);,那么下列说法正确的是()
- A.该语句会创建A类的一个对象,并将此对象的地址赋给指针pa
- B.该语句会创建A类的5个对象,且它们的地址是连续的
- C.当指针变量pa超出其作用域时,pa和为对象分配的空间都将被自动释放
- D.类A中一定有一个显式定义的构造函数和一个显式定义的虚析构函数
-
C++的合法注释是()
- A./*This is a C program/*
- B.//This is a C program
- C."This is a C program"
- D.//This is a C program//
-
下列不具有访问权限属性的是()
- A.非类成员
- B.类成员
- C.数据成员
- D.成员函数
-
下列运算符中,在C++语言中不能重载的是()
- A.*
- B.>=
- C.::
- D./
-
下面对静态成员的描述中,正确的是()
- A.静态数据成员可以在类体内进行初始化
- B.静态数据成员不可以被类的对象调用
- C.静态数据成员不受private控制符限制
- D.静态数据成员可以直接用类名调用
-
下列叙述中,错误的是()
- A.bad()函数功能表示如果进行非法操作,回true,否则返回false
- B.ios_base::in打开文件用于输入(输入流的打开模式)
- C.ios_base::ate打开一个已有的输入或输出文件并查找到文件尾
- D.ios_base::out打开文件进行读操作
-
关于多重继承二义性的描述,错误的是()
- A.派生类的多个基类中存在同名成员时,派生类对这个成员访问可能出现二义性
- B.一个派生类是从具有共同的间接基类的两个基类派生来的派生类对该公共基类的访问可能出现二义性
- C.解决二义性最常用的方法是作用域分辨运算符对成员进行限定
- D.派生类和它的基类中出现同名函数时,将可能出现二义性
-
假定AB为一个类,则执行“AB a(2),b[3],*p[4];”语句时调用该类构造函数的次数为()
- A.3
- B.4
- C.5
- D.9
-
C++中分配动态存储空间,使用的关键字为
- A.free
- B.create
- C.delete
- D.new
-
在下列成对的表达式中,运算结果类型相同的一对是()
- A.7.0/2.0和7.0/2
- B.5/2.0和5/2
- C.7.0/2和7/2
- D.8/2和6.0/2.0