青岛理工大学成人教育期末考试 复习题2及答案.doc

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、单项选择题(在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号内。


1.C++对C语言作了很多改进,即从面向过程变成为面向对象的主要原因是()
A.增加了一些新的运算符
B.允许函数重载,并允许设置缺省参数
C.规定函数说明符必须用原型
D.引进了类和对象的概念
2•下列符号不能组成标识符的是()
A.连接符
B.下划线
C.大小写字母
D.数字字符
3.类型修饰符unsigned不能修饰()
A.char
B. int
C. long int
D. float
4.在int a=3,int *p=&a;中,*p 的值是()
A.变量a的地址值
B.无意义
C.变量p的地址值
D.3
5•下列关于指针的操作中,错误的是()
A.两个同类型的指针可以进行比较运算
B.可以用一个空指针赋给某个指针
C.一个指针可以加上两个整数之差
D.两个同类型的指针可以相加
6•重载函数在调用时选择的依据中,错误的是()
A.函数的参数
B.参数的类型
C.函数的名字
D.函数的类型
7.—个函数功能不太复杂,但要求被频繁调用,选用()
A.内联函数
B.重载函数
C.递归函数
D.嵌套函数
8•下列不是描述类的成员函数的是()
A.构造函数
B.析构函数
C.友元函数
D.拷贝构造函数
9.构造函数不具备的特征的是()
A.构造函数的函数名与类名相同
B.构造函数可以重载
C.构造函数可以设置默认参数
D.构造函数必须指定类型说明
10.通常,拷贝构造函数的参数是()
A.某个对象名
B.某个对象的成员名
C.某个对象的引用名
D.某个对象的指针名
11•继承机制的作用是()
A.信息隐藏
B.数据封装
C.定义新类
D.数据抽象
12.类的析构函数的作用是()
A.—般成员函数
B.类的初始化
C.对象的初始化
D.删除对象创建的所有对象
13•类的析构函数是在()调用的。

A.类创建时
B.创建对象时
C.删除对象时
D.不自动调用
14.在()情况下适宜采用inline定义内联函数。

A.函数体含有循环语句
B.函数体含有递归语句
C.函数代码少、频繁调用
D.函数代码多、不常调用
15•如果类A被说明成类B的友元,贝!]()
A.类A的成员即类:B的成员
B.类B的成员即类A的成员
C.类A的成员函数不得访问类:B的成员
D.类B不一定是类A的友元
16•在类中声明转换函数时不能指定()
A.参数
B.访问权限
C.操作
D.标识符
17•在公有继承的情况下,基类成员在派生类中的访问权限()A.受限制 B.保持不变
18.C++类体系中,不能被派生类继承的有()
A.转换函数
B.构造函数
C.虚函数
D.静态成员函数
19•假定AB为一个类,则执行ABx;语句时将自动调用该类的() A.有参构造函数 B.无参构造函数
C.拷贝构造函数
D.赋值构造函数
20.C++语言建立类族是通过()
A.类的嵌套
B.类的继承
C.虚函数
D.抽象类
答案如下:
l. D 2.A 3.D 4.D 5.D6.A 7.A &C 9.D 10.C11.C 12.C 13.D 14.C 15.D16.C
17.B 18.C 19.B 20.B
二•下面的每小题有一个或多个答案是正确的,请选出正确选项并将其填入相应括号内。

1.C++的特点是()
A.是机构化的程序设计语言
B.C的类型检查机制相对较强
C.可以部分地取代汇编语言
D.具有较强的可移植性
2.下面说法正确的是()
A.所有的函数都可以说明内联函数
B.具有循环语句switch语句的函数不能说明为内联函数
C.使用内联函数可以加快程序执行的速度,但会增加程序代码的大小
D.使用内联函数可以减小程序代码大小,但使程序的执行速度减慢
3.C++中封装可以由下列哪些关键字提供()
A. struct
B. union
C.class
D.type
4•下面有关类的说法正确的是()
A.—个类可以有多个构造函数
B.—个类只有一个析构函数
C.析构函数不能被指定参数
7.ABC
D. 在一个类中可以说明具有类型的数据成员
5•有关析构函数说法正确的是()
A. 析构函数在对象生存期结束时被自动调用
B. 析构函数名与类名相同
C. 定义析构函数时可以指定返回类行为void
D. 析构函数不能指定参数
6•简单成员函数的声明一般不含哪些关键字?()
A.const
B. static
C.void
D. volatile
7•—个类的友员函数可以访问该类的所有对象的()
A.公有成员
B.私有成员
C.保护成员
D.静态成员
8. 下列哪些算子不能被重载?()
A. B « C:: D ?:
9函数(a,ios:adjustif:led)中的值可以是()
A.ios::left
B.ios::right
C.ios::hec
D.ios::oct
10•下列术语等价的是()
A. "函数模板"与"模板实例"
B. "模板函数”与”模板实例"
C. ”类模板”与重载函数模板”
D. 特定模板函数"与替换模板函数"
答案:l.ABC 2.BC 3.ABC 4.ABCD 5.AD 6.ABD
& ACD 9.AB 10.ABD
三.程序填空
1•请将下面求平均值的程序补充完整:
# include <iostream.h>
_________________ (# define MAX 5)
class AvClass
{ private:
float darray [MAX];
public:
void setarray();
float getaval();
}; -
void AvClass:: setarray()
(int n, float f) (fl 二 f ;) (test& t) (t.num)
{ int i ;
for(i=0;i<MAX;i++)
{ cout«"NO."«i+K<":";
_____________________ (cin»darray [i];)
}
}
float AvClass:: getaval()
{ int i; 「
float sum=0;
for(i=0;i<MAX;i++) ______ (sum += darray[i];) return sum/MAX; }
//
void main()
{ AsClass MyData; 〃定义对象
MyData.setarray(); 〃录入数据
Cout« "The average value is:"« ________________________ «endl; (MyData. getaval() 〃输出结果
}
2完成下面类中的成员函数的定义。

Class test
{ private:
int num; float fl;
public:
test(int,float f); test(test&)
};
test::test(
) { num = n;
=f ; }
test::test(
) { num=
;
fl 二t.fl; 四、给出下列程序运行后的输出结果.
1 .#include <iostream.h>
#include <stdlib.h>
double SD(int a,int b,char op){ double x;
switch(op){
casex=double(a)+b;break;
casex=double(a)-b;break;
case x=double(a)*b;break;
case 7': if(b) x=double(a)/b;
else exit(l);
break; default:exit(l);
}
return x;
}
void main(){
int x=20,y=5;
cout«SD(x,y,'+')«'
cout«SD(x,y,'*')«'
cout«SD(x-y,y,'/')«endl;
输出结果:
25 100 3
2.#include<iostream.h>
# include<string.h>
void main(){
char *a[3]={"student","worker","cadre","soldier","apen"};
char *pl,*p2;
pl=p2=a[0];
for(int i=0;i<5;i++)
{
if(strcmp(a[i] ,p l)>0)p 1 =a[i];
if(strcmp(a[i] ,p2)<0)p2=a[i];
}
cout«pl«' '«p2«endl;}
程序的输出结果是:
worker apen
3.#include <iostream.h>
void WF(int x,int y){
x=x+y;
y=x+y;
cout«"subs:"«"x,y="«x«","«y«endl;
void main(){
int x=8,y=15;
cout«"main:"«"x,y="«x«","«y«endl;
WF(x,y);
x=2*x; cout«"main:"«"x,y="«x«","«y«endl; } 程序运行结果:
main:x,y=&15
subs:x,y=23,38
main:x,y=16,15
4.#include <iomanip.h>
void LG(int * &a,int& m){
a=new int[m];
int *p=a;
for(int i=0;i<m;i++)
*p++=i*i+l;
}
void main(){
int *b,n=5;
LG(b,n);
for(int i=O;i<n;i++)
cout«b[i]«'
cout«endl;
delete []b;
}
程序运行结果:
1 25 10 17
5.#include<iostream.h>
int AB(int *a,int n){
int j=0;
for(int i=0;i<n;i++)
j+=*a++;
return j;}
void main(){
inta[]={8,7,6,5,4,3,2,l};
int b=AB(a,5)+AB(&a[3],3); cout«"b="«sum«endl; }
程序的输出结果是:
b=42
6.#include <iostream.h>
void LC(int a,int b){
int x=a;
a=b;b=x;
cout«a«' '«b«endl;
}
void main(){
int x=10,y=25;
LC(x,y);cout«x«' '«y«endl;
}
程序运行结果:
25 10
10 25
五•判断题
l.char*const p表明p是一个指针,它只能指向一个字符串常量。

() 2•因为类的目的是封装代码和数据,所以它不允许定义类体为空的类。

()
3.判断下面程序是否正确()
class myClass;
my Class objA;
my Class *objptr;
void fun(myClass obj);
class my Class {
private: int i=0;
};
my Class objB;
4•对对象成员的构造函数的调用顺序,取决于这些对象成员在成
员初始化列表中的顺序。

()
5•保护成员具有私有成员和公有成员的双重角色:对派生类的成
员函数而言,它是公有成员,可以被
访问;而对其他函数而言则仍是私有成员不能被访问。

()
6•构造函数(包括析构函数)也被继承,一个派生类不能调用它的直接基类的构造函数。

()
7•—个类中的虚函数说明只对基类中的同名函数有影响,对它的派生类中重定义的函数并没有影响()
8•一个抽象函数只能作为基类来派生新类,不能说明抽象类的对象,但是可以说明指向抽象类对象的指针
(和引用)。

()
9•构造函数和析构函数均不能被说明为虚函数。

()
10 •引用性说明所说明的类名不能用来建立对象,只能用来说明指针或引用,或用在函数说明中。

()
六简答题
1.类和结构什么区别?
2.C++中有几种继承,它们的区别是什么?
答案:
1.错误因为char*const p表明指针p本身是常量,即p指向一个固定的char类型的地址,而p的内容
却是可以修改的。

2 •错误尽管类的目的是装代码和数据,但它的类体中也可以不
包括任何声明(即为空)。

3•错误"myClass objA;”错了,引用性说明所说明的类名不能用来
建立对象!"inti=0;"也错了,
不能在类说明中对数据成员使用表达式进行初始化。

4•错误对对象成员的构造函数的调用顺序,取决于这些对象成员在类中说明的顺序。

5.正确
6•错误构造函数(包括析构函数)是不被继承的,所以一个派生类只能调用它的直接基类的构造函数。

7•错误一个类中的虚函数说明只对派生类中重定义的函数有影响,对基类中的同名函数没有有影响。

8.正确
9•错误构造函数不能被说明为虚函数,但析构函数可以。

1 0 .正确六简答题:
1 •结构是类的一种特例,早结构中也可以定义成员函数。

结构和类唯一的区别是:在缺省情况下,结构中的所有成员都是公有的,而在类中是私有的。

2.C++中有两种继承,一种是单一继承,另外一种是多重继承。

对于单一继承,派生类只能有一个基类;对于多重继承,派生类可以有多个基类。

相关文档
最新文档