C++程序设计2009年10月真题试题及答案解析(04737)
-
下面Shape类是一个表示形状的抽象类,Area( )为求图形面积的函数。请从Shape类派生梯形类(Trapezoid)、圆形类(Circle),三角形类(Triangle),并给出具体的求面积函数。其中,所有派生类计算面积需要用到的参数由构造函数给出,梯形面积计算需要上底、下底和高,三角形面积需要底和高,圆形面积需要半径。
形状的抽象类声明如下:
class Shape {
public:
virtual double Area( ) = 0;
};
-
#include
using namespace std;
class A {
int a;
public:
A(int aa=0){a=aa;}
~A( ){cout<<″Destructor A!″<
};
class B: public A{
int b;
public:
B(int aa = 0,int bb = 0):A(aa){b = bb;}
~B( ){cout<<″Destructor B!″<< b<< endl;}
};
void main( ){
B x(5), y(6,7);
}
-
#include
using namespace std;
int main( ){
int i,j;
for(i=1;i<=4;i+=1)
for(j=2;j<=4;j+=j){
if(i+j<5)
cout<<″+″;
else
cout<<″*″;
}
return 0;
}
-
将下面程序补充完整,使程序运行结果为:
C1ass A
Class B
程序如下:
#include
#include
class A{
public:
virtual void GetA( ) = 0;
};
class B: public A{
private:
char str[32];
public:
void GetA( ){
cout<<″Class A″<
}
const char * GetB( ) { __________
}
B(char * s){
strcpy(str,s);
}
};
void main( ){
A * a;
B b(″Class B″);
a=__________;
a->GetA( );
cout<
return;
}
-
将下面程序补充完整,使程序可以输入学生信息并计算平均成绩。
#include
#include
using namespace std;
class Student{
private:
char name[255];
int score[10];
public:
Student(char n[ ],int s[ ]){
___________;
for(int i=0;i<10;i++){
score[i]=s[i];
}
}
void Show( ){
int sum=0;
for(int i=0;i<10;i++){
_______________;
}
cout<<″名字:″<< name<<″,平均成绩:″<
}
};
void main( ){
char name[255];
int score[10];
cout<<″姓名:″;cin>>name;
for(int i=0;i<10;i++){
cout<<″成绩″<
cin>>score[i];
}
Student s(name,score);
s.Show( );
}
-
将下面程序补充完整,使程序可以正常运行,并释放内存。
#include
__________
class A {
private:
T * data;
int length;
public:
A (int len){
length=len;
data=new T[len];
}
~A( ){
_________
}
T& operator[ ](int i){
return data[i];
}
};
int main( ){
A
obj(2); obj[0]=1;
obj[1]=2;
cout<
cout<
return 0;
}
-
请将下面程序补充完整,使程序可以正常打印9×9乘法口诀。
#include
using namespace std;
class A {
private:
int a; int b;
public:
__________
{ a = x; b = y; }
void set(int x,int y)
{ a = x; b = y; }
void display( ){
cout<
}
};
int main( ){
A a(1,1);
for(int i=1;i<=9;i++){
for(int j=1;__________;j++){
a.set(j,i);
a.display( );
cout<<″″;
}
cout<
}
return 0;
}
-
将下面程序补充完整,使程序输出结果为:
Begin
Welcome
Show
End
程序如下:
#include
using namespace std;
class A{
public:
__________{
cout<<″Begin″<
}
void show( ){
cout<<″Show″<
}
___________{
cout<<″End″<
}
};
A object;
int main( ){
cout<<″Welcome″<
object.show( );
return 0;
}
-
#include
using namespace std;
class A{
public:
char name[255];
private:
char * getName( )
{ return name; }
};
class B:public A{
public:
B(char * n){
strcpy ( name, n);
}
};
void main( ){
B b(″Hello!″);
cout<<″Name:″<
}
-
#include
using namespace std;
int main ( ) {
const int num = 20;
int scores[num];
for (int i=1;i<=num;i ++){
scores[i]=i;
}
return 0;
}
-
#include
using namespace std;
class CMax {
private:
int xx; int yy;
public:
CMax(int x, int y)
{ xx = x; yy = y; }
void setValue(int x,int y)
{ xx = x; yy = y;}
int max( ){
return xx >yy?xx:yy;
}
};
void main( ){
CMax m( );
m.setValue(20,30);
cout<<″Max=″<
}
-
#include
using namespace std;
class A {
void show ( ) {
cout<<″Hello!″;
}
};
int main ( ) {
A a; a.show ( );
return 0;
}
-
#include
using namespace std;
int main ( ){
int num; max=10; num=1
while (num< max) num ++ ;
cout<<″Num=″<< num;
return 0;
}
-
在C++中,虽然友元提供了类之间数据进行访问的一种方式,但它破坏了面向对象程序设计的_______特性。
-
执行下列代码
cout<< showpoint<< 123.0;
程序的输出结果是_______。
-
虚函数类似于重载函数,但与重载函数的实现策略不同,对虚函数声明时应使用_______关键字。
-
vector类中用于返回向量中的最后一个对象的方法是_________。
-
在C++中,利用向量类模板定义一个具有20个double的向量,其元素均被置为0.5,实现此操作的语句是_______。
-
在C++中,创建派生类对象时,总是先从_______的初始化开始的。
-
类的继承是指派生类继承基类的数据成员和_______。
-
若类的成员函数用关键字static进行修饰,这样的成员函数称为_______。
-
C++类中的_______函数在对象的生存期结束时被自动调用。
-
友元函数可以存取类的_______、公有成员和保护成员。
-
开发一个C++语言程序的步骤通常包括编辑、_______、连接、运行和调试。
-
在C++的类声明中,用public关键字声明的类成员的访问权限是_______。
-
C++函数的返回类型可以是除数组与_______以外的任何类型。
-
能提供封装的C++关键字是_______。
-
将对象作为函数参数,是将实参对象的_______传递给形参对象,这种传递是单向的。
-
要使用STL库提供的对数组进行降幂排序算法,在源程序中需要包含的头文件是______。
-
在C++标准库中,用_______类来表示复数。
-
在C++语言的面向对象设计框架中,_______是程序的基本组成单元。
-
C++语言提供的的基本控制结构可以分为3种类型:顺序结构、_______和循环结构。
-
执行代码double pi=3.1415192; cout<
-
基类中的public成员,通过public派生,其在派生类中的访问权限为( )
- A.不可访问
- B.private
- C.protected
- D.public
-
不同对象调用同名函数,但导致完全不同行为的现象称为( )
- A.抽象
- B.封装
- C.继承
- D.多态性
-
类A中存在静态数据成员x,设a和b是类A的两个对象,在执行a.x=10之后,b.x 的值为( )
- A.未初始化
- B.等于a.x的值为( )
- C.等于0
- D.随机
-
下列哪个编译指令不属于条件编译指令( )
- A.#if
- B.#else
- C.#endif
- D.#error
-
使用string.h库操纵字符串时,将两个字符串连接成一个字符串的函数是( )
- A.strlen( )
- B.strcap( )
- C.strcat( )
- D.strcmp( )
-
对类A,复制构造函数的原型是( )
- A.A::A(const A&);
- B.A::A(const A *);
- C.A::A(const A);
- D.A::A( );
-
对class point,如使用point * ptr=new point[2]; 创建对象数组,则删除此数组使用的语句是( )
- A.delete ptr[2];
- B.delete[ ] ptr;
- C.delete ptr[ ];
- D.delete[2] ptr;
-
函数int sum(int a=1, int b=1, int c=3)可与下列哪个函数同时声明( )
- A.double sum(int);
- B.char sum(int, int);
- C.int sum(double);
- D.int sum(int, int, int);
-
下列访问成员的方式哪个是正确的( )
- A.对象名.对象成员名
- B.对象指针名.对象成员名
- C.对象名->对象成员名
- D.类名->对象成员名
-
函数模板template void Func(T,T)可具有下列哪种实例化形式( )
- A.void Func(float, int)
- B.void Func(char, char)
- C.void Func(int, double)
- D.void Func(bool, float)
-
函数int & min(int &, int &)返回参数中较小者,设有两整型变量int a=10; int b=15;在执行语句min(a, b)--; 之后,a,b值分别为( )
- A.9,14
- B.9,15
- C.10,14
- D.10,15
-
声明函数为内联函数时所使用的关键字为( )
- A.const
- B.inline
- C.short
- D.signed
-
C++类中定义的成员默认访问属性为( )
- A.public
- B.private
- C.protected
- D.friend
-
决定C++语言中函数的返回值类型的是( )
- A.return语句中的表达式类型
- B.调用该函数时系统随机产生的类型
- C.调用该函数时的主调用函数类型
- D.在定义该函数时所指定的数据类型
-
从本质上看,引用是被引用变量的( )
- A.拷贝
- B.别名
- C.复制
- D.克隆
-
下面关于数组的初始化正确的是( )
- A.char str[ ]={'a','b','c'};
- B.char str[2]={'a','b','c'};
- C.char str[1][2]={{'a','b'},{'e','d'}};
- D.char str[ ][ ]={'a','b','c'};
-
无类型标识符是指( )
- A.void
- B.bool
- C.short
- D.long
-
用于包含C++标准库iostream的预处理指令是( )
- A.#define
- B.#include
- C.#define 'iostream'
- D.#include 'iostream'
-
调用声明为int result(int a, int b)的函数时,正确的方法是( )
- A.result(1, 2)
- B.result(1)
- C.result(0.1, 0.3)
- D.result(1, 2, 3)
-
对C++中主函数描述正确的是( )
- A.名称为main,可为多个
- B.名称不限,可为多个
- C.名称为main,必须有且只能有一个
- D.名称不限,必须有且只能有一个