自考C++程序设计2012年10月试题及答案解析
-
设计一个Bank类,实现银行某账号的资金往来账目管理,包括建账号、存入、取出等。解:Bank类包括私有数据成员top(当前账指针),date(日期),money(金额),rest(余额)和sum(累计余额)。有三个成员函数bankin( )(处理存入账),bankout( )(处理取出账)和disp( )(输出明细账)请完成函数的实现。 本题程序如下: #include ﹤stdio.h﹥
#include ﹤string.h﹥
#define Max 100
class Bank
{
int top;
char date[Max][10]; //日期
int money[Max]; //金额
int rest[Max]; //余额
static int sum; //累计余额
public:
Bank( ){top=0;}
void bankin(char d[ ],int m){…}
void bankout(char d[ ],int m){…}
void disp( ){…};
} ;
-
写出此程序的执行结果:
#include ﹤iostream.h﹥
template﹤class T﹥
T func(T x,T y){
if(sizeof(T)==8)
return x+y;
else
return x*y;
}
void main( ){
cout ﹤﹤func(8,5)﹤﹤":"﹤﹤func(5.0,10.0)﹤﹤endl;
int d; cin﹥﹥d;
}
-
下面程序中A是抽象类,其输出是什么?
#include ﹤iostream.h﹥
class A{
public:
virtual void printMe( ){cout﹤﹤"This is class A printing. "﹤﹤endl;};
} ;
class B: public A{
public:
void printMe( ) {cout ﹤﹤ "This is class B printing. "﹤﹤endl;}
} ;
class C: public B{
public:
void printMe( ) {cout ﹤﹤"This is class C printing. "﹤﹤endl;}
} ;
void print(A a)
{
a.printMe( );
}
void main( )
{
B b;
C c;
print(b); print(c);
}
-
在下面程序中的横线处填上适当内容,使程序完整
#include﹤iostream.h﹥
_________
class A
{
int i;
public:
int set(B&);
int get( ){return i;}
A(int x){i=x;}
} ;
class B
{
int i;
public:
B(int x){i=x;}
_________ A;
} ;
int A:: set(B&b)
{
return i=b.i;
}
void main( )
{
A a(1);
B b(2);
cout﹤﹤a.get( )﹤﹤",";
a.set(b);
cout﹤﹤a.get( )﹤﹤endl;
}
-
在下面程序横线处填上适当内容,使程序执行结果为: n=2,sum=2 n=3,sum=5 n=5,sum=10 程序如下:
#include ﹤iostream.h﹥
class Test
{
int n;
static int sum;
public:
Test(int x){n=x;}
void add( ){_________;}
void disp( )
{
cout﹤﹤{"n="﹤﹤n﹤﹤",sum="﹤﹤sum﹤﹤endl;
}
} ;
int _________=0;
void main( )
{
Test a(2),b(3),c(5);
a.add( );
a.disp( );
b.add( );
b.disp( );
c.add( );
c.disp( );
}
-
在下面程序横线处填上适当内容,使程序执行结果为: n=30 程序如下: #include ﹤iostream.h﹥
template ﹤class T﹥
class Test
{
T n;
public:
Test( ){ }
Test(T i){n=i;}
Test﹤T﹥_________(const Test﹤T﹥&s)
{
static Test﹤T﹥temp;
_________;
return temp;
}
void disp( ){cout﹤﹤"n="﹤﹤n﹤﹤endl;}
} ;
void main( )
{
Test ﹤int﹥t1(4),t2(5),t3;
t3=t1+t2;
t3.disp( );
}
-
在下面程序横线处填上适当内容,使程序执行结果为:40:15 程序如下: #include ﹤iostream.h﹥
template ﹤class T﹥
T func(T x,T y){
if(sizeof(T)==8)
return _________;
else
return _________;
}
void main( ){
cout ﹤﹤func(8, 5)﹤﹤":"﹤﹤func(5.0, 10.0)﹤﹤endl;
int d; cin ﹥﹥d;
}
-
在下面程序横线处填上适当内容,使程序执行结果为: x=0,y=0 x=1,y=2 x=10,y=20 程序如下:
#include ﹤iostream.h﹥
class Sample
{
int x, y;
public:
Sample( ){_________}
Sample(_________){x=a;y=b;}
void disp( )
{
cout﹤﹤"x="﹤﹤x﹤﹤",y="﹤﹤y﹤﹤endl;
}
};
void main( )
{
Sample s1, s2(1, 2), s3(10, 20);
Sample *pa[3]={&s1, &s2, &s3};
for(int i=0;i﹤3;i++)
pa[i]-﹥disp( );
}
-
#include﹤iostream.h﹥
class Student{
int x=0,y=0;
public:
Student( ){
x=1; y=1;
}
Student(int a,int b){
x=a;
y=b;
}
void get( ){
cout﹤﹤x﹤﹤" "﹤﹤y﹤﹤endl;
}
} ;
int main( ){
Student student(5,6);
student.get( );
}
-
#include ﹤iostream.h﹥
class Base{
public:virtual void fun( )=0;
} ;
class Test:public Base{
public:virtual void fun( ){cout﹤﹤"Test.fun="﹤﹤endl;}
} ;
void main( ){
Base a;
Test *p; p=&a;
}
-
#include﹤iostream.h﹥
class People{
public:
void People( ){ }
const int age( )const{return 15;}
char * name( ){return"Green";}
} ;
void main( )
{
const People s;
int i=s.age( );
cout﹤﹤"age="﹤﹤i﹤endl;
}
-
#include﹤iostream.h﹥
class A{
public: void show( ){cout﹤﹤"class A show"﹤﹤endl;}
} ;
class B{
public: void show( ){cout﹤﹤"class B show"﹤﹤endl;}
} ;
class C: public A,public B{
public: void print( ){cout﹤﹤"class C print"﹤﹤endl;}
} ;
void main( ){
C c;
c.show( );
c.print( );
}
-
#include ﹤iostream.h﹥
template ﹤class T﹥
T minx(T x,T y){
if(x﹥y)
x=y;
return x;
}
void main( )
{
int a;
double d;
cout﹤﹤minx(a,d)﹤﹤endl;
}
-
一旦基类定义了虚函数,该基类的派生类中的_________也自动成为虚函数。
-
在C++类中,有一种类不能生成对象只能被继承,称之为_________。
-
拷贝构造函数使用_________作为参数初始化创建中的对象。
-
假定类A有一个公有属性的静态数据成员b,在类外不通过对象名访问b的写法是_________。
-
执行cout﹤﹤char('a'+2)﹤﹤endl; 后的显示结果为_________。
-
简单成员函数是指声明中不含const,volatile,_________关键字的函数。
-
在删除一个动态对象时,将自动调用该动态对象所属类的_________函数。
-
C++中函数参数有两种传递方式:传值和_________。
-
在C++当中,类外的函数只能通过类的对象使用该类的_________。
-
C++标准库string类中用于在主串中检索所需字符串的成员函数是_________。
-
C++面向对象程序设计的特点为:抽象,封装,继承和_________。
-
如果一个函数直接或间接地调用自身,这样的调用称为_________调用。
-
C++的类成员由数据成员和_________组成。
-
使用C++编译器对C++源程序进行编译产生文件的扩展名是_________。
-
常量成员包括常量数据成员,静态常数成员,和_________。
-
通过C++语言中的_________机制,可以从现存类中构建其子类。
-
执行代码double pi=3.141592;cout﹤﹤pi; 程序的输出结果是_________。
-
在文件输入流类中,用于判断提取操作是否已达到文件尾的方法是_________。
-
类所声明的内容用_________括起来,之间的内容称为类体。
-
在int a=3, *p=&a; 中,*p的值是( )
- A.变量a的地址值
- B.无意义
- C.变量p的地址值
- D.3
-
默认参数是在_________中说明的,默认参数可以多于1个,但是必须放在参数序列的后部。
-
对指针动态分配空间用的关键字是( )
- A.define
- B.int
- C.new
- D.float
-
一个函数功能不太复杂,但要求被频繁调用,应选用( )
- A.内联函数
- B.重载函数
- C.递归函数
- D.嵌套函数
-
可用作C++语言用户标识符的一组标识符是( )
- A.void,define,+WORD
- B.a3_b3,_123,YN
- C.for,-abc,Case
- D.2a,DO,sizeof
-
关于对象性质,下列描述错误的是( )
- A.同一类对象之间不可相互赋值
- B.可以使用对象数组
- C.对象可以用作函数参数
- D.一个对象可以用作另一个类的成员
-
设函数int& index(int a,int i)返回数组a中下标为i的元素,如果在整型数组int array[ ]={1,2,3},在执行index(array, 1)+=3后,array中各元素值为( )
- A.{4,2,3}
- B.{1,5,3}
- C.{1,2,6}
- D.{4,5,6}
-
对函数int saveName(char * first, char * sec=" ",char * thd=" ")下列调用方法不正确的是( )
- A.int s=saveName("1","2","3");
- B.int s=saveName("1","2");
- C.int s=saveName("1");
- D.int s=saveName("1",,"3");
-
下列哪个不是函数重载需要满足的条件( )
- A.返回值类型不同
- B.参数个数不同
- C.参数个数相同时,参数类型不同
- D.函数名相同
-
设存在数组a,其长度为Len,则下列哪个泛型算法用于对a进行升幂排序( )
- A.reverse(a, a+Len);
- B.sort(a, a+Len);
- C.find(a, a+Len, value);
- D.copy(a, a+Len, b);
-
设类A中包含若干其他类的对象作为成员,则在定义类A的构造函数时,应使用下列哪个符号将A:: A(参数表)与成员初始化列表隔开( )
- A.,
- B.;
- C.:
- D..
-
函数int sum(int a=10, int b=15, int c=25);不可与下列哪个函数同时声明( )
- A.int sum(int, int, int, int)
- B.int sum(int, int, int)
- C.int sum(double)
- D.int sum(double, double, double);
-
在派生中,访问控制方式没有下列哪种( )
- A.publish
- B.public
- C.protected
- D.private
-
采用重载函数的目的是( )
- A.实现共享
- B.减少空间
- C.提高速度
- D.使用方便,提高可读性
-
类不是内存中的物理实体,只有当使用类产生对象时,才进行内存分配,这种对象建立的过程称为( )
- A.程序化
- B.结构化
- C.过程化
- D.实例化
-
下列关于类的权限描述错误的是( )
- A.类本身的成员函数可以访问自己定义的任何成员
- B.类的对象只能访问公有成员
- C.普通函数只能通过对象访问类的公有成员
- D.一个类不能包含另一个类的对象作为成员
-
对于类中的成员,使用protected修饰,表明该成员的访问权限是( )
- A.公有的
- B.私有的
- C.保护的
- D.不可见的
-
运算符:: 叫做( )
- A.下标运算符
- B.自增运算符
- C.成员访问运算符
- D.作用域运算符
-
如果为一个类定义了自己的构造函数,下列描述正确的是( )
- A.系统不再提供默认构造函数,但提供其他构造函数
- B.系统提供其他非默认构造函数
- C.系统不再提供默认构造函数
- D.系统仍提供默认构造函数
-
下列表达式,哪一是声明p为指向常量的指针( )
- A.const int *p;
- B.int* const p;
- C.const int *const p;
- D.int *p;
-
使用下列哪一限定符可强制改变访问方式( )
- A.const
- B.short
- C.long
- D.signed