C++试题及答案

 一、 选择题(每小题1.5分,合计25分)
1、 C++对C语言作了很多改进,下列描述中( )使得C语言发生了质变,从面向过程变成了面向对象。
A、增加了一些新的运算符; B、允许函数重载,并允许设置缺省参数;
C、规定函数说明必须用原型; D、引进了类和对象的概念;
2、 所谓数据封装就是将一组数据和与这组数据有关操作组装在一起,形成一个实体,这实体也就是( )。
A.类 B.对象 C.函数体 D.数据块
3、 关于new运算符的下列描述中,( )是错误的。
A、 它可以用来动态创建对象和对象数组;
B、使用它创建的对象或对象数组可以使用运算符delete删除;
C、使用它创建对象时要调用构造函数;
D、使用它创建对象数组时必须指定初始值;
4、 ( )不是构造函数的特征。
A、构造函数的函数名与类名相同;  B、构造函数可以重载;
C、构造函数可以设置缺省参数;  D、构造函数必须指定类型说明。
5、 假定一个类的构造函数为B(int x,int y){a=x--;b=a*y--;},则执行B x(3,5); 语句后,x.a和x.b的值分别为( ) 
A、 3和5 B、 5和3 C、 3和15 D、20和5
6、 关于成员函数特征的下列描述中,( )是错误的。
A、成员函数一定是内联函数; B、成员函数可以重载;
C、成员函数可以设置缺省参数值;  D、成员函数可以是静态的;
7、 在公有继承的情况下,基类成员在派生类中的访问权限( )。 
A.受限制 B.保持不变 C.受保护 D.不受保护
8、 友元的作用是( )。
A、提高程序的运用效率;  B、加强类的封装性;
C、实现数据的隐藏性;  D、增加成员函数的种类;
9、 在C++中,关于下列设置缺省参数值的描述中,( )是正确的。
A、不允许设置缺省参数值;
B、在指定了缺省值的参数右边,不能出现没有指定缺省值的参数;
C、只能在函数的定义性声明中指定参数的缺省值;
D、设置缺省参数值时,必须全部都设置;
10、关于delete运算符的下列描述中,( )是错误的。
A、它必须用于new返回的指针;
B、使用它删除对象时要调用析构函数;
C、对一个指针可以使用多次该运算符;
D、指针名前只有一对方括号符号,不管所删除数组的维数。
11、const int *p说明不能修改( )。
A、p指针;   B、p指针指向的变量;
C、p指针指向的数据类型;D、上述A、B、C三者;
12、当需要打开A盘上的以xxk.dat文件用于输入时,则定义文件流对象的语句为 ( )。
A.fstream fin(“A:xxk.dat”,1) B.ifstream fin(“A:xxk.dat”,ios::nocreate)
C.ofstream fin(“A:xxk.dat”) D.ifstream fin(“A:xxk.dat”,ios::app)
13、派生类的对象对它的基类成员中( )是可以访问的。
A、公有继承的公有成员;  B、公有继承的私有成员;
C、公有继承的保护成员; D、私有继承的公有成员;
14、假定一个字符串的长度为n,则定义存储该字符串的字符数组的长度至少为()。A.n-1 B.n C. n+1 D.n+2
15、 在int a=3; *p=&a;中,*p的值是( )。
A、变量a的地址值 B、无意义 C、变量p的地址值 D、 3
16、 下列常量中,( )不是字符常量。
A、’\005’ B、’\n’ C、 ’c’ D、“a”
二、 填空题(每小题1.5分,合计15分)
1、 当建立 【1】 ,程序自动调用该类的构造函数。
2、 在C++中有二种参数传递方式: 【1】 和【2】 。
3、 模板对处理数据的类型的要求不同可以分为两种类型: 【3】 和 【4】 。
4、 异常是通过【5】 、【6】 和【7】 来实现的。
5、 虚函数实现了C++的【8】 机制,类实现了C++的【9】 机制。
6、 面向对象程序设计的 【10】机制提供了重复利用程序资源的一种途径。
三、指出函数或程序的功能。(每小题5分,合计10分)
1、 template <class Type>
void AC(Type &x , Type &y ) 
{
Type a=x;
x=y ;
y=a ; 
}
2、int AB(int *a , int n)
{
int x=a[0];
for (int i=1; i<n; i++)
if (a[i]<x) x=a[i];
return x;

四、给出下列程序的运行结果。(每小题5分,合计20分)
1、# include <iostream.h>
class A {
int a , b ;
public :
A( ) { a=b=0; }
A( int aa , int bb ) : a(aa),b(bb) {
cout <<”a=”<<a<<”,”<<”b=”<<b<<endl;
}
~A( ){cout <<”Destructor!”<<endl; }
};
void main() {
A x , y(2 , 3);
}
2、 # include <iostream.h>
int AD(int a[] , int n) {
int x=1;
for (int i=0; i<n; i++)
x*=a[i];
return x;
}
void main() {
int a[]={ 2, 8, 6, 5};
cout <<AD(a , 4)<<endl;
}


3、#include <iostream.h>
class R
{
public:
R(int r1,int r2) {R1=r1;R2=r2;}
void print();
void print() const;
private:
int R1,R2;
};
void R::print()
{
cout<<R1<<":"<<R2<<endl;
}
void R::print() const
{
cout<<R1<<";"<<R2<<endl;
}
void main()
{
  R a(5,4); 
a.print();
const R b(20,52);
b.print();
}
4、#include <iostream.h>
class A
{
public:
virtual void act1();
void act2() {act1();}
};
void A::act1()
{
cout<<"A::act1() called. "<<endl;
}
class B : public A
{
public:
void act1();
};
void B::act1()
{
cout<<"B::act1() called. "<<endl;
}
void main()
{
B b;
b.act2();
}
五、程序填空(每空3分,合计6分)
1、 class A 
{
int * a;
int n;
public :
A(int nn=0):n(nn)
{
if (n==0) a=0;
else a= ; // 分配长度为n的动态数组
}
void Seta(int * aa)
{
for (int i=0; i<n; i++) a[i]=aa[i];
}
// 定义析构造函数,释放动态数组空间
};
六、编写函数或程序(每小题8分,合计24分)
1. 编写一个函数,实现两个数的交换。
2. 编写一个函数,返回三个整数形参中的最小值。
3. 编写一个类LEI,实现打印私有变量a的值


一、 选择题(每小题1.5分,合计25分)
1 D
2 A
3 D
4 D
5 C
6 A 
7 B 
8 D 
9 B 
10、B
11、B
12、A
13、A
14、C
15、D
16 D 
二、 填空题(每小题1.5分,合计15分)
1、 【1】对象
2、 【1】传值 【2】传址
3、 【3】函数模版 【4】类模版
4、 【5】try【6】throw【7】catch
5、 【8】多态【9】封装
6、 【10】继承
三、指出函数或程序的功能。
1、 建立函数模版
2、找最小值
四、给出下列程序的运行结果。(每小题5分,合计20分)
1
a=2,b=3
Destructor!
Destructor!

480


3、
5:4
20;52


4、
B::act1( ) called.


五、程序填空(每空3分,合计6分)
1、 
new int[nn]
~A( ) { delete a; }


六、编写函数或程序(每小题8分,合计24分)
1. 编写一个函数,实现两个数的交换。


void f(int *a,int *b)
{
int t;
t=*a;
*a=*b;
*b=t;
}


2. 编写一个函数,返回三个整数形参中的最小值。


int f(int a,int b,int c)
{
int m=a;
if(m>b)
m=b;
if(m>c)
m=c;
return m;
}


3. 编写一个类LEI,实现打印私有变量a的值
#include<iostream.h>
class LEI
{
int a;
public:
void print()
{
cout<<a;
}
};


C++课后习题及答案 一、 选择填空 1. 下列各种高级语言中,( )是面向对象的程序设计语言。 A.BASIC; B.PASCAL; C.C++ D.Ada 2. 下列各种高级语言中,( )是最早提出了对象的概念。 A.Algol 60; B.Simula 67; C.Smalltalk; D.C++ 3. 下述面向对象抽象的原理中,( )是不对的。 A. 数据抽象; B. 行为共享; C.进化; D. 兼容; 4. ( )不是面向对象系统所包含的要数。 A. 重载; B. 对象; C. 类; D. 继承; 5. 关于C++与C语言的关系的描述中,( )是错误的。 A. C语言是C++的一个子集; B. C语言与C++是兼容的; C. C++对C语言进行了一些改进; D. C++和C语言都是面向对象的; 6. 下面关于对象概念的描述中,( )是错误的。 A.对象就是C语言中的结构变量; B.对象代表着正在创建的系统中的一个实体; C. 对象是一个状态和操作(或方法)的封装体; D.对象之间的信息传递是通过消息进行的; 7. 下面关于类概念的描述中,( )是错误的。 A.类是抽象数据类型的实现; B.类是具有共同行为的若干对象的统一描述体; C.类是创建对象的样板; D.类就是C语言中的结构类型; 8. C++对C语言作了很多改进,下列描述中( )使得C语言发生了质变,即从面向过程变成为面向对象。 A.增加了一些新的运算符; B.允许函数重载,并允许设置缺省参数; C.规定函数说明必须用原型; D.引进了类和对象的概念; 9. 按照标识符的要求,( )符号不能组成标识符。 A.连接符; B. 下划线; C.大小写字母; D.数字字符; 10. 下列符号中,( )不可作为分隔符。 A.,; B.:;C.?; D.;
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值