自考C++程序设计2015年10月试题及答案解析
-
写一个程序,定义一个抽象类Shape,由它派生3个类:Square(正方形)、Trapezoid(梯形)和Triangle(三角形)。用虚函数分别计算几种图形面积、并求它们的和。要求用基类指针数组,使它每一个元素指向一个派生类对象。
#include ﹤iostream.h﹥
class Shape
{ public:
virtual double area( )const=0;
};
-
给出下面程序输出结果。
include "iostream. h"
void main( )
{
int x, y, z; x=3; y=x++; z=++x;
cout﹤﹤"x="﹤﹤x﹤﹤";y="﹤﹤y﹤﹤";z="﹤﹤z﹤﹤endl;
}
-
下面程序用来求直角三角形斜边长度。
#include ﹤iostream. h﹥
#include ﹤math.h﹥
class Line;
class Point;
{ private:
double x, y;
_________
public:
Point(double i=0, double j=0)
{ x=i; y=j; }
Point(Point &p)
{ x=p.x; y=p.y; }
};
class Line
{
private:
Point p1, p2;
Line( Point &xp1, Point &xp2): _________ { }
double GetLength( );
};
double Line:: GetLength( )
{
double dx =p2. x-p1. x;
double dy =p2. y-p1. y;
return sqrt( dx*dx +dy*dy);
}
void main( )
{
Point p1, p2(6, 8);
Line L1(p1, p2);
cout ﹤﹤L1. GetLength( )﹤﹤endl;
}
-
给如下面程序输出结果。
#include ﹤iostream. h﹥
class Base
{
private:
int Y;
public:
Base (int y=0)
{
Y=y;
cout ﹤﹤"Base ("﹤﹤y ﹤﹤")\n";
}
~Base( )
{
cout ﹤﹤"~Base( )\n";
}
void print( )
{
cout ﹤﹤Y﹤﹤" ";
}
};
class Derived: public Base
{
private:
int Z;
public:
Derived (int y, int z): Base(y)
{
Z=z;
cout﹤﹤"Derived ("﹤﹤y﹤﹤","﹤﹤z﹤﹤"\n";
}
~Derived( )
{
cout﹤﹤"~Derived( )\n";
}
void print( )
{
Base:: print( );
cout ﹤﹤Z﹤﹤endl;
}
};
void main( )
{
Derived d(10, 20);
d. print( );
}
-
编一个函数to_ lower( ),实现将字符串中的大写字母转换成相应小写字母。主函数输入数据并输出结果。
#include "stdafx. h"
#include ﹤iostream﹥
_________;
void main(void)
{
void to_lower (char a[ ]);
char str[10];
cin﹥﹥str;
to_lower(str);
cout﹤﹤str﹤﹤endl;
}
void to_ lower(char a[ ])
{
for(int i=0; i﹤10&&a[i]!='0'; i++)
if( _________ )
a[i]+=32;
}
-
任意输入10个同学的成绩,计算其平均成绩。要求用函数average( )计算平均成绩,主函数输入数据并输出结果。
#include "stdafx. h"
#include ﹤iostream﹥
using namespace std;
void main( void)
{
float average( float a[ ]);
float score[10];
for( _________ )
{
cin﹥ score[i];
}
cout﹤﹤"average: "﹤﹤ average( score)﹤﹤ endl;
}
float average(float a[ ])
{
float sum=0;
for( int i=0; i ﹤10; i++)
{
_________;
}
return (sum/10);
}
-
打印以下图案: #include "stdafx. h" #include ﹤iostream﹥ using namespace std; void main( void) { int j, n; for( _________ ) //i控制行号 { for(j=1;j﹤i;j++) //j控制空格 cout ﹤﹤' '; for( _________ ) //n控制星号 cout ﹤﹤"*"; cout ﹤﹤ endl; } }
-
用简单选择法对10个数排序,使其从小到大排列。
#include "stdafx. h"
#include ﹤iostream﹥
using namespace std;
int main( void)
{
int t;
int num[ 10], t, j;
for( _________ )
cin ﹥﹥num[i];
for(i=0;i﹤9;i++)
for(j=i+1;j﹤10;j++)
if(num[i]﹥ num[j])
{
t=num[i];
num[i]=num[j];
_________;
}
for(i=0;i﹤10;i++)
cout ﹤﹤num[i]﹤﹤" ";
}
-
#include ﹤iostream﹥
using namespace std;
class A
{
static int x;
int y;
public:
A(int a, int b)
{
x=a; y=b;
}
int get( )
{
return x +y;
}
};
x=5;
int main( )
{
A a(1,2);
cout ﹤﹤ a. get( )﹤﹤endl;
return 0;
}
-
#include ﹤iostream﹥
using namespace std;
class base{
int a, b;
pubic:
void setzero( )
{
x=0; y=0;
}
void show( )
{
cout ﹤﹤x﹤﹤" "﹤﹤y﹤﹤endl;
}
};
int main( )
{
base b;
b. setzero 0, 0);
return 0;
}
-
#include ﹤iostream﹥
using namespace std;
class A
{
int x;
public:
A(int a)
{
x=a;
}
void set( int a)
{
x=a;
}
void get( )
{
cout﹤﹤x﹤﹤endl;
}
};
int main( )
{
const A a(4);
a. set(6);
a. get( );
a. get(10);
a. get( );
return 0;
}
-
#include ﹤iostream﹥
using namespace std;
class base {
int *p;
public:
base (int a)
{
p=&a;
}
int get( )
{
return p;
}
};
int main( )
{
base b(3);
cout﹤﹤b. get( );
}
-
#include ﹤iostream﹥
using namespace std;
clss base{
int a;
int get( )
{
return a;
}
void setValue(int b)
{
a=b;
}
int geta( )
{
return a;
}
};
int main( )
{
base b;
b. setValue (7);
retum 0;
}
-
局部对象和全局对象中,在同一程序中_______生存期最长。
-
如果要把类B的成员函数void fun( )说明为类A的友元函数,则应在类A中加入语句_______。
-
函数重载时,编译系统会根据_______或形参的个数来区分。
-
每个对象都是所属类的一个_______。
-
静态成员函数、友元函数、构造函数和析构函数中,不属于成员函数的是_______。
-
在编译指令中,宏定义使用_______指令。
-
已知int *p=NULL,使用new为指针P申请一个存储大小为10的存放int型的空间,代码为_______。
-
为了实现运行时的多态性,派生类需重新定义基类中的_______。
-
在C++中有两种参数传递方式:传值和传_______。
-
C++中ostream的直接基类_______。
-
由const修饰的对象称为_______。
-
如果通过同一个基类派生一系列的类,则将这些类总称为_______。
-
执行下列程序double a=3.1415926, b=3.14; cout﹤﹤setprecision(5)﹤﹤a﹤﹤ "," ﹤﹤setprecision(5)﹤﹤b﹤﹤endl; 程序的输出结果是_______。
-
基类的公有成员在派生类中的访问权限由_______决定。
-
在C++中,访问一个指针所指向的对象的成员所用的指向运算符是_______。
-
如果要把类B的成员函数void fun( )说明为类A的友元函数,则应在类A中加入语句_______。
-
在C++中,虚函数帮助实现了类的_______。
-
在类内部定义的公有(public)数据可以在类外进行存取,但_______和私有(private)数据不能在类外直接存取。
-
假定类AB中有一个公用属性的静态数据成员static int bb;在类外不通过对象名给该成员bb赋值为10的写法:_______。
-
C语言中scanf命令在C++中改用:_______。
-
下列有关重载函数的说法中正确的是( )
- A.重载函数必须具有不同的返回值类型
- B.重载函数参数个数必须相同
- C.重载函数必须有不同的形参列表
- D.重载函数名可以不同
-
当一个类的某个函数被说明为virtual时,在该类的所有派生类中的同原型函数( )
- A.都是虚函数
- B.只有被重新说明时才是虚函数
- C.都不是虚函数
- D.只有被重新说明为virtual时才是虚函数
-
类中定义的成员默认访问属性为( )
- A.public
- B.private
- C.protected
- D.friend
-
拷贝构造函数的参数是( )
- A.某个对象名
- B.某个对象的成员名
- C.某个对象的引用名
- D.某个对象的指针名
-
关于类模板的说法正确的是( )
- A.类模板的主要作用是生成抽象类
- B.类模板实例化时,编译器将根据给出的模板实参生成一个类
- C.在类模板中的数据成员具有同样类型
- D.类模板中的成员函数没有返回值
-
有关多态性说法不正确的是( )
- A.C++语言的多态性分为编译时的多态性和运行时的多态性
- B.编译时的多态性可通过函数重载实现
- C.运行时的多态性可通过模板和虚函数实现
- D.实现运行时多态性的机制称为动态多态性
-
关于友元函数的描述中,错误的是( )
- A.友元函数不是成员函数
- B.友元函数只能访问类中私有成员
- C.友元函数破坏隐藏性,尽量少用
- D.友元函数说明在类体内,使用关键字friend
-
关于对象概念的描述中,说法错误的是( )
- A.对象就是C语言中的结构体
- B.对象代表着正在创建的系统中的一个实体
- C.对象是类的一个变量
- D.对象之间的信息传递是通过消息进行的
-
下列说明语句中正确的是( )
- A.int a, &ra=a, &&ref=ra;
- B.int&refa[10];
- C.int a, &ra=a, &*refp=&ra;
- D.int *pi, *&pref=pi;
-
类中能访问静态成员的函数是( )
- A.虚函数
- B.静态成员函数
- C.构造函数
- D.析构函数
-
假定a为一个整型数组名,则元素a[4]的字节地址为( )
- A.a+4
- B.a+8
- C.a+16
- D.a+32
-
下列有关构造函数的描述中,正确的是( )
- A.构造函数可以带有返回值
- B.构造函数的名字与类名完全相同
- C.构造函数必须带有参数
- D.构造函数必须定义,不能缺省
-
关于类和对象不正确的说法是( )
- A.类是一种类型,它封装了数据和操作
- B.对象是类的实例
- C.一个类的对象只有一个
- D.一个对象必属于某个类
-
存储下列数据,占用存储字节最多的是( )
- A.0
- B.'0'
- C."0"
- D.0.0
-
关于new运算符的下列描述中,错误的是( )
- A.它可以用来动态创建对象和对象数组
- B.使用它创建的对象和对象数组可以使用运算符delete删除
- C.使用它创建对象时要调用构造函数
- D.使用它创建对象数组时必须指定初始值
-
下列运算符中,优先级最高的是( )
- A.*
- B.-﹥
- C.&&
- D.﹥=
-
设x=8,执行语句y=x++,则y等于( )
- A.6
- B.7
- C.9
- D.8
-
要求通过函数来实现一种不太复杂的功能,并且要求加快执行速度,选用( )
- A.内联函数
- B.重载函数
- C.内部函数
- D.函数模板
-
编写C++程序一般需经过的几个步骤依次是( )
- A.编辑、调试、编译、连接
- B.编译、调试、编辑、连接
- C.编译、编辑、连接、运行
- D.编辑、编译、连接、运行
-
在C++语言中用于注释的标识符是( )
- A.&
- B.//
- C.*
- D./