自考C++程序设计2013年10月试题及答案解析
-
在字符串类string中实现一个判断函数,该函数功能是统计某一字符串类对象(仅有单词和空格组成)有多少个单词,同时保存所有单词在字符串中的起始地址(设该字符串不超过100个单词)
#include ﹤iostream﹥
#include ﹤string﹥
class str{
string s; int n, a[100], j, l;
public: str(string &a){s=a; n=0; j=0; l=0;}
....test(....);
int *geta( ){return a;}
};
请写出test函数的过程(如果需要形式参数,请给出形参类型和数量,以及返回值类型)
-
给出下面程序的输出结果
#include ﹤iostream﹥
using namespace std;
class base
{
private:
int x;
public:
void setx(int a){x=a;}
int getx( ){return x;}
};
void main( )
{
base a, b;
a.setx(89);
b=a;
cout﹤﹤a.getx( )﹤﹤endl;
cout﹤﹤b.getx( )﹤﹤endl;
}
-
下面程序的运行结果如下: 20,22 60,22
在答题纸上填上缺少的部分。源程序如下:
#include ﹤iostream﹥
using namespace std;
class base
{
private:
const int a;
static const int b;
public:
base(int);
void Show( );
};
_________=22;
_________ : a(i){ } //初始化
void base:: Show( )
{ cout﹤﹤a﹤﹤","﹤﹤b﹤﹤endl; }
void main( )
{
base a1(20), a2(60);
a1.Show( );
a2.Show( );
}
-
给出下面程序的输出结果
#include ﹤iostream﹥
using namespace std;
class base
{
int x;
public:
void setx(int a){x=a;}
int getx( ){return x;}
};
void main( )
{
int *p;
base a;
a.setx(15);
p=new int(a.getx( ));
cout﹤﹤*p;
}
-
下面程序给出了一个从普通的基类派生出一个模板类的方法,在答题纸上填上缺少的部分。
#include ﹤iostream﹥
using namespace std;
class Base
{
public:
Base(int a){x=a;}
int Getx( ){return x;
void showb( ){cout﹤﹤x﹤﹤endl; private: int x;
};
template﹤class T﹥
class derived: public Base
{
public:
derived(T a, int b): _________
{ y=a; }
T Gety( ){ return y; }
void showd( ){cout﹤﹤y﹤﹤" "﹤﹤Gets( )﹤﹤endl;
private:
_________
};
void main( )
{ Base A(458);
A. showb( );
derived ﹤char *﹥B("It is",1357);
B.showd( );
}
-
在下面程序中的答题纸上填上适当的程序,使程序的输出结果如下: 67,90 源程序如下:
#include ﹤iostream﹥
using namespace std;
class base
{
pnvate:
int x,y;
priblic:
void initxy(int a,int b){x=a;y=b;}
void show(base *p);
};
inline void base::show( _________ )
{
cout﹤﹤p-﹥x﹤﹤" "﹤﹤p-﹥y﹤﹤endl;
}
void print(base *p)
{
p-﹥show(p);
}
void main( )
{
base a;
a.initxy(67,90);
print( _________ );
}
-
在答题纸上填上缺少的部分。源程序如下:
#include ﹤iostream﹥
#include ﹤fstream﹥
using namespace std;
void main( )
{
_________ myf("aB.txt"); //定义输出流文件,并初始化
_________﹤﹤"This ia a TXT file"; //向文件输入字符串
myf.close( );
}
-
在答题纸上填上缺少的部分。源程序如下:
#include ﹤iostream﹥
using namespace std;
class base
{
int a, b;
public:
base(int x, int y){a=x; b=y;}
void show( _________ )
{
cout﹤﹤p.a﹤﹤″,″﹤﹤p.b﹤﹤endl;
}
}_________
void main( )
{
base b(78,87);
b.show(b);
}
-
#include ﹤iostream.h﹥
class f{
private: int x,y;
public: f1(int a, int b){x=a; y=b;}
void print( ){cout﹤﹤x--﹤﹤y﹤﹤endl;
};
main( ){
f a;
float x=1.0, y=2.0;
a.f1(x,y);
a.print( );
}
-
#include ﹤iostream.h﹥
class test{
private: int x;
public: test(int a){x=a;}
void set(int a){x=a;}
void get( ){cout﹤﹤x﹤﹤endl;
};
class test1: public test{
private: int x;
public: test1(int a){x=a;}
void set(int a){x=a;}
void get( ){cout﹤﹤′ ′﹤﹤endl;
};
-
#include ﹤iostream.h﹥
main( ){
int x=7;
const int *p=&x;
*p=99;
cout﹤﹤*p﹤﹤endl;
}
-
#include ﹤iostream.h﹥
class test{
private: int x; y;
public: void f(int a, int b){x=a; y=b;}
int max( ){return(x﹥y)?x:y;}
};
main( ){
test a;
a.f(1,3);
cout﹤﹤a.max( )﹤﹤endl;
}
-
#include ﹤iostream.h﹥
class point {
private: float x, y;
public: point(float a, float b){x=a; y=b;}
void f( ){x=0; y=0;}
void getx( ){cout﹤﹤x﹤﹤endl;
void gety( ){cout﹤﹤y﹤﹤endl;
};
main( ) {
point a(3.5);
a.getx( );
}
-
假定x=10,则表达式x﹤=10?20:30的值为_________。
-
如有“char *p="Hello";”,则语句“cout﹤﹤*(p+1);”输出值是_________。
-
C++对其对象的数据成员和成员函数的访问是通过_________来限制的。
-
基类和派生类的关系称为_________。
-
复杂对象可以由简单对象构成,这种现象称为_________。
-
在公有继承的中基类数据成员在派生类中的访问权限_________。
-
类可将实现细节隐藏起来,这种机制称为_________。
-
在面向对象的程序设计中,通过封装实现数据隐藏;通过_________实现代码的复用。
-
当一个成员函数被调用时,该成员函数的_________指向调用它的对象。
-
以面向对象方法构造的系统,其基本单位是_________。
-
C++中定义友元函数使用的关键字为_________。
-
拷贝构造函数是在用一个对象初始化另一个对象时被调用,系统缺省的拷贝构造函数的工作方法是_________。
-
定义重载函数必须在参数的个数或参数的_________上与其它同名函数不同。
-
对于无返回值函数,定义函数时要用_________修饰函数类型。
-
C++程序运行时的内存空间可以分成全局数据区,堆区,栈区和_________。
-
含有_________的类称为抽象类。
-
重载的运算符保持其原有的操作符个数、_________和结合性不变。
-
C++语言支持的两种多态性分别是编译时的多态性和_________的多态性。
-
在C++中,函数的参数有两种传递方式,它们分别是值传递和_________。
-
从本质上看,引用变量是被引用变量的( )
- A.拷贝
- B.别名
- C.复制
- D.克隆
-
C++程序的编译是以_________为单位进行的。
-
C++语言对C语言做了很多改进,C++语言相对于C语言的最根本的变化是( )
- A.增加了一些新的运算符
- B.允许函数重载,并允许设置缺省参数
- C.规定函数说明符必须用原型
- D.引进了类和对象的概念
-
假定有“char *p="Hello";”,若要输出这个字符串的地址值正确的写法为( )
- A.cout﹤﹤*p;
- B.cout﹤﹤p;
- C.cout﹤﹤&p;
- D.cout﹤﹤(void*)p;
-
下面声明纯虚函数语句正确的是( )
- A.void fun( )=0;
- B.virtual void fun( )=0;
- C.virtual void fun( );
- D.virtual void fun( ){ };
-
对于拷贝构造函数和赋值操作的关系,正确的描述是( )
- A.拷贝构造函数和赋值操作是完全一样的操作
- B.进行赋值操作时,不会调用类的构造函数
- C.当调用拷贝构造函数时,类的对象正在被建立并被初始化
- D.拷贝构造函数和赋值操作不能在同一个类中被同时定义
-
使用重载函数的目的是( )
- A.共享函数数据
- B.减少代码量
- C.优化运行效率
- D.提高可读性
-
以下说法中正确的是( )
- A.C++程序总是从第一个定义的函数开始执行
- B.C++程序总是从main函数开始执行
- C.C++中函数必须有返回值
- D.C++中函数名必须唯一
-
对C++中主函数描述正确的是( )
- A.名称为main,可为多个
- B.名称不限,可为多个
- C.名称为main,必须有且只能有—个
- D.名称不限,必须有且只能有—个
-
在下面的二维数定义正确的是( )
- A.int ary[5][ ];
- B.int ary[ ][5]={{0,1,2}};
- C.int ary[ ][5];
- D.int ary[5,5];
-
C++中要实现动态联编,调用虚函数时必须使用( )
- A.基类指针
- B.类名
- C.派生类指针
- D.对象名
-
下面对析构函数的正确描述是( )
- A.系统不能提供默认的析构函数
- B.析构函数必须由用户定义
- C.析构函数没有参数
- D.析构函数可以设置默认参数
-
C++中类的成员默认为( )
- A.public
- B.private
- C.protected
- D.static
-
在C++中类之间的继承关系具有( )
- A.自反性
- B.对称性
- C.传递性
- D.反对称性
-
下列说法中,有关构造函数是正确的是( )
- A.任何一类必定有构造函数
- B.可定义没有构造函数的类
- C.构造函数不能重载
- D.任何一类必定有缺省的构造函数
-
下面关于类和对象说法不正确是( )
- A.类由数据与函数组成
- B.一个对象必属于某个类
- C.对象是类的实例
- D.一个类的对象只有一个
-
下面选项中不是类成员函数的是( )
- A.构造函数
- B.析构函数
- C.友元函数
- D.静态函数
-
下列语句错误的是( )
- A.int val(20);
- B.extern int val(20);
- C.const int val;
- D.extern const int val;
-
My是一个类,则执行语句My a[3], *[2]; 之后,自动调用构造函数次数为( )
- A.2
- B.3
- C.4
- D.5
-
下列不属于C++关键字的是( )
- A.extern
- B.goto
- C.free
- D.default
-
C++中定义标准输入的库为( )
- A.stdio
- B.math
- C.istream
- D.stdlib