2015年全国计算机等级二级C上机考试冲刺试题3_第1页
2015年全国计算机等级二级C上机考试冲刺试题3_第2页
2015年全国计算机等级二级C上机考试冲刺试题3_第3页
2015年全国计算机等级二级C上机考试冲刺试题3_第4页
2015年全国计算机等级二级C上机考试冲刺试题3_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

A 、 冒泡排序 B 、 简单选择排序 C 、 直接插入排序 D 、 堆排序 A 、 1234 B 、 1324 C 、 1342 D 、 3142 A 、 * P表示的是指针变量P的地址 全真机考、在线考试、每日一练、评估报告,最专业全面的题库,尽在233网校题库! 2015年全国计算机等级二级年全国计算机等级二级C+上机考试冲刺试题上机考试冲刺试题(3) 一、选择题一、选择题(每小题每小题1分,共分,共40分分) 1、 下列排序方法中,最坏情况下比较次数最少的是( )。 2、 下面程序的运行结果为( )。 #include class A public: A()tout”1”; A()tout”2”; ; class B:public A public: B()cout”3”; B()cout”4”; ; void main() B b; 3、 以下程序中调用cin函数给变量a输入数值的方法是错误的,其错误原因是( )。 #include void main() int * P,* q,a,b; P=&a: eoutP: 答案: D 解析: 冒泡排序、直接插入排序与简单选择排序法在最坏情况下均需要比较n(n-1)/2次,而堆排序在最坏情况下需要比较的次数是nlog2 n。 答案: C 解析: 本题考查的是在继承中构造函数和析构函数的调用顺序,应该是先调用基类的构造函数,再调用派生类的构造函数,调用析构函数时的顺序是 先调用派生类的析构函数,后调用基类的析构函数。 B 、 P表示的是变量a的地址,而不是变量a的值 C 、 *P表示的是指针变量P的值 D 、 *P只能用来说明P是一个指针变量 A 、 cout n; B 、 coutl2: C 、 cout xA; D 、 cout0: A 、 operator+(operator*(X,Y),z) B 、 xoperator+(operator * (x,y),Z) C 、 Yoperator * (operator+(x,Y),z) D 、 xoperator+(operator(X,Y) A 、 private B 、 static C 、 public D 、 protected A 、 void B 、 int C 、 new D 、 long A 、 0和1 B 、 1和1 4、 与语句coutendl;不等价的是( )。 5、如果表达式x * y+z中,“*”是作为友元函数重载的,“+”是作为成员函数重载的,则该表达式还可为 ( )。 6、 在下列关键字中,不能用来表示继承方式的是( )。 7、 下面的( )选项不能作为函数的返回类型。 8、 有如下函数定义: void funC(int a,int&Ba+;b+; 若执行代码段: int x=0,Y=1: funC(X,y); 则变量X和y的值分别是( )。 答案: B 解析: P表示的是变量a的地址,定义后*P表示的是变量a的值。 答案: D 解析: 题干表示的是回车换行,选项A、B、c都表示回车换行,而选项D是字符串的结尾标志。 答案: A 解析:C+中用成员函数重载x * y为:xoper-ator(y),用友元函数重载x*Y为:(,perator*(x,Y),用成员函数重载x+Y为:xoperator+(Y),用友元函 数重载x+Y为:operator+(x,Y)。 答案: B 解析: 3种继承方式:公用继承、私有继承和保护继承分别使用public、private和protected3个关键字来定义。 答案: C 解析: new是动态申请内存空间时使用的关键字,不能作为函数的返回类型,选项A为无返回值,选项B为返回整型,选项D为返回长整型。 C 、 0和2 D 、 1和2 A 、 一369 B 、 369 C 、 0.369 D 、 整数集合1,2,3,4,5 A 、 类定义中包括数据成员和函数成员的声明 B 、 类成员的缺省访问权限是保护的 C 、 数据成员必须被声明为私有的 D 、 成员函数只能在类体外进行定义 A 、 编译出错,无法运行 B 、 输出:3 C 、 输出:30 D 、 输出一个不确定的数 A 、 抽象 9、 定义无符号整数类为UInt,下面可以作为类UInt实例化值的是( )。 10、 下列关于类定义的说法中,正确的是( )。 11、 有如下程序: #nclude using namespace std; int main() void function(double val); double val; function(val); coutval; return 0; void function(double val) val=3; 编译运行这个程序将出现的情况是( )。 12、 this指针是C+语言实现( )的一种机制。 答案: C 解析: 函数参数的3种传递方式:将变量名作为形参和实参,即传值方式;传递变量指针;引用形参。本题中实参x为传值方式,所以X的值不 会改变;Y为引用形参,所以会改变。故本题答案为C。 答案: B 解析: 只有B选项中369可以用无符号整数来表示和存储。A选项中一369有负号,选项C中0369是小数都不能用无符号整数类存储。选项D是一个整 数集合得用数组来存储。 答案: A 解析: 类的成员的缺省访问权限是私有的,数据成员可以是私有,可以是公用的,也可以是受保护的。类的成员函数可以在类内定义。 答案: D 解析: 本题考查函数调用及传值方式传递参数,执行函数function时,并没有将3的值传回来,而val又没有初始化,所以会输出一个不确定的值,D选 项正确。 B 、 封装 C 、 继承 D 、 重载 A 、 在成员函数声明的前面加上virtual修饰,就可把该函数声明为虚函数 B 、 基类中说明了虚函数后,派生类中对应的函数也必须说明为虚数 C 、 虚函数可以是另一个类的友元函数,但不能是静态成员函数 D 、 基类中说明的纯虚函数在其任何派生类中都必须实现 A 、 编译出错,无法运行 B 、 输出:3 C 、 输出:30 D 、 输出一个不确定的数 A 、 一组对象所具有的相似性质 B 、 一个对象具有另一个对象的性质 C 、 各对象之间的共同性质 D 、 类之间共享属性和操作的机制 13、 下面关于虚函数的描述,错误的是( )。 14、 有如下程序: #include using namespaee std; int main() void function(double val); double val: function(val); eoutval: return 0; void function(double val) val=3; 编译运行这个程序将出现的情况是( )。 15、 面向对象方法中,继承是指( )。 答案: B 解析: this指针是c+语言实现封装的一一种机制,它将对象和该对象调用的成员函数连接在一起在外部看来,每-个对象都拥有自己的函数成员。 答案: B 解析: 基类中说明的虚函数,在派生类中自然就是虚函数,对于纯虚函数必须在后面继承的派生类中给出具体的实现;静态成员函数不能进行动态联 编,所以虚函数不能是静态的。 答案: D 解析: 本题考查函数调用及传值方式传递参数,执行函数function时,并没有将3的值传回来,而val又没有初始化,所以会输出一个不确定的值,D选 项正确。 答案: D 解析: 继承是面向对象的方法的一个主要特征,是使用已有的类的定义作为基础建立新类的定义技术。广义的说,继承是指能够直接获得已有的性质 和特征,而不必重复定义它们,所以说继承是指类之间共享属性和操作的机制。 A 、 066667 B 、 0 C 、 07 D 、 066666666 A 、 a2 B 、 a3 C 、 *(P+2) D 、 +P+4 A 、 cout B 、 cin C 、 cerr D 、 cset 16、 下列程序的运行结果为( )。 #include void main() int a=2: int b=a+1: couta/bendl: 17、 有如下定义: int a5=1,3,5,7,9,* P=a; 下列表达式中不能得到数值5的是( )。 18、 C+系统预定义了4个用于标准数据流的对象,下列选项中不属于此类对象的是( )。 19、 有如下程序: #include using namespace std; class GA public: virtual int f()t retum l; ; class GB:public GA public: virtual int f()retum 2; ; void show(GA g)eout9f(); void display(GA&g)cout9f(); int main() GA a;show(A;display(A; GB b;show(B;display(B; return 0; 答案: B 解析: 表达式值的类型是由操作数的类型决定的,因为本题的两个数都是int型的,所以得出的结果也为int型,即去掉小数点后的部分,只取商的整数 部分。 答案: B 解析: 本题考查指向数组的指针,本题中指针变量P指向数组a,直接使用数组下标即可取值,数组F标是从0开始标号的,所以a2能取到5,而a3取 不到5,(:选项中使用指针后移方法能够取到5,D选项中*P为1,所以*P+4为5。 答案: D 解析: c+标准数据流的对象分别足cout、cin、CelT、cl09,所以本题答案为D。 A 、 1111 B 、 1211 C 、 1112 D 、 1212 A 、 有一个以上根结点的数据结构不一定是非线性结构 B 、 只有一个根结点的数据结构不一定是线性结构 C 、 循环链表是非线性结构 D 、 双向链表是非线性结构 A 、 从虚基类继承的函数都是虚函数 B 、 虚函数不得是静态成员函数 C 、 只能通过指针或引用调用虚函数 D 、 抽象类中的成员函数都是虚函数 A 、 3 B 、 4 C 、 6 D 、 7 A 、 需求分析阶段 B 、 概念设计阶段 C 、 逻辑设计阶段 D 、 物理设计阶段 执行这个程序的输出结果是( )。 20、 下列叙述中正确的是( )。 21、 下列关于虚函数的说明中,正确的是( )。 22、 某二叉树共有7个结点,其中叶子结点只有l个,则该二叉树的深度为(假设根结点在第1层)( )。 23、 在数据库设计中,将ER图转换成关系数据模型的过程属于( )。 答案: C 解析: 本题主要考察虚函数。虚函数指在某基类中声明为virtual并在一一个或多个派生类中被重新定义的成员函数,本题中定义类GA的对象a,执行 show(a)、display(a),输出ll,定义了类GB的对象b,执行show(b),仍然输出1,display(b)执行会调用派生类的f函数,因为f函数为虚函数,输出2,所 以本题答案为c。 答案: B 解析: 线性结构应满足:有且只有一个根结点与每个结点最多有一个前件,也最多有一个后件,所以8正确。所以有一个以上根结点的数据结构一定是 非线性结构,所以A错误。循环链表和双向链表都是线性结构的数据结构。 答案: B 解析: 在某基类中声明为virtual并在一个或多个派生类中被重新定义的成员函数一虚函数必须是基类的非静态成员函数,其访问权限可以是protected或 public。如果一个类包含了纯虚函数,称此类为抽象类。所以本题答案为B。 答案: D 解析: 根据二叉树的基本性质3:在任意一棵二叉树中,度为0的叶子结点总比度为2的结点多一个,所以本题中度为2的结点为1-1=0个,所以可以知道 本题目中的二叉树的每一个结点都有一个分支,所以共7个结点共7层,即度为7。 答案: C 解析: ER图转换成关系模型数据则是把图形分析出来的联系反映到数据库中,即设计出表,所以属于逻辑设计阶段。 A 、 模板参数可以作为数据成员的类型 B 、 模板参数可以作为成员函数的返回类型 C 、 模板参数可以作为成员函数的参数类型 D 、 模板参数不能作为成员函数的局部变量的类型 A 、 可行性分析报告 B 、 软件需求规格说明书 C 、 概要没计说明书 D 、 集成测试计划 A 、 函数模板和类模板的参数可以是任意的数据类型 B 、 类模板不能直接使用,必须先实例化为相应的模板类,然后定义了模板类的对象后才能使用 C 、 函数模板不能直接使用,需要实例化为模板函数后才能使用 D 、 类模板的成员函数都是模板函数 A 、 概念模式 B 、 内模式 C 、 外模式 D 、 数据模式 A 、 int i=10; B 、 for(int i=1;j10;i+) while(1) i-; i-; if(i=1)break; C 、 int i-0; D 、 int i=1: 24、 下列关于类模板的模板参数的叙述中,错误的是( )。 25、 在软件开发中,需求分析阶段产生的主要文档是( )。 26、 下面关于模板的描述,错误的是( )。 27、 数据库系统的三级模式不包括( )。 28、下列语句中不是死循环的是( )。 答案: D 解析: 本题考查类模板的概念和定义,模板参数可以作为成员函数的局部变量的类型。 答案: B 解析: A错误,可行性分析阶段产生可行性分析报告。C错误,概要设计说明书是总体设计阶段产生的文档。D错误,集成测试计划是在概要设计阶段 编写的文档。B 正确,软件需求规格说明书是后续工作如设计、编码等需要的重要参考文档。 答案: A 解析: 类模板不能被重载,而函数模板可以,它们不能被未知的数据类型替换。 答案: D 解析: 数据库系统的二二级模式是概念模式、外模式和内模式,所以选择D。 答案: A 解析:选项A中i自减到1时就会执行break语句跳出循环,选项B中i0永远不会跳出循环,选 项D中未给出结束循环的条件。 A 、 重载函数 B 、 内联函数 C 、 递归函数 D 、 友元函数 A 、 增加了一些新的运算符 B 、 允许函数重载,并允许设置默认参数 C 、 规定函数说明符必须用原型 D 、 引进了类和对象的概念 A 、 公有成员和保护成员 B 、 公有成员 C 、 私有成员 D 、 保护成员 A 、 类Person是类Undergraduate的基类 B 、 类Undergraduate从类Student公有继承 C 、 类Student是类Person的派生类 D 、 类Undergraduate是类Person的派生类 A 、 3 B 、 4 C 、 5 D 、 6 29、 为了取代c中带参数的宏,在c+中使用( )。 30、 C+语言对C语言做了很多改进,C+语言相对于C语言的最根本的变化是( )。 31、 派生类的成员函数不能访问基类的( )。 32、下列代码段中声明了3个类: Class Person; Class Student:publiC Person; Class Undergraduate:Student; 下列关于这些类之间关系的描述中,错误的是( )。 33、 若有下面的函数调用: fun(fl+b,3,max(n一1,B) 则fun的实参个数是( )。 答案: B 解析: 一般函数进行调用时,要将程序执行权转到被调用函数中,然后再返回到调用它的函数中;而内联函数在调用时,是将调用表达式用内联函数 体来替换,即类似于宏。 答案: D 解析: c+语言最重要的特点是其为一种面向对象的程序设计语言,但是c+语言也包含了C语寿的全部特征。 答案: C 解析: 本题考查3种继承方式,其中,基类的私有成员始终为基类私有。所以派生类无法访问基类的私有成员。本题答案为c。 答案: B 解析:本题考查基类和派生类的逻辑关系,属于基础知汉,如果没有指明哪种继承方式,那么默认为私有继承,所以B选项错误。 答案: A 解析: 本题考查函数实参个数的基础知识,根据实参的概念,(a+b)、3、mflJc(n一1,b)分别为其中的3个实参。故答案为A。 A 、 1 B 、 2 C 、 3 D 、 4 A 、 运算符重载为成员函数时,若参数表中无参数,重载的是一元运算符 B 、 一元运算符只能作为成员函数重载 C 、 二元运算符重载为非成员函数时,参数表中有一个参数 D 、 C+中可以重载所有的运算符 A 、 abC B 、 aCb C 、 Cab D 、 Cba A 、 ios_base:cur 34、 有如下两个类定义: class XX private: double xl; protected: double x2; public: double x3; ; class YY:protected XX private: double yl; protected: double y2; public: double y3; 在类YY中保护成员变量的个数是( )。 35、 下列关于运算符重载的描述中,正确的是( )。 36、 建立派生类对象时,3种构造函数分别是a(基类的构造函数)、b(成员对象的构造函数)、C(派生类)构造函数),这3种构造函数的 调用顺序为( )。 37、 在下列枚举符号中,用来表示“相对于当前位置”文件定位方式的是( )。 答案: C 解析: 本题考查保护继承中派生类对基类的访问属性,在受保护继承中,基类的公用成员和保护成员在派生类中成了保护成员,所以基类的成员x2、 x3变成了保护成员,派生类中的y2也是保护成员,所以共有3个保护成员。本题答案为C、 答案: A 解析: 运算符重载为成员函数时,会省略一个参数,如果无参数,表明是一元运算符。一元运算符既可以作为成员函数重载,也可以作为非成员函数 重载。二元运算符如果作勾非成员函数,则参数表中必须有两个参数。c+有5个运算符不能重载,它们是:(成员访问运算符)、*(成员指针访问运算 符)、:(域运算符)、sizeof(长度运算符)和?:(条件运算符)。故本题答案为A。 答案: A 解析: 本题考查的是在继承中派生类的对象调用构造函数的顺序,应该是先调用基类的构造函数,然后是成员中的对象对应类的构造函数,最后是派 生类自已的构造函数。 B 、 iosbase:beg C 、 los_base:0ut D 、 iosbase:end A 、 iosbase:in B 、 iosbase:in l ios base:0ut C 、 los base;:0ut D 、 ios_base:in&ios_base:0ut A 、 运算符重载是多态性的一种表现 B 、 C+中可以通过运算符重载创造新的运算符 C 、 C+中所有运算符都可以作为非成员函数重载 D 、 重载运算符时可以改变其结合性 A 、 switCh语句中的ease标号语句 B 、 if语句的分支 C 、 循环语句的循环体 D 、 函数的函数体 38、 当使用ifstream流类定义一个流对象并打开一个磁盘文件时,文件的默认打开方式为( )。 39、 下列有关运算符重载的叙述中,正确的是( )。 40、 必须用一对大括号括起来的程序段是( )。 二、基本操作题二、基本操作题(18分分) 41、请使用VC6或使用【答题】菜单打开考生文件夹projl下的工程projl,该工程含有一个源程序文件pn,jlcpp。其中位于每个注 释“/ERROR 木水found水木”之后的一行语句存在错误。请改正这些错误,使程序的输出结果为: The value is 10 注意:只修改注释“/ERROR * found*”的下一行语句,不要改动程序中的其他内容。 /pmjlcpp #include using namespace std; class MyClass int value; public: /ERROR*found* void MyClass(int val):value(val) int GetValue()constreturn value; void SetValue(int val); ; /ERROR*found* inline void SetValue(int val)value=val; int main() MyClass obj(O); 答案: A 解析: streamoff定义于iostreamh中,定义有偏移量0ffset所能取得的最大值,seekdir表示移动的基准位置,是一个有以下值的枚举:ios:be9: (文件开头)、ios:cur:(文件当前位置)、ios:end:(文件结尾)。 答案: A 解析: 本题考查对文件输入流的操作,ifstream流类为输入流类,默认的文件输入流扣开方式为ios:in。故答案为A。 答案: A 解析: 重载运算符的规则如F:c+不允许用户自己定义新的运算符,只能对已有的c+运算符进行重载;c+不能重载的运算符只有5个;重载 不能改变运算符运算对象的个数;重载不能改变运算符的优先级和结合性;重载运算符的函数不能有默认的参数;重载的运算符必须和用户定 义的自定义类型的对象一起使用,至少应有一个是类对象,即不允许参数全部是c+的标准类型。故本题答案为A。 答案: D 解析: 本题考查C+基本控制结构A、B、C三个选项中的大括号不是必须的,而D选项中的函数体必须使用大括号。 objSetValue(10); /ERROR*found*下列语句功能是输出obj的成员value的值 tout”The value is”objvalueendl: return 0; (1)MyClass(int val):value(val) (2)void MyClass:SetValue(int val)value=val; (3)cout“”The value is”“objGetValue()“end1; 三、简单应用题(三、简单应用题(24分)分) 42、 请使用VC6或使用【答题】菜单打开考生文件夹proj2下的工程proj2,其中有矩阵基类MatrixBase、矩阵类Matrix和单位阵UnitMatrix的 定义,还有main函数的定义。请在横线处填写适当的代码并删除横线,以实现上述类定义。此程序的正确输出结果应为: 1 2 3 4 5 2 3 4 5 6 3 4 5 6 7 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 注意:只能在横线处填 写适当的代码,不要改动程序中的其他内容,也不要删除或移动“/t+found母 *”。 #nClude using namespaCe std; /矩阵基础类,一个抽象类 Class MatrixBase int rows,Cols; publiC: MatrixBase(int rows,int Cols):roWS(rows),Cow(Cols) int getRows()Constretum rows;/矩阵行数 int getCols()Constreturn Cols;/矩阵列数 virtual double getElement(int r,int C)Const=0;/取第i个元素的值 void show()Const/分行显示矩阵中所有元素 for(int i=0;irOWS;i+) Coutendl; for(int j=0;jCols;j+) /*found* Cout ”; ; /矩阵类 Class Matrix:publiC MatfixBase double*val; publiC: /*found* Matrix(int rows,int Cols,double in=NULL): /*found* val=; for(int i=0:irows*Cols;i+) vali=(m=NULL?00:Illi); 一Matrix()deleteval; double getElement(int r,int C)Constretum valr*getCols()+C; ; /单位阵(主对角线元素都是l,其余元素都是0的方阵)类 Class UnitMatrix:publiC MatrixBase publiC: UnitMatrix(int rOWS):MatrixBase(rows,rows) /单位阵行数列数相同 double getElement(int r,int C)Const /*found* if(_)retum l0; retum 00; ; int main() MatrixBase*m; double d5=1,2,3,4,5,2,3,4,5,6,3,4,5,6,7; ITI=new Ma

温馨提示

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

评论

0/150

提交评论