C++期末考试题及答案文档格式.doc
- 文档编号:13089383
- 上传时间:2022-10-04
- 格式:DOC
- 页数:15
- 大小:75KB
C++期末考试题及答案文档格式.doc
《C++期末考试题及答案文档格式.doc》由会员分享,可在线阅读,更多相关《C++期末考试题及答案文档格式.doc(15页珍藏版)》请在冰豆网上搜索。
b==c"
的值是0。
(以下每小题2分,共20分)
11.面向对象的程序设计有四大特征,它们是抽象、封装、继承、多态。
12.在VisualC++中,定义重载函数时,应至少使重载函数的参数个数或参数类型不同;
在基类和派生类中,成员函数的覆盖是指派生类成员函数与在基类被覆盖的成员函数名、参数个数、参数类型和返回值类型均相同。
13.构造函数与析构函数除功能不同外,在定义形式上,它们的区别还包括构造函数名与类名相同,而析构函数名是在类名前加一个~、析构函数没有参数、析构函数可以定义为虚函数。
14.动态联编要满足两个条件,它们是被调用的成员函数是虚函数、用指针或引用调用虚函数。
15.在C++类中,有一种不能定义对象的类,这样的类只能被继承,称之为抽象类,定义该类至少具有一个纯虚函数。
16.在C++类中,const关键字可以修饰对象和成员函数,const对象不能被修改,const成员函数不能修改类数据成员。
17.举出C++中两种用户自定义的数据类型:
类、枚举。
18.C++中没有字符串类型,字符串是通过字符数组来表示的,每一个字符串都有一个结尾字符\0。
19.C++中没有输入输出语句,输入输出是通过输入输出库实现的,写出一条打印整型变量n的输出语句:
cout<
<
n;
20.举出C++中两种代码复用的方式:
继承、复用。
1.单选:
10*2
2.简答:
4*5
3.程序分析:
5*8
4.程序设计:
2*10
考点:
(1)运算符重载
(2)文件IO流
(3)异常处理
(以下每小题4分,共20分)
21.下面程序的运行结果是 3 。
#include<
stdio.h>
voidmain()
{
chara='
a'
b='
j'
;
floatx;
x=(b-a)/('
F'
-'
A'
);
printf("
%d\n"
(int)(3.14*x));
}
22.下面程序的运行结果是2581114。
#include"
iostream.h"
voidmain()
inti=1;
while(i<
=15){
i++;
if(i%3!
=2)continue;
elsecout<
i="
i<
endl;
}
23.下面程序的运行结果是________。
classtest
private:
intnum;
floatfl;
public:
test();
intgetint(){returnnum;
}
floatgetfloat(){returnfl;
~test();
};
test:
:
test()
cout<
"
Initalizingdefault"
<
endl;
num=0;
fl=0.0;
~test()
Desdtructorisactive"
testarray[2];
array[1].getint()<
array[1].getfloat()<
Initalizingdefault
00
Desdtructorisactive
24.下面程序的运行结果是________。
iostream.h>
classA
A(){cout<
A:
A()called.\n"
virtual~A(){cout<
~A()called.\n"
classB:
publicA
B(inti){
cout<
B:
B()called.\n"
buf=newchar[i];
virtual~B()
{
delete[]buf;
cout<
~B()called.\n"
char*buf;
voidfun(A*a)
deletea;
A*a=newB(15);
fun(a);
A:
A()called.
B:
B()called.
~B()called.
~A()called.
25.下面程序的运行结果是________。
inta[]={1,3,5,7,9};
int*p[]={a,a+1,a+2,a+3,a+4};
%d\t%d\t%d\n"
a[4],*(a+2),*p[1]);
**(p+1)+a[2],*(p+4)-*(p+0),*(a+3)%a[4]);
953
847
二、问答题(每小题5分,共20分)
1.若程序员没有定义拷贝构造函数,则编译器自动生成一个缺省的拷贝构造函数,它可能会产生什么问题?
解答要点:
当对象含有指针数据成员,并用它初始化同类型的另一个对象时,缺省的拷贝构造函数只能将该对象的数据成员复制给另一个对象,而不能将该对象中指针所指向的内存单元也复制过去。
这样,就可能出现同一内存单元释放两次,导致程序运行出错。
2.简述成员函数、全局函数和友元函数的差别。
解答要点:
以下几点必须说清楚:
成员函数是在类内部定义的,作用域在类的内部,成员函数可以访问类的数据成员(公有、保护和私有数据成员),可以调用该类的其它成员函数(公有、保护和私有成员函数),可以调用全局函数。
如果友元函数是另一个类的公有成员函数,则该类的成员函数也只能通过那个类的对象调用,不能调用那个类的保护和私有成员函数。
非本类成员函数(其它类成员函数或全局函数)可以通过该类的对象访问该类的公有数据成员和调用该类的的公有成员函数。
不是在类中定义的成员函数都是全局函数。
如果某一个函数(全局函数或类的成员函数)定义为另一个类的友元函数,需要在那个类中用friend关键字声明,友元函数并不是类的成员,它的定义自然是在那个类的外面。
3.简述结构化的程序设计、面向对象的程序设计的基本思想。
结构化的程序设计将数据和对数据的操作分离,程序是由一个个的函数组成的,面向对象的程序设计将数据和操作封装在一起,程序是由一个个对象组成的,对象之间通过接口进行通信,它能够较好地支持程序代码的复用。
4.结构struct和类class有什么异同?
struct和class都可以定义类,但是缺省访问权限说明时,struct的成员是公有的,而class的成员是私有的。
在C++中,struct可被class代替。
三、找出下面程序(或程序段)中的语法错误,并予以纠正(每小题4分,共8分)
(1)程序功能是倒序输出各给定的字符串。
charstr[5][]={"
First"
"
Second"
Third"
Forth"
Fifth"
};
char*cp[]={str[4],str[3],str[2],str[1],str[0]};
inti;
while(i<
=5)
printf("
%c"
*(cp+i));
①"
charstr[5][]={"
应为
"
charstr[5][10]={"
②"
while(i<
=5)"
应为"
5)"
③"
printf("
%s"
④"
inti;
inti=0;
(2)程序功能是将各个平方根值放入数组中。
intmax,a,i;
scanf("
%d%d"
max,a);
doublex[max];
for(i=0;
max;
i++)
x[i]=sqrt(a*i);
①增加"
#include<
math.h>
scanf("
&
max,&
a);
doublex[max];
改为:
"
double*x=newdouble[max];
…
delete[]x;
四、(8分)下列shape类是一个表示形状的抽象类,area()为求图形面积的函数,total()则是一个通用的用以求不同形状的图形面积总和的函数。
请从shape类派生三角形类(triangle)、矩形类(rectangle),并给出具体的求面积函数
classshape{
public:
virtualfloatarea()=0;
};
floattotal(shape*s[],intn)
{
floatsum=0.0;
for(inti=0;
sum+=s[i]->
area();
returnsum;
classTriangle:
publicShape
Triangle(doubleh,d
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 期末 考试题 答案
![提示](https://static.bdocx.com/images/bang_tan.gif)