c++期末考试真题_第1页
c++期末考试真题_第2页
c++期末考试真题_第3页
c++期末考试真题_第4页
c++期末考试真题_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、填空题1. 类是一组具有共同的 _属性 _ 特征和行为特征的对象的抽象。2. 在面向对象程序设计中,一个对象向另一个对象发出的请求被称为_消息 _ 。3. 用class作关键字进行类声明,默认的访问属性是private私有的)_4. 函数名重载是指同一作用域内的多个函数使用相同的函数名, 这些同名函数要从参数类型和参数个数 进行区分。5. 构造函数的作用是 _在创建对象时 对对象进行初始化 。6. 多重继承指一个派生类可以有 _多个基类 。7. 保护继承下,基类中所有公有成员在派生类中的访问属性是_保护的 。8. 假定要访问一个对象指针 p 所指对象中的 b 成员,则表示方法 _ p.b 。9

2、. 若需要把一个函数“ void F(); ”定义为一个类友元函数,则应在类AB的定 义中加入一条语句: friend void F(AB &)_。lO.Static成员函数与普通成员函数的区别是 静态成员函数没有this指针str; 执行时,从键盘输入:Microsoft Visual Studio 6.0!所得的结果是 str= ( B )。A. Microsoft Visual Studio 6.0!B. MicrosoftC. Microsoft VisualD. Microsoft Visual Studio 6.0 4、考虑下面的函数原型声明: void testDefaulPar

3、am(int a,int b=7,char z=*)。B. testDefaulParam(5,8);D. testDefaulParam(0,0,*);面函数调用中,不合法的是( CA. testDefaulParam(5);C. testDefaulParam(5,#);5、下列语句中,将函数int sum(int x, int y)正确重载的是(C )。编辑版 wordA. float sum(int x, int y);B. int sum(int a, int b);C. float sum(float x, float y);D. double sum(int y, int x);

4、6、下列表示引用的方法中, ( A)是正确的。已知: int a=1000;A. int &x=a; B. char &y; C. int &z=1000;D. float &t=&a;7、在一个函数中,要求通过函数来实现一种不太复杂的功能,并且要求加快执行 速度,选用( A )。A. 内联函数 B. 重载函数 C. 递归调用 D. 嵌套调用8、下列有关 C+ 类的说法中,不正确的是( D )。A. 类是一种用户自定义的数据类型B. 只有类中的成员函数或类的友元函数才能存取类中的私有成员C. 在类中,如果不做特别说明,所有成员的访问权限均为私有的D. 在类中,如果不做特别说明,所有成员的访问权

5、限均为公用的9、已知X类,贝U当程序执行到语句:X array3 时,调用了( D )次构造函数。A. 0B. 1C. 2D. 310、下面说法中,正确的是( B )A. 一个类只能定义一个构造函数,但可以定义多个析构函数B. 一个类只能定义一个析构函数,但可以定义多个构造函数C. 构造函数与析构函数同名,只要名字前加了一个求反符号( )D. 构造函数可以指定返回类型, 而析构函数不能指定任何返回类型, 即使是 void编辑版 word类型也不可以12、下面描述中,表达错误的是(B )A. 公用继承时基类中的public 成员在派生类中仍是 public 的B. 公用继承时基类中的privat

6、e 成员在派生类中仍是 private 的C. 公用继承时基类中的protected成员在派生类中仍是 protected的D. 私有继承时基类中的public成员在派生类中是private的14、下面( B )的叙述不符合赋值兼容规则。A. 派生类的对象可以赋值给基类的对象B. 基类的对象可以赋值给派生类的对象C. 派生类的对象可以初始化基类的对象D. 派生类的对象的地址可以赋值给指向基类的指针16、下面关于友元的描述中,错误的是(D )。A. 友元函数可以访问该类的私有数据成员B. 一个类的友元类中的成员函数都是这个类的友元函数C. 友元可以提高程序的运行效率D. 类与类之间的友元关系可以

7、继承17、下列关于静态数据成员的说法,不正确的是(C )。A. 类中定义的公用静态数据成员,可以通过类的对象来访问B. 类中定义的所有静态数据成员,都必须在类外初始化C. 静态数据成员不是所有对象所共用的D. 普通的成员函数可以直接访问类中的静态数据成员18、如果表达式+i*k中的“+”和“*”都是重载的友元运算符,若采用运算符函B )。B. operator*(operator+(i),k)D. k.operator*(operator+(i)C )。B. templatevclass T1, T2D. templatevclass T1; class T2不是类的成员函数C. 友元函数D.

8、复制构造函数后3个空,每空2分,共20分)数调用格式,则表达式还可以表示为(A. operator*(i.operator+(),k)C. i.operator+().operator*(k)19、下面对模板的声明,正确的是(A. templateC. templatevclass T1, class T220、 下列的各类函数中,(C )A.构造函数B.析构函数二、填空题(前14个空,每空1分,1、类和对象的关系可表述为:类是对象的抽象,而对象则是类的 实例2、静态成员函数没有隐含的this指针,所以,在C+程序中,静态成员函数主要用来访问静态数据成员,而不访问非静态成员。3、在图1中,A,

9、B,C,D,E,F均是类,其中属于单继承的派生类有E ,属于多继承的派生类有D、F,类F的基类有 A、B、C、D、E,类A的派生类有D、F。ABC图1类的继承层次图7、 若要把void fun()定义为类A的友元函数,则应在类A的定义中加入语句friend void fun(A&a)。8、 列出C+中的两种代码复用方式:继承 和组合或模板。9、 析构函数的作用是在对象被系统释放之前做一些内存清理工作。10、 假定A是一个类名,则该类的拷贝构造函数的原型说明语句为:A(constA&)。11、 后置自增运算符“+ ”重载为类的成员函数(设类名为A)的形式为:A operator+(int)。一、

10、单项选择题(每小题2分,共40分)1、关于C+与C语言关系的描述中,(D )是错误的。A . C语言是C+语言的一个子集B. C语言与C+语言是兼容的C. C+语言对C语言进行了一些改进D . C+语言和C语言都是面向对象的4、系统在调用重载函数时往往根据一些条件确定哪个重载函数被调用,在下列选 项中,不能作为依据的是(A )。A .函数的返回值类型B.参数的类型C.函数名称D .参数个数5、下列有关C+类的说法中,不正确的是( D )。编辑版wordA 类是一种用户自定义的数据类型B 只有类中的成员函数或类的友元函数才能存取类中的私有成员C.在类中,如果不做特别说明,所有成员的访问权限均为私

11、有的D 在类中,如果不做特别说明,所有成员的访问权限均为公用的7、 有关析构函数的说法,不正确的是(B )。A析构函数有且仅有一个B 析构函数和构造函数一样可以有形参C 析构函数的功能是在系统释放对象之前作一些内存清理工作D析构函数无任何函数类型8、 类定义的内容允许被其对象无限制地存取的是(C )。A . private部分 B. protected部分 C. public部分 D .以上都不对10、运用运算符delete删除一个动态对象时(C )。A .系统首先为该动态对象调用构造函数,再释放其占用的内存B .系统首先释放该动态对象占用的内存,再为其调用构造函数C.系统首先为该动态对象调用

12、析构函数,再释放其占用的内存D .系统首先释放动态对象占用的内存,再为其调用析构函数11、 可以在类外用p.a的形式访问派生类对象p的基类成员a,其中a( D )。A .私有继承的公用成员B.公用继承的私有成员C.公用继承的保护成员D .公用继承的公用成员12、在公用继承方式下,有关派生类对象和基类对象的关系,不正确的叙述是( C )。A .派生类的对象可以赋给基类的对象B .派生类的对象可以初始化基类的引用C.派生类的对象可以直接访问基类中的成员D .派生类的对象的地址可以赋给指向基类的指针18、 下列运算符中,(C)运算符在C+中不能被重载。A. &B. C. :D . new19、 模板

13、的使用实际上是将类模板实例化成一个(C )0A .函数B.对象C.类D .抽象类20、假定MyClasi为一个类,贝U该类的拷贝构造函数的声明语句为( C )。A . MyClass(MyClass x)B. MyClass&(MyClass x)C. MyClass(MyClass &x)D . MyClass(MyClass *x)二、填空题(前16个空,每空1分,后2个空,每空2分,共20分)1、 类和对象的关系可表述为:类是对象的抽象,而对象则是类的 实例。2、 在C+中,三种继承方式的说明符号为public 、private 和 protected,如果不加说明,则默认的继承方式为p

14、rivate _。5、 类的静态成员分为静态数据成员和静态成员函数。6、运算符重载要求保持其原来的操作数个数、 结合性、 优先级一和语法结构。7、 通过关键字template 可以声明模板,通过关键字class或type name)指定函数模板的类型参数,有几个类型参数就有几个类型关键字。8、列出C+中两种用户自定义的数据类型:结构体单项选择题(共20题,每题1分,共20分)1、 下列关于C+标识符的命名不合法的是(C)与C#一样A. PadB. name_1C. A#bcD. _a122、 若有以下类型标识符定义:int x=2 ; char w=a; float y=23.45f; dou

15、ble z=45.6712则表达式w*x+y-z的结果类型是(D)A. floatB. charC. i ntD. double&对重载函数形参的描述中,错误的是DA. 参数的个数可能不同B. 参数的类型可能不同C. 参数的顺序可能不同D. 参数的个数、类型、顺序都相同,只是函数的返回值类型不同7、以下能正确定义数组并正确赋初值的语句是DA. i nt N=5,bNN;B. int a2=1,3,4,5;C. i nt c2=1,2,3,4;D. int d32=1,2,3,4;8、下列给字符数组进行的初始化中,不正确的是A. char s1=abcd;B. char s23=x,y,0;C.

16、 char s3=a,x,y,0;D. char s46=xyz,m np;编辑版word9、通常的拷贝构造函数的参数是A 某个对象名B 某个对象成员名C 某个对象的引用D 某个对象的指针名10、 关于构造函数特点的描述中,错误的是AA. 定义构造函数必须指出类型 (构造函数特点是无返回类型)B. 构造函数的名字与该类的类名相同C. 一个类中可定义 0 至多个构造函数D. 构造函数是一种成员函数11、 下面程序的运行结果为C#include int add(int a,int b);void main()extern int x,y;coutadd(x,y)a表示从键盘上读入一个_字符串_ 到

17、数组a中。3、 若希望用一个已有对象来构造另一个同类型的对象,可以使用_拷贝构造函数 _来实现。4、静态成员(static)属于_类_,而不属于任何一个对象_,它被同一个类 的所有对象共享 。6、重载运算符的含义必须清楚,不能有 _二义性 _ 。9、C+ 的 I/O 是以 字节流 的形式实现的,每个 C+ 编译系统都带有一个面向对 象的输入/输出软件包,这就是 I/O 流类库。C+ 面向对象程序设计语言期末考试试卷. 选择题(每题 1分,共 10分)1.在C+中,常量C和” C两者A2.A )完全不同B)存储长度相同C)类型相同有二维字符数组char s46= I?zhang”, ”gao”?

18、i?” tang ”D )存储值相同wang” ,执 行 程 序编辑版 wordcoutx?w:zy?z:x 的结果为 _AA) 4B) 3C) 2D) 14.设a和b为整型变量,执行语句b=(a=2+3,a*4),a+5;后a和b的值为_DA) 5, 10B) 20, 25C) 5, 25D ) 5, 205. 如果整型变量a,b,c 的值分别为 5,4, 3,则语句if(a=b=c)c+; 执行后 c 的值是C。A)5B) 4C)3D) 2int i=10;执行下列语句后,i的值是D。case 9:i+=1;case 10: i+=1;case 11: i+=1;A)case 12: i+

19、=1;10B) 11C)12D) 136. 执行以下程序:#includevoid main(void)char c=0;coutc n 输出的结果是_D_ _。A) 0B)语法错C)0D) 一个空行7. 设有类型说明:enum colorred,yellow=3,white,black;则执行语句 coutwhite=b?a:b)c? :t。4已知字母 a 的 ASCII 码为十进制数 97,且 ch 为字符型变量,贝表达式 ch= a +9- 3的值为_g。三. 阅读程序题(每空 2 分,共 14分)1. 下列程序的输出结果是 _15_。#define MUL(x,y) x*y#inclu

20、devoid main(void)int x=4,y=6; coutMUL(x+1,y-3)n;2. 下面函数的功能是 _比较字符串的大小 。sss(char* s,char* t)while(*s)&(*t)&(*t+=*s+);return;3对于下述程序段:int c(int x,int y)if(x1) return(y+2);else if(x%2=1) return(y*c(x-1,y+1);else return(c(x/2,y)*3);324_。当主程序中有打印语句 coutc(6,2)n; 时,程序的输出是 4 程序 #includeint c=-1;void f(int*

21、a,int b)static int c=2;(*a)+;c-;cout*atbtcendl;void main(void)int i;for(i=0;i=1;i+)f(&i,c); coutc=cendl;c= 1程序执行后输出的第二行是 _c= 1_;输出的最后一行是 5 程序 下面程序的输出结果是 17_。#include int funa(int a,int b)return(a + b);int funb(int a,int b)return(a - b);int sub(int(*f)(int ,int),int x,int y)return (*f)(x,y);void main

22、(void)int x,(*p)(int,int); p=funb; x=sub(funa,8,3); x+=sub(p,9,3); coutx=xn;6 程序 下面程序的输出结果是 _3 #include int aa33=2,4,6;void main(void)int i,*p=&aa00; for(i=0;i2;i+) if(i= =0) aaii+1=*p+1;else+p; cout*pendl;四完善程序题(每空 2 分,共 26 分)1. 下面函数的功能是从数组arr (有n个元素)中找出最小元素,并返回其引用。_(1) int & _findmin(int arr,int n)int p

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论