《c++期末考试真题.docx》由会员分享,可在线阅读,更多相关《c++期末考试真题.docx(20页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、一、填空题1. 类是一组具有共同的_属性特征和行为特征的对象的抽象。2. 在面对对象程序设计中,一个对象向另一个对象发出的恳求被称为_消息_ 。3. 用 class 作关键字进展类声明,默认的访问属性是 private(私有的)_4. 函数名重载是指同一作用域内的多个函数使用一样的函数名,这些同名函数要从参数类型和参数个数进展区分。5. 构造函数的作用是在创立对象时对对象进展初始化。6. 多重继承指一个派生类可以有多个基类。7. 保护继承下,基类中全部公有成员在派生类中的访问属性是保护的。8. 假定要访问一个对象指针 p 所指对象中的 b 成员,则表示方法p.b。9. 假设需要把一个函数“vo
2、id F(定);义”为一个类 AB 的友元函数,则应在类 AB 的定义中参与一条语句:friend void F(AB &)_。10. Static 成员函数与一般成员函数的区分是_静态成员函数没有 this 指针。11. 假设要在程序文件中进展标准输入输出操作,则必需在开头的#include 命令中使用 iostream头文件。12.1. 关键字C说明对象或变量初始化后不会被修改。a. staticb. publicc. constd. inline2. 假设调用带有默认参数的函数时缺少一个参数,则B参数就作为这一参数。a. 第一个b. 最终一个c.中间一个d. 以上都不是3. 成员函数可声
3、明为静态的,条件是它不访问C类成员。a. 静态b. 常数c.非静态d. 公共4. 内联函数执行起来比标准函数B。a. 更慢b. 更快c.次数更多d. 以上都不是5. 默认参数的值由C供给。a. 该函数b. 调用程序c. 上述二者d. 以上都不是6. 在 C+ 中,混合类型表达式A。a. 允许存在b.为一错误c.从 int 到 floatd. 从 float 到 int7. 表达式 long(intVar) 也可表示为C。a. intvar = long;b.intVar(long)c.(long)intVard. 以上都不是8. 静态数据成员的生存期A。a. 与整个程序一样b.不长于类的生存期
4、c.取决于创立的对象数d. 以上都不是9. 要让一个类中的全部对象具有共同的数据,请使用C。a. 常数成员变量b. 私有数据成员c. 静态数据成员d. 以上都是1、C+是 C。A. 面对对象的程序设计语言B. 面对过程的程序设计语言C. 既支持面对对象的程序设计又支持面对过程的程序设计的混合型语言D. 非构造化的程序设计语言2、面对对象程序设计思想的主要特征中不包括D。A. 封装性B. 多态性C. 继承性D. 功能分解,逐步求精3、假设定义:string str;当语句cinstr; 执行时,从键盘输入:Microsoft Visual Studio 6.0!所得的结果是str= B。A. M
5、icrosoft Visual Studio 6.0!B. MicrosoftC. Microsoft VisualD. Microsoft Visual Studio 6.04、考虑下面的函数原型声明:void testDefaulParam(int a,int b=7,char z=”*”);下面函数调用中,不合法的是C。A. testDefaulParam(5);B. testDefaulParam(5,8);C. testDefaulParam(5,”#”);D. testDefaulParam(0,0,”*”);5、以下语句中,将函数int sum(int x, int y)正确重载
6、的是 C。A. 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);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. 类
7、是一种用户自定义的数据类型B. 只有类中的成员函数或类的友元函数才能存取类中的私有成员C. 在类中,假设不做特别说明,全部成员的访问权限均为私有的D. 在类中,假设不做特别说明,全部成员的访问权限均为公用的9、X类,则当程序执行到语句:X array3;时,调用了 D次构造函数。A. 0B. 1C. 2D. 310、下面说法中,正确的选项是BA. 一个类只能定义一个构造函数,但可以定义多个析构函数B. 一个类只能定义一个析构函数,但可以定义多个构造函数C. 构造函数与析构函数同名,只要名字前加了一个求反符号D. 构造函数可以指定返回类型,而析构函数不能指定任何返回类型,即使是void 类型也不
8、行以12、下面描述中,表达错误的选项是BA. 公用继承时基类中的 public 成员在派生类中仍是 public 的B. 公用继承时基类中的 private 成员在派生类中仍是 private 的C. 公用继承时基类中的 protected 成员在派生类中仍是 protected 的D. 私有继承时基类中的public成员在派生类中是private的14、下面B 的表达不符合赋值兼容规章。A. 派生类的对象可以赋值给基类的对象B. 基类的对象可以赋值给派生类的对象C. 派生类的对象可以初始化基类的对象D. 派生类的对象的地址可以赋值给指向基类的指针16、下面关于友元的描述中,错误的选项是 D。
9、A. 友元函数可以访问该类的私有数据成员B. 一个类的友元类中的成员函数都是这个类的友元函数C. 友元可以提高程序的运行效率D. 类与类之间的友元关系可以继承17、以下关于静态数据成员的说法,不正确的选项是 C。A. 类中定义的公用静态数据成员,可以通过类的对象来访问B. 类中定义的全部静态数据成员,都必需在类外初始化C. 静态数据成员不是全部对象所共用的D. 一般的成员函数可以直接访问类中的静态数据成员18、假设表达式+i*k中的“+”和“*”都是重载的友元运算符,假设承受运算符函数调用格式,则表达式还可以表示为B。A. operator*(i.operator+,k)B. operator
10、*(operator+(i),k)C. i.operator+.operator*(k)D. k.operator*(operator+(i)19、下面对模板的声明,正确的选项是C。A. templateB. templateC. templateD. template 20、以下的各类函数中,C不是类的成员函数A. 构造函数B. 析构函数C. 友元函数D. 复制构造函数二、填空题前14个空,每空1分,后3个空,每空2分,共20分1、类和对象的关系可表述为:类是对象的抽象,而对象则是类的 实例。2、静态成员函数没有隐含的this指针,所以,在C+程序中,静态成员函数主要用来访问静态数据成员,而
11、不访问非静态成员。3、在图1中,A,B,C,D,E,F均是类,其中属于单继承的派生类有E, 属于多继承的派生类有D、F,类F的基类有A、B、C、D、E,类A的派生类有D、F。ABC DEF图 1 类的继承层次图7、假设要把void fun定义为类A的友元函数,则应在类A的定义中参与语句 friend void fun(A&a)。8、列出C+中的两种代码复用方式:继承和组合或模板。9、析构函数的作用是在对象被系统释放之前做一些内存清理工作。10、假定A是一个类名,则该类的拷贝构造函数的原型说明语句为:A(const A&)。11、后置自增运算符“+”重载为类的成员函数设类名为A的形式为:A op
12、erator+(int)。一、单项选择题每题2分,共40分1、关于C+与C语言关系的描述中,D是错误的。AC语言是C+语言的一个子集BC语言与C+语言是兼容的CC+语言对C语言进展了一些改进DC+语言和C语言都是面对对象的4、系统在调用重载函数时往往依据一些条件确定哪个重载函数被调用,在以下选项中,不能作为依据的是 A。A函数的返回值类型B参数的类型C函数名称D参数个数5、以下有关C+类的说法中,不正确的选项是D。A类是一种用户自定义的数据类型 B只有类中的成员函数或类的友元函数才能存取类中的私有成员C在类中,假设不做特别说明,全部成员的访问权限均为私有的D在类中,假设不做特别说明,全部成员的
13、访问权限均为公用的7、有关析构函数的说法,不正确的选项是 B。 A析构函数有且仅有一个B析构函数和构造函数一样可以有形参C析构函数的功能是在系统释放对象之前作一些内存清理工作 D析构函数无任何函数类型8、类定义的内容允许被其对象无限制地存取的是C。Aprivate 局部B protected 局部Cpublic 局部D以上都不对10、运用运算符delete删除一个动态对象时C。A系统首先为该动态对象调用构造函数,再释放其占用的内存B系统首先释放该动态对象占用的内存,再为其调用构造函数C系统首先为该动态对象调用析构函数,再释放其占用的内存D系统首先释放动态对象占用的内存,再为其调用析构函数11、
14、可以在类外用p.a的形式访问派生类对象p的基类成员a,其中a是D。A私有继承的公用成员B公用继承的私有成员 C公用继承的保护成员D公用继承的公用成员12、在公用继承方式下,有关派生类对象和基类对象的关系,不正确的表达是C 。A派生类的对象可以赋给基类的对象 B派生类的对象可以初始化基类的引用 C派生类的对象可以直接访问基类中的成员D派生类的对象的地址可以赋给指向基类的指针18、以下运算符中, C运算符在C+中不能被重载。A&BC:Dnew 19、模板的使用实际上是将类模板实例化成一个 C。A函数B对象C类D抽象类20、假定MyClass为一个类,则该类的拷贝构造函数的声明语句为C。AMyCla
15、ss(MyClass x)BMyClass&(MyClass x) CMyClass(MyClass &x)DMyClass(MyClass *x)二、填空题前16个空,每空1分,后2个空,每空2分,共20分1、类和对象的关系可表述为:类是对象的抽象,而对象则是类的实例。2、在C+中,三种继承方式的说明符号为public、private和protected, 假设不加说明,则默认的继承方式为private _ 。5、类的静态成员分为 静态数据成员和静态成员函数。6 、运算符重载要求保持其原来的操作数个数、结合性、优先级_ 和语法构造。7、通过关键字template可以声明模板,通过关键字cla
16、ss(或typename)指定函数模板的类型参数,有几个类型参数就有几个类型关键字。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;double z=45.6712; 则表达式 w*x+y-z 的结果类型是DA. floatB. charC. intD. double 6、对重载函数形参的描述中,错误的选项是DA. 参数的个数可能不
17、同B. 参数的类型可能不同C. 参数的挨次可能不同D. 参数的个数、类型、挨次都一样,只是函数的返回值类型不同7、以下能正确定义数组并正确赋初值的语句是DA. int N=5,bNN;B. int a2=1,3,4,5;C. int c2=1,2,3,4;D. int d32=1,2,3,4;8、以下给字符数组进展的初始化中,不正确的选项是DA. char s1=“abcd“;B. char s23=”x”,”y”,”0”;C. char s3=”a”,”x”,”y”,”0”;D. char s46=“xyz“,“mnp“;9、通常的拷贝构造函数的参数是CA. 某个对象名B. 某个对象成员名C
18、. 某个对象的引用D. 某个对象的指针名10、关于构造函数特点的描述中,错误的选项是AA. 定义构造函数必需指出类型 构造函数特点是无返回类型B. 构造函数的名字与该类的类名一样C. 一个类中可定义 0 至多个构造函数D. 构造函数是一种成员函数11、下面程序的运行结果为C #include int add(int a,int b); void mainextern int x,y; coutadd(x,y)a 表示从键盘上读入一个字符串到数组a 中。3、假设期望用一个已有对象来构造另一个同类型的对象,可以使用拷贝构造函数_来实现。4、静态成员static属于类 的全部对象共享。,而不属于任何
19、一个对象,它被同一个类6、重载运算符的含义必需清楚,不能有二义性_ 。9、C+的 I/O 是以 字节流 的形式实现的,每个 C+编译系统都带有一个面对对象的输入/输出软件包,这就是I/O 流类库。C+面对对象程序设计语言期末考试试卷一. 选择题(每题 1 分,共 10 分)1. 在 C+中,常量C和”C”两者A。A完全不同B存储长度一样C类型一样D存储值一样2. 有 二 维 字 符 数 组chars46=“zhang”,”gao”,”tang”,”wang”, 执 行 程 序coutx?w:zy?z:x 的结果为A。A4B 3C 2D14. 设 a 和 b 为整型变量,执行语句b=(a=2+3
20、,a*4),a+5;后 a 和 b 的值为_D。A5,10B20,25C5,25D5,205. 假设整型变量 a,b,c 的值分别为 5,4,3,则语句 if(a=b=c) c+;执行后 c 的值是_C。A5B4C 3D2 int i=10;执行以下语句后,i 的值是D。case 9: i+=1;case 10: i+=1;case 11: i+=1;case 12: i+=1;A10B11C12D136. 执行以下程序: #include void main(void)char c=0;coutcn;输出的结果是D。A) 0B)语法错C)0D) 一个空行7. 设有类型说明:enum colo
21、rred,yellow=3,white,black;则执行语句coutwhite=b?a:b)c?c:t。4. 字母a 的 ASCII 码为十进制数97,且ch 为字符型变量,则表达式ch=a+9-3的值为g。三阅读程序题每空 2 分,共 14 分1. 以下程序的输出结果是15_。#define MUL(x,y)x*y #includevoid 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. 对于下述程序段
22、: 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);当主程序中有打印语句 coutc(6,2)”n”;时,程序的输出是324_。4程序#include int c=-1;void f(int* a,int b)static int c=2; (*a)+;c-;cout*a”t”b”t”cendl;void main(void)int i; for(i=0;i=1;i+)f(&i,c); cout“c=“cendl;程序执行后输出的其次行是_c= 1_
23、;输出的最终一行是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(void)int x,(*p)(int,int);p=funb; x=sub(funa,8,3);x+=sub(p,9,3); cout“x=“x”n”;6程序下面程序的输出结果是3_。#includeint aa33=2,4,6;void main
24、(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 pos=0;for(int i=1;i=n-1;+i)if(2)arriarrpos_) pos=i; return(3)arrpos_;2. 下面函数的功能是求 N 个数之和的递归函数即 1+2+3+.+n int sum(int n)if(1) n=
25、=1_) return 1; else return _ (2)_ n+sum(n-1)3. 本程序中的函数 find 是推断数组 a 中的整数是升序、降序还是无序的,假设是升序返回 1,降序返回 2,无序返回 3。函数find 中的形参 n 为数组 a 中有效整数的数量,a 中从 a0到 an-1包含待推断的整数。int find(int a,int n)int s,i;if(a0a1)s=1;else s=2; if(s= =1)i=1;while (iai+1)s=3;break; (2)_ i+;if(s=2)for(i=1;in-1;i+) if(aiai+1)(4) s=3 break;return s;(5) #include using namespace std; void fun;int mainfor(int i=1;i5;i+)fun; return 0;void funstatic int a; int b=2;cout(a+=3,a+b)endl;留意:静态成员函数没有初始化时,自动初始化为0;cout(a+=3,a+b)endl; 为逗号表达式,输出后者。
限制150内