自考C++程序设计2010年10月试题及答案解析
-
定义队列类模板queue(先进先出),队列的大小由使用者确定。要求该类模板对外提供如下二种基本操作:(1)inser(入队列)(2)front(出队列),用数组来实现
#include ﹤ iostream ﹥
using namespace std;
template ﹤ class T, int size ﹥
class queue {
T x [ size ] ;
int current, front, rear;
public:
queue ( ) { current = 0; front = 0; rear = 0;}
....insert(....);
....front(....);
};
请写出两个函数的过程(如果需要形式参数,请给出形参类型和数量,以及返回值类型)
-
给出下面程序的输出结果
#include ﹤ iostream ﹥
using namespace std;
template ﹤ class T ﹥
T F(T x)
{
return x ﹥ 5;
}
void main( )
{
int a = 15;
cout ﹤﹤ F(a) ﹤﹤"\n";
double b = - 5.8976;
cout ﹤﹤ F(b) ﹤﹤" \n";
cout ﹤﹤ F(5) ﹤﹤" \n";
}
-
给出下面程序的输出结果
#include ﹤ iostream ﹥
using namespace std;
class A
{
private: int X, Y;
public: A ( int myx, int myy) { X = myx; Y = myy ;}
void show ( ) { cout ﹤﹤ "X =" ﹤﹤ X ﹤﹤ " Y = " ﹤﹤ Y ﹤﹤ endl;}
};
class B : public A
{
private : int H, W;
public: B( int myx,int myy,int myh,int myw): A( myx, myy)[H=myh;W=myw;}
void show ( ) { cout ﹤﹤ "H = " ﹤﹤ H ﹤﹤ " ; W = " ﹤﹤ W ﹤﹤ endl; }
};
void main( )
{
B d(1,2,3,4) ;
d. show ( ) ;
}
-
下列程序将x,y,z按从小到大的顺序排列并将结果返回给实参,在横线处填入正确的内容。template ﹤ class T ﹥
void order(_________)
{
_________;
if(x ﹥y) {a =x;x =y;y =a;}
if(y ﹥z) {a =y;y =z;z =a;}
if(x ﹥y) {a =x;x =y;y =a;}
}
-
在下面程序的下划线处填上正确的语句。
#include ﹤ iostream ﹥
using namespace std;
template ﹤ class T ﹥
T f( T&a, T&b, int n)
{
for (int i=0;i ﹤n;i ++ )
a[i] =a[i] +b[i];
return a ;
}
void main( )
{
int a[5] ={1,2,3,4,5};
int b[5] = { 100,200,3,4,51 , * p;
for(int i =0; i ﹤2; i ++)p=_________ //调用函数f
for( ; p ﹤a +5; p ++ )
cout﹤﹤_________﹤﹤endl;
}
-
完成下面程序中的show函数的定义,使其运行结果如下:In baseIn derived程序清单如下:
#include ﹤ iostream ﹥
using namespace std;
class base
{
pubhc :
virtual void print( )
{
cout ﹤﹤ "In base" ﹤﹤ endl;
}
};
class derived: public base
{
public :
void print( ) { cout ﹤﹤ "In derived" ﹤﹤ endl; }
};
void show(base * pb, void (base:: * pf) ( ) )
{
_________
}void main( )
{
base b;
derived d;
show ( &b, base::print);
show ( &d, base::print);
}
-
在下面程序的下划线处填上正确的数据类型,保证程序具有如下输出结果:
0
17
17,17,17
源程序如下:
#include ﹤ iostream ﹥
using namespace std;
class base{
public:
______________num;
base ( ) { }
};
int base::num = 0;
void main( ){
cout ﹤﹤ base::num ﹤﹤ endl;
_______________* p=&base::num;
*p=17;
cout ﹤﹤ base::num ﹤﹤ end1;
base a,b;
cout ﹤﹤ *p﹤﹤"," ﹤﹤ a. num ﹤﹤ "," ﹤﹤b. num;
}
-
在下面横线处填上正确的内容,完成类的定义。
class Base
{
int x;
static const int b;
public:Base( int, int);
const int &a;
};
______________b =15;
Base::Base(int i,int j): ___________{ }
-
#include ﹤ iostream. h ﹥
void main( ) {
string str1 (" we are here" );
cout ﹤﹤ str1 ﹤﹤ endl;
}
-
#include ﹤ iostream. h ﹥
class point
{
private: float x, y ;
public: f( float a, float b) { x = a; y = b ; }
f( ) {x=0; y=0;}
void getx( ) { cout ﹤﹤ x ﹤﹤ endl; }
void gety ( ) { cout ﹤﹤ y ﹤﹤ endl ; }
}
class pointl
{
private: float x, y;
public: f( float a, float b) { x = a; y = b ; }
f( ){x=1; y=1;}
void getx( ) {cout ﹤﹤x ﹤﹤endl;}
void gety( ) {cout ﹤﹤y ﹤﹤endl;}
};
main( ) {
point a;
a.f( );
a. getx( );
a. gety( );
}
-
#include ﹤ iostream. h ﹥
class test1 {
private: int x;
public: test1 ( ) { x = 2 ; }
void set(int a){x =a;}
void get( ) { cout ﹤﹤ x ﹤﹤ endl; }
};
class test2{
private: int x;
public: test2 ( ) { x = 3; }
void set( int a) { x = a; }
void get( ) { cout ﹤﹤ x ﹤﹤ endl; }
};
class test: public testl, public test2 {
private: int x;
public: void set( int a) { x=a; }
void gettest( ) {cout ﹤﹤ x ﹤﹤ endl; }
};
void main( ) {
test a; a. get( );
}
-
#include ﹤ iostream. h ﹥
class test {
private: int x, y;
public: void test1 ( int a, int b) { x = a; y = b;}
int max( );
};
int test: max( ) { if(x﹥y) return x; else return y;}
void main( ){
test a;
a. test1(1,3);
cout ﹤﹤ a. max ( ) ﹤﹤ endl;
}
-
#include ﹤ iostream. h ﹥
void main( ) {
int x =5;
const int * const p = &x;
* p =88;
cout ﹤﹤ * p ﹤﹤ endl;
}
-
含有___________的类称为抽象类,它只能作为基类来使用。
-
C++用于运算符重载的关键字是_________。
-
若使用一个表达式的含义能解释为访问多个基类中的成员,则这种对基类成员的访 问就是不确定的,称这种访问具有_________。
-
vector类中用于获取向量可以容纳最多对象的个数的方法是_________。
-
如果在类模板的定义中有一个静态数据成员,则在程序运行中会产生_________静态变量。
-
静态成员函数是_________的成员,不是对象的成员。
-
私有继承时,在派生类中基类的protected权限变为_________。
-
C++中通过_________对类的对象进行初始化。
-
若将一个对象说明为常对象,则通过该对象只能调用它的_________成员函数,不能调用其它成员函数。
-
UML中实例连接反映对象之间的静态关系,消息连接描述对象之间的_________关系。
-
C++函数有库函数(标准函数)和_________两类。
-
将指向对象的指针作为函数参数,形参是对象指针,实参是对象的_________。
-
在程序中执行int *a=new int之后,若a为空指针,则表明_________。
-
C++函数中传递对象地址值是使用_________作为参数。
-
C++语言中用于定义一个类的关键字是_________。
-
为了使用C++语言标准程序库提供的string类,在程序中必须使用的文件包含命令是_________。
-
执行下列代码int b=100;cout﹤﹤"Oct:"﹤﹤oct﹤﹤b;程序的输出结果是_________。
-
要使用STL库提供的对数组进行升幂排序算法,在源程序中需要包含的头文件是_________。
-
C++语言中动态回收内存的关键字是_________。
-
执行下列代码double pi=3.141592;cout﹤﹤setprecision(1)﹤﹤pi;程序的输出结果是_________。
-
基类private成员,通过public派生,其在派生类中为( )
- A.private
- B.protected
- C.public
- D.不可访问
-
派生类继承了基类的( )
- A.所有成员
- B.部分成员
- C.数据成员
- D.成员函数
-
下列访问公有静态成员的方式,错误的是( )
- A.类名:: 静态成员名
- B.对象名.静态成员名
- C.对象指针-﹥静态成员名
- D.对象指针.静态成员名
-
声明友元使用下列哪个关键字( )
- A.class
- B.const
- C.friend
- D.virtual
-
析构函数的参数个数为( )
- A.0个
- B.1个
- C.至少1个
- D.多于1个
-
非静态成员函数都会有一个隐含指针,它是( )
- A.self指针
- B.this指针
- C.current指针
- D.one指针
-
对于类中的成员,使用public修饰,表明该成员的访问权限是( )
- A.公有的
- B.私有的
- C.保护的
- D.不可见的
-
声明函数模板的关键字是( )
- A.inline
- B.template
- C.const
- D.short
-
一个类中是否可以允许一个无参数构造函数和一个全部都是默认参数的构造函数共存( )
- A.不允许
- B.允许
- C.无法确定
- D.视构造函数的函数,可确定
-
类MyClass的定义如下:class MyClass{public:MyClass( ){ }MyClass(int i){value=new int(i);}int * value;};若要对value赋值,则下面语句正确的是( )
- A.MyClass my; my.value=10;
- B.MyClass my; *my.value=10;
- C.MyClass my; my.*value=10;
- D.MyClass my(10);
-
包含哪种语句的函数不能声明为内联函数( )
- A.变量定义
- B.if……else
- C.位操作
- D.switch
-
设函数void subone(int &)将形参减1,如有整型变量int k=10,则执行subone(k);后,k的值为( )
- A.9
- B.10
- C.11
- D.未知
-
C++中是否允许在类结构中定义函数( )
- A.不允许
- B.允许
- C.仅允许定义构造函数
- D.只不允许定义构造函数
-
对函数int max(int a, int b=0, int c=0, int d=0, int e=0);下列调用方式正确的是( )
- A.int m=max(10,11,12,13,14);
- B.int m=max(10,,12,13,14);
- C.int m=max(10,11,,13,14);
- D.int m=max(10,11,12,,14);
-
设int x=56; int r=x;若cout﹤﹤&x;显示0012FF7A,则cout﹤﹤&r;输出值为( )
- A.56
- B.0012FF7A
- C.0012FF7B
- D.未知
-
使用下列哪个流格式控制符可设置转换基数为八进制( )
- A.dec
- B.oct
- C.hex
- D.endl
-
用于标识十进制常量的前缀或后缀是( )
- A.无前后缀
- B.后缀L或l
- C.前缀0
- D.前缀0x
-
下列选项不是C++关键字的是( )
- A.typedef
- B.void
- C.bool
- D.inc
-
C++中注释“//”的有效范围是( )
- A.从“//”开始到行尾
- B.从“//”开始到下一个“//”
- C.“//”及其后一个字符
- D.从“//”开始到程序尾
-
假定MyClass为一个类,则该类的复制构造函数的声明语句为( )
- A.MyClass&(MyClass x);
- B.MyClass(MyClass x);
- C.MyClass(MyClass &x);
- D.MyClass(MyClass *x);