全国2010年10月高等教育自学考试
C++程序设计试题
课程代码:04737
一、单项选择题(本大题共20小题,每小题1分,共20分)
在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。
1.C++中注释“∥”的有效范围是( )
A.从“∥”开始到行尾 B.从“∥”开始到下一个“∥”
C.“∥”及其后一个字符 D.从“∥”开始到程序尾
2.假定MyClass为一个类,则该类的复制构造函数的声明语句为( )
A.MyClass&(MyClass x); B.MyClass(MyClass x);
C.MyClass(MyClass &x); D.MyClass(MyClass *x);
3.下列选项不是C++关键字的是( )
A.typedef B.void C.bool D.inc
4.用于标识十进制常量的前缀或后缀是( )
A.无前后缀 B.后缀L或l C.前缀0 D.前缀0x
5.设int x=56;int r=x;若cout <<&x;显示0012FF7A,则cout <<&r;输出值为( )
A.56 B.00l2FF7A C.0012FF7B D.未知
6.使用下列哪个流格式控制符可设置转换基数为八进制( )
A.dec B.oct C.hex D.endl
7.C++中是否允许在类结构中定义函数( )
A.不允许 B.允许 C.仅允许定义构造函数 D.只不允许定义构造函数
8.设函数void subone(int &)将形参减1,如有整型变量int k=10,则执行subone(k);后,k的值为( )
A.9 B.10 C.11 D.未知
9.对函数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,1l,,13,14); D.int m=max(10,11,12,,14);
10.类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);
11.包含哪种语句的函数不能声明为内联函数( )
A.变量定义 B.if……else C.位操作 D.switch
12.声明函数模板的关键字是( )
A.inline B.template C.const D.short
13.对于类中的成员,使用public修饰,表明该成员的访问权限是( )
A.公有的 B.私有的 C.保护的 D.不可见的
14.一个类中是否可以允许一个无参数构造函数和一个全部都是默认参数的构造函数共 存( )
A.不允许 B.允许 C.无法确定 D.视构造函数的函数,可确定
15.析构函数的参数个数为( )
A.0个 B.1个 C.至少1个 D.多于1个
16.非静态成员函数都会有一个隐含指针,它是( )
A.self指针 B.this指针 C.current指针 D.one指针
17.下列访问公有静态成员的方式,错误的是( )
A.类名::静态成员名 B.对象名.静态成员名
C.对象指针->静态成员名 D.对象指针.静态成员名
18.声明友元使用下列哪个关键字( )
A.class B.const C.friend D.virtual
19.派生类继承了基类的( )
A.所有成员 B.部分成员 C.数据成员 D.成员函数
20.基类private成员,通过public派生,其在派生类中为( )
A.private B.protected C.public D.不可访问
二、填空题(本大题共20小题,每小题1分,共20分)
请在每小题的空格中填上正确答案。错填、不填均无分。
21.执行下列代码
double pi=3.141592;
cout<<setprecision(1)<<pi;
程序的输出结果是_________。
22.要使用STL库提供的对数组进行升幂排序算法,在源程序中需要包含的头文件是_________。
23.C++语言中动态回收内存的关键字是_________。
24.执行下列代码
int b=100;
cout<<”Oct:”<<oct<<b;
程序的输出结果是_________。
25.C++语言中用于定义一个类的关键字是_________。
26.为了使用C++语言标准程序库提供的string类,在程序中必须使用的文件包含命令是_________。
27.在程序中执行int*a=new int之后,若a为空指针,则表明_________。
28.C++函数中传递对象地址值是使用_________作为参数。
29.将指向对象的指针作为函数参数,形参是对象指针,实参是对象的_________。
30.C++函数有库函数(标准函数)和_________两类。
31.C++中通过_________对类的对象进行初始化。
32.UML中实例连接反映对象之间的静态关系,消息连接描述对象之间的_________关系。
33.若将一个对象说明为常对象,则通过该对象只能调用它的_________成员函数,不能调用其它成员函数。
34.静态成员函数是_________的成员,不是对象的成员。
35.私有继承时,在派生类中基类的protected权限变为_________。
36.若使用一个表达式的含义能解释为访问多个基类中的成员,则这种对基类成员的访 问就是不确定的,称这种访问具有_________。
37.如果在类模板的定义中有一个静态数据成员,则在程序运行中会产生_________静态变量。
38.vector类中用于获取向量可以容纳最多对象的个数的方法是_________。
39.C++用于运算符重载的关键字是_________。
40.含有___________的类称为抽象类,它只能作为基类来使用。
三、改错题(本大题共5小题,每小题4分,共20分)
下面的每题中有一处错误,请用下横线标出错误所在行并给出修改意见
41. #include < iostream, h >
class testl {
private : int x;
public: testl ( ) { 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( );
}
42. #include < iostream, h >
class test {
private : int x, y;
public : void testl ( 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. testl ( 1,3);
cout << a. max ( ) << endl;
}
43. #include < iostream, h >
void main() {
int x =5;
const int * const p = &x;
* p =88;
cout << * p << endl;
}
44. #include < iostream, h >
class point
{
private : float x, y ;
public : f( float a, float b) { x = a ; y = b ; }
f( ) {x=O;y=O;}
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=l;y=l;}
void getx( ) {cout < <x < <endl;}
void gety( ) {cout < <y < <endl;}
};
main( ) I
point a;
a.f();
a. getx( ) ;a. gety ( );
}
45. #include < iostream, h >
void main( ) {
string strl (" we are here" );
cout << strl << endl;
}
四、完成程序题(本大题共5小题,每题4分,共20分)
46.在下面程序的下划线处填上正确的数据类型,保证程序具有如下输出结果:
0
17
17,17,17
源程序如下:
#include < iostream >
using namespace std;
class base
{
public :
______________num;
base ( ) { }
};
int base::hum = 0;
void main( )
{
cout << base::num << endl;
_________________* p=&base : :num;
*p=17;
cout << base::num << end1;
base a,b;
cout << * p<<"," << a. hum << "," <<b. num;}
47.在下面横线处填上正确的内容,完成类的定义。
class Base
{
int x;
static const int b;
public:
Base( int, int);
const int &a;
};
______________b =15;
Base::Base(int i,int j):
___________{ }
48.完成下面程序中的show函数的定义,使其运行结果如下:
In base
In derived
程序清单如下:
#include
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);
}
49.在下面程序的下划线处填上正确的语句。
#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( )
{
In ta[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 ;
}
50.下列程序将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;}
}
五、程序分析题(本大题共2小题,每小题5分,共10分)
51.给出下面程序的输出结果
#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";
}
52.给出下面程序的输出结果
#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 ( ) ;
}
六、程序设计题(本大题共1小题,共10分)
53.定义队列类模板queue(先进先出),队列的大小由使用者确定。要求该类模板对外提供如下二种基本操作:(1)insert(入队列)(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(. . . .);
};
请写出两个函数的过程(如果需要形式参数,请给出形参类型和数量,以及返回值类型)
下载自考试题WORD文档: