自考C++程序设计2018年4月试题及答案解析
-
声明一个circle类,有数据成员Radius(半径, foat型),成员函数GetArea( )计算圆的面积。在main函数中声明一个circle类的对象c1,其半径为5.6。调用 GetArea( )函数计算c1的面积,并显示该计算结果(cout﹤"圆的面积:"﹤﹤c1. Getarea﹤endl;)。
-
#include ﹤iostream.h﹥
using namespace std;
void main( )
{
int a[3][4]=
{
{1,2,7,8},{5,6,11,15},{9,20,3,7}
};
int m=a[0][0];
int i, j;
for(i=0; i﹤3; i++)
for(j=0; j﹤4; j++)
if(a[i][j]﹥m) m=a[i][j];
cout﹤﹤"m is:" ﹤﹤endl;
cout ﹤﹤m﹤﹤ endl;
}
-
#include ﹤ iostream.h﹥
using namespace std;
class example
{public:
example(int n)
{
i=n;cout﹤﹤"Constructing";
}
~example( )
{
cout ﹤﹤"Destructing";
}
int get_i( )
{
return i;
}
private:
int i;
};
int sqr_int( example o)
{
retum o. get_i( )*o. get_i( );
}
void main( )
{
example x(10);
cout ﹤﹤x. get_i( )﹤﹤ endl;
cout ﹤﹤ sqr_it(x)﹤﹤endl;
}
-
#include ﹤iostream﹥
#include ﹤fstream﹥
using namespace std;
void main( )
{
char *p="abcde";
_________myf("ab. txt");
myf ﹤﹤p;cout﹤﹤"this is a txt file";
_________;//关闭文件ab.txt
}
-
完成程序,使其输出结果为n=2,sum=2n=3,sum=5n=5,sum=10
#include ﹤iostream﹥
using namespace std;
class Sample
{
int n;
static int sum;
public:
Sample(int x)
{
n=x;
}
void add( )
{
_________;
}
void disp( )
{
cout ﹤﹤"n="﹤﹤n﹤﹤"sum="﹤﹤sum﹤﹤end;
}
};
_________;
void main( )
{
Sample a(2), b(3), c(5);
a. add( );
a. disp( );
b. add( );
b. disp( );
c. add( );
c. disp( );
}
-
#include ﹤iostream﹥
using namespace std;
class base
{
_________;
public:
base (int x, int y)
{
a=x, b=y;
}
_________( base &p)
{
cout ﹤﹤p. a ﹤﹤" "﹤﹤p. b﹤﹤ endl;
};
void main( )
{
base b(78, 87);b. show(b);
}
-
完成程序,使其输出结果为28
_________
using namespace std;
int a[8]={1,2,3,4,5,6,7};
void fun(int b[ ], int n);
void main( )
{
int m=8;fun(a, m);
cout ﹤﹤a[7]﹤﹤ endl;
}
void fun (int b[ ], int n)
{
int i;for(_________)b[7]+=b[i];
}
-
完成程序,使其输出结果为x=30
#include "stdafx. h"
#include ﹤iostream﹥
using namespace std;
class Sample
{private:
intx;public:Sample( )
{
Sample(int a)
{
x=a;
}
void disp( )
{
cout﹤﹤"x="﹤﹤x ﹤﹤ endl;
}
friend Sample operator+( Sample &s1, Sample &s2);
};
_________
Sample &s1,
Sample &s2)
{
returm Sample(s1. x +s2. x);
}
void main( )
{
Sample obj1(10);
Sample obj2(20);
Sample obj3;
_________;obj3. disp( );
}
-
#include using namespace std;
class person
{
int x;public:void person( )
{
x=1;
}
void set( int a)
{
x=a;
}
void get( )
{
cout ﹤﹤x﹤﹤ endl;
}
};
void main( )
{
person p;
p. set(6);
p. get( );
}
-
#include ﹤iostream﹥
using namespace std;
void main( )
{
int a[6]={1,2,3,4,5,6,7};
int i;for(i=0; i﹤7; i++)
cout ﹤﹤a[li] ﹤﹤ endl;
}
-
#include ﹤ iostream﹥
using namespace std;
class f
{
int a, b;
public:
void set( int aa, int bb)
{
a=aa; b=bb
}
void show( )
{
cout ﹤﹤a ﹤﹤" "﹤﹤b﹤﹤ endl;
}
};
void main ( )
{
f. set(1, 2); f. show( );
-
#include ﹤iostream﹥
using namespace std;
void main( )
{
int a=11, b=12;
const int *p=a;
cout﹤﹤a﹤﹤b﹤*p﹤endl;
}
-
在函数体之前加_________关键字可以防止覆盖函数改变数据成员的值。
-
当编译系统编译含有虚函数的类时,将为它建立一个虚函数表,表中的每一个元素都指向一个_________。
-
#include ﹤iostream﹥
using namespace std;
void setzero(int &a)
{
a=0;
}
void main( )
{
int x=7; y=9;
setzero(x);
setzero(y);
cout ﹤﹤x﹤﹤y ﹤﹤ endl;
}
-
复制构造函数使用_________作为形式参数。
-
定义类的动态对象数组时,系统只能够自动调用该类的_________构造函数对其进行初始化。
-
使用对象的引用来初始化创建中的对象的函数是_________。
-
构造函数、析构函数和友元函数中,不是该类成员的是_________。
-
假定x是一个逻辑量,则x&&0的值为_________。
-
若有定义int a=3; 则执行完语句a+=a-=a*a; 之后,a的值为_________。
-
如果要把 Student类的返回值为void的成员函数 score( ),声明为类 Teacher的友元函数,则应在类 Teacher的定义中加入语句_________。
-
在C++中,变量的三个基本要素是指:变量名、变量类型和_________。
-
不同对象可以调用相名称的函数,但执行完全不同行为的现象称为_________。
-
用new申请某一个类的动态对象数组时,在该类中必须能够匹配到没有形参或_________的构造函数,否则应用程序会产生一个编译错误。
-
在C++程序中,对刚创建的对象进行初始化的工作由构造函数来完成;而对象被删除前的一些清理工作则是由_________函数来完成的。
-
在用 class定义一个类时,数据成员和成员函数的默认访间权限是_________。
-
输入流 istream用来处理标准输入的一个对象的是_________。
-
编译时的多态性通过_________函数实现。
-
假定x=5,y=6, 则表达式x++*++y的值为_________。
-
在类体外面定义成员函数时,必须用关键字_________重写类模板声明。
-
C++提供的预处理语句有3种,文件包含、条件编译和_________。
-
面向对象程序设计不仅能进行功能抽象,而且能进行_________抽象。
-
使用setw( )时需要包含头文件( )
- A.iostream. h
- B.fstream. h
- C.iomanip. h
- D.stdli
- E.h
-
下列关于运算符重载的表述中,正确的是( )
- A.C++已有的任何运算符都可以重载
- B.运算符函数的返回类型不能声明为基本数据类型
- C.在类型转换符函数的定义中不需要声明返回类型
- D.可以通过运算符重载来创建C++中原来没有的运算符
-
友元运算符@obj被C++编译器解释为( )
- A.operator@(obj)
- B.operator@(obj, 0)
- C.obj. operator@( )
- D.obj. operator@( 0)
-
考虑函数原型 void test(int a, int b=7, char ch='*'),下面的函数调用中,属于不合法调用的是( )
- A.test(5)
- B.test(5, 8)
- C.test(6, '#')
- D.test(0, 0, '*')
-
以下关于this指针的叙述中,正确的是( )
- A.任何与类相关的函数都有this指针
- B.类的成员函数都有this指针
- C.类的友元函数都有this指针
- D.类的非静态成员函数才有this指针
-
如果有int x, *p; float y, *q; 则下面操作中,正确的是( )
- A.p=x
- B.p=q
- C.p=&x
- D.p=&y
-
下列有关模板的描述中,错误的是( )
- A.模板把数据类型作为一个设计参数,称为参数化程序设计
- B.使用时,模板参数与函数参数相同,是按位置而不是名称对应的
- C.模板实例化参数类型包括数据类型和值
- D.类模板与模板类是同一个概念
-
下列不是函数重载所要求的条件是( )
- A.函数名相同
- B.参数个数不同
- C.参数类型不同
- D.函数返回值类型不同
-
用new运算符创建维数组的正确形式是( )
- A.int *p=new a[10];
- B.float *p =new float[10];
- C.int *p= new float[10];
- D.int *p= new int[5]={1,2,3,4,5,6};
-
下列关于构造函数的描述中,错误的是( )
- A.构造函数可以设置默认参数
- B.构造函数在定义类对象时自动执行
- C.构造函数可以是内联函数
- D.构造函数不可以重载
-
关于成员函数特征的描述中,错误的是( )
- A.成员函数一定是内联函数
- B.成员函数可以重载
- C.成员函数可以设置参数的默认值
- D.成员函数可以是静态的
-
对于int *pa[5]; 的描述中,正确的是( )
- A.pa是一个指向数组的指针,所指向的数组是5个i型元素
- B.pa是一个指向某数组中第5个元素的指针,该元素是int型变量
- C.pa[5]表示数组的第5个元素的值,是int型的值
- D.pa是一个具有5个元素的指针数组,每个元素是一个int型指针
-
已知:int m=10; 下列表示引用的方法中,正确的是( )
- A.int &z;
- B.int &t=1;
- C.int &x=m;
- D.float &f=&m;
-
对类中声明的变量,下列描述中正确的是( )
- A.属于全局变量
- B.属于该类,某些情况下也可被该类不同实例所共享
- C.只属于该类
- D.任何情况下都可被该类所有实例共享
-
在C++中,类与类之间的继承关系具有( )
- A.自反性
- B.对称性
- C.传递性
- D.反对称性
-
在类定义的外部,可以被访间的成员有( )
- A.所有类成员
- B.private或protected的类成员
- C.public的类成员
- D.public或 private的类成员
-
下列关于delete运算符的描述中,错误的是( )
- A.它必须用于new返回的指针
- B.对一个指针可以使用多次该运算符
- C.它也适用于空指针
- D.指针名前只用一对方括号,不管所删除数组的维数
-
局部变量可以隐藏全局变量,那么在有同名全局变量和局部变量的情形时,可以用下列哪一项提供对全局变量的访问( )
- A.作用域运算符
- B.指针运算符
- C.提取运算符
- D.插入运算符
-
下列关于C++标识符的命名不合法的是( )
- A.Pad
- B.name_1
- C.A#bc
- D._a12
-
若有以下类型标识符定义:int x=2; char w=a; float y=23.45f; double z=45.6789; 则表达式w*x+y-z的结果类型是( )
- A.float
- B.char
- C.int
- D.double