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

下载本文档

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

文档简介

A 、 内联函数在调用时发生控制转移 B 、 内联函数必须通过关键字inline来定义 C 、 内联函数是通过编译器来实现的 D 、 内联函数函数体的最后一条语句必须是return语句 A 、 int* p;P=&k; B 、 int * P;P=k; C 、 int * p;* P=&k; D 、 int * p;* P=k; A 、 BAAABA 全真机考、在线考试、每日一练、评估报告,最专业全面的题库,尽在233网校题库! 2015年全国计算机等级二级年全国计算机等级二级C+上机考试冲刺试题上机考试冲刺试题(5) 一、选择题一、选择题(每小题每小题1分,共分,共40分分) 1、 下列有关内联函数的叙述中,正确的是( )。 2、 语句int*P=&k;定义了指针P,与这个语句等效的语句序列是( )。 3、 有如下程序: #include using namespace std; class A public: A()cout”A”; -A()cout”-A”; ; class B:public A A*P; public: B()cout”B”;P=new A(); -B()cout”B”;delete p; ; int main() B obj; return 0; 执行这个程序的输出结果是( )。 答案: C 解析: 一般函数进行调用时,要将程序执行权转到被调用函数中,然后再返回到调用它的函数中;而内联函数在调用时,是将调用表达式用内联函数 体来替换,所以在调用时不发生控制转移。在类内部实现的函数都是内联函数,可以不用inline定义;只有函数外部定义的内联函数才必须加关键字 inline。编译系统并非对内联函数必须使用内联,而且根据具体情况决定。内联函数不是必须要有返回值的。 答案: A 解析: 本题考查指针和地址,题目中定义了一个指向变量k的一个指针p,那么与题目中等效的表达式A选项,即先定义一个指向整型的指针,然后指 向k的地址。 B 、 ABABAA C 、 BAABAA D 、 ABAABA A 、 B 、 C 、 D 、 A 、 Data+(DatA; B 、 Data operator+(DatA; C 、 Data+operator(DatA; D 、 operator+(Data,DatA; A 、 num10 B 、 num5 C 、 num3 D 、 humo A 、 DeCr&operator-(int); B 、 DeCr operator-(DeCr&,int); C 、 friend DeCr&operator-(DeCr&); D 、 friend DeCr operator-(DeCr&,int); 4、 有如下类定义: class AA im a: public: int getRef()constreturna;/ int getValue()constreturn a;/ void set(int n)consta=n;/ friend void show(AA aAconstcouta;/ ; 其中四个函数的定义中正确的是( )。 5、 若要对Data类中重载的加法运算符成员函数进行声明,下列选项中正确的是( )。 6、 有如下数组声明:int num10;,下标值引用错误的是( )。 7、将前缀运算符“-”重载为非成员函数,下列原型中能正确用于类中说明的是( )。 答案: B 解析: 本题考查派生类的构造函数和析构函数,在定义一个派生类的对象时,先调用基类的构造函数,然后再执行派生类的构造函数。对象释放时, 先执行派生类的析构函数,再执行基类的析构函数。所以本题答案为B。 答案: B 解析: 本题考查常成员函数,常成员函数只能引用本类中的数据成员,而不能修改它。所以本题答案为B。 答案: B 解析: 根据重载加法运算符的格式,只有B选项正确。 答案: A 解析: 数组定义中的数字指的是数组的大小,而下标是从0开始的,所以本题中数组的最后一个元素是num9。 答案: C A 、 publiC和publiC B 、 publiC和proteCted C 、 proteCted和publiC D 、 proteCted和proteCted A 、 auto B 、 extern C 、 register D 、 static A 、 0 B 、 1 C 、 2 D 、 3 A 、 程序内部逻辑 B 、 程序外部功能 C 、 程序数据结构 D 、 程序流程图 8、 如果派生类以proteCted方式继承基类,则原基类的proteCted成员和publiC成员在派生类中的访问属性分别是( )。 9、 在函数中,可以用aut0、extem、register和static这四个关键字中的一个来说明变量的存储类型,如果不说明存储类型,则默认的 存储类型是( )。 10、下列程序的输出结果是( )。 #include int rain(iltl a,int B) if(aBreturn a; else retum b; retum 0; void main() eoutmin(1,min(2,3)endl; 11、 在黑盒测试方法中,设计测试用例的主要根据是( )。 答案: C 解析:把“-”运算符重载为非成员(友元)函数格式:friendoperator-()是前缀的格式;friendoperator-(int)是后缀的格式。当然也可 以有参数如题中C选项所示。 答案: D 解析: 本题考查保护继承中派生类对基类的访问属性,在受保护继承中,基类的公用成员和保护成员在派生类中成了保护成员,其私有成员仍为基类 私有,所以本题答案为D。 答案: A 解析: 变量的存储方法分为静态存储和动态存储两大类,包含4种:自动的(auto)、静态的(static)、寄存器的(register)、外部的(extem)。变量如果没有说 明存储类型,那么默认就是aut0。 答案: B 解析:本题考查的是函数的调用,第一次调用min(2,3),因为23,所以返回值为2,第二次调用min(1,2),因为l2,所以返回1。 答案: B A 、 一致性 B 、 分类性 C 、 多态性 D 、 标识唯一性 A 、 30,20,10 B 、 10,20,30 C 、 456,567,678 D 、 678,567,456 A 、 构造函数可以重载,析构函数不能重载 B 、 构造函数不能重载,析构函数可以重载 C 、 构造函数可以重载,析构函数也可以重载 D 、 构造函数不能重载,析构函数也不能重裁 A 、 操作数类型 B 、 操作数个数 C 、 优先级 D 、 结合性 12、 在面向对象方法中,不属于“对象”基本特点的是( )。 13、 有以下程序: #include void fun(int a,int b,int C a=456,b=567,c=678; void main() int X=10,Y=20,Z=30; fun(X,Y,z); aoutx,Y,zA表达式可输出字符A B 、 eof()函数可以检测是否到达文件尾 C 、 对磁盘文件进行流操作时,必须包含头文件fstream D 、 以ios_base:0ut模式打开的文件不存在时,将自动建立一个新文件 A 、 提高耦合性降低内聚性有利于提高模块的独立性 B 、 降低耦合性提高内聚性有利于提高模块的独立性 C 、 耦合性是指一个模块内部各个元素间彼此结合的紧密程度 D 、 内聚性是指模块间互相连接的紧密程度 A 、 11 B 、 111 C 、 1111 D 、 11111 A 、 templateT abs(T X)return x07-x:X; B 、 template ClassT abs(T x)return x07-X:x; C 、 template Tabs(T X)return x07-x:X; D 、 template T abs(T x)return X0?-X:x; 16、 下列关于c+流的描述中,错误的是( )。 17、耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是( )。 18、 若有如下类声明: Class MyClass publiC: MyClass( )Cout1; ; 执行下列语句 MyClass a,b2,*p2; 程序的输出结果是( )。 19、 下列函数模板的定义中,合法的是( )。 20、 有如下程序: #include using namespace std; class Base int x: 定义的自定义类型的对象一起使用,至少应有一个是类对象,即不允许参数全部是c+的标准类型。故本题答案为A。 答案: A 解析: 本题考查c+流,想要输出字符“A”,则应该是cout“A”,所以本题答案为A。 答案: B 解析:模块独立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。一般较优秀的软件设计,应尽量做到高内 聚、低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性,所以A错误,B正确。耦合性是模块间互相连接的紧密程度 的度量而内聚性是指一个模块内部各个元素间彼此结合的紧密程度,所以C与D错误。 答案: B 解析: 本题考查默认构造函数和带参数的构造函数,题目中定义一一个对象a以及对象数组b2,共执行3次构造函数,对象指针不调用构造函数。所以 本题答案为B。 答案: A 解析: 本题考查模板函数的基本概念根据模板函数的定义,所以答案为A。 A 、 375 B 、 357 C 、 0375 D 、 0557 A 、 对于虚拟类型参数所对应的模板实参,如果能从模板函数的实参中获得相同的信息,则都可以省略 B 、 对于虚拟类型参数所对应的模板实参,如果它们是参数表中的最后的若干个参数,则都可以省略 C 、 对于虚拟类型参数所对应的模板实参,若能够省略则必须省略 D 、 对于常规参数所对应的模板实参,任何情况下都不能省略 A 、 B 、 C 、 D 、 public: Base(int n=0):x(n)coutn; int getX()constreturn x; ; cjass Derived:public Base int Y: J;Iublic: Derived(int m,int n):y(m),Base(n)coutm; Derived(int m):Y(m)coutm; ; int main() Derived dl(3),d2(5,7); retum 0; 执行这个程序的输出结果是( )。 21、 关于在调用模板函数时模板实参的使用,下列表述中正确的是( )。 22、 有如下程序段: int i=0,J=1; int&r=i;/ r=j;/ int*P=&i;/ *P=r;/ 其中会产生编译错误的语句是( )。 答案: C 解析: 本题考查派生类的构造函数和析构函数,在定义一个派生类的对象时,先调用基类的构造函数,然后再执行派生类的构造函数,对象释放时, 先执行派生类的析构函数。再执行基类的析构函数。本题中定义了一个对象d1,先执行基类的构造函数输出0,再执行派生类的构造函数输出3,然后 定义了一个对象d2(5,7),其中需要调用基类的构造函数输出7最后输出5,所以答案为c。 答案: D 解析: 在调用一个模板函数时,编译系统需要足够的信息来判别每个虚拟类型参数所对应的实际类型,可以从两个不同的渠道获得这样的信息:从模 板实参表(用“”括起来的参数表)或从模板函数实参表(用“()”括起来的参数表)。如果从后者获得的信息已经能够判定其中部分或全部虚拟类型参数所 对应的实际参数,而且它们又正好是参数表中最后的若干参数,则模板实参表中的那几个参数可以省略。如果模板实参表中的实参都被省略了,则空 表“”也可以不要,因此选项D错误。反之,对于某个模板实参,如果从模板函数的实参表中无法获得同样的信息,就不能省略;或者虽然能够获得同 样的信息,但在它后面还有其他不能省略的实参,则其自身还是不能省略。 答案: A 解析: 本题考查指针和引用。为引用,使用正确;中r表示一一个地址,而* P已经是一个值了,不能将一个指针赋值给一个值,所以编译错 A 、 232 B 、 231 C 、 222 D 、 221 A 、 函数9etK试图访问基类的私有成员变量k B 、 在类MyDerived的定义中,基类名MyBase前缺少关键字public、protected或private C 、 类MyDerived缺少一个无参的构造函数 D 、 类MyDerived的构造函数没有对基类数据成员k进行初始化 23、 有如下程序: #include using namespace std; class Obj static int i; public: Obj()i+; 一Obj()i一一; static int getVal()return i; ; int Obj:i=0: void f()Obj ob2;coutob2getVal(); int main() Obj obl; f(); Objob3=new Obj;coutgetVal(); delete ob3;coutObj:getVal(); return 0; 执行这个程序的输出结果是( )。 24、 有如下类定义: class MyBase int k; public: MyBase(int n=O):k(n) int value()eonstreturn k; ; class MyDerived:MyBase intj; public: MyDerived(int i):j(i) int getK()constreturn k; int getJ()constreturn j; ; 编译时发现有一处语法错误,对这个错误最准确的描述是( )。 误。 答案: D 解析: 本题考查构造函数和析构函数的调用顺序,调用顺序为先构造的后析构,后构造的先析构。本题中先定义了一个对象ob1,会执行构造函数,那 么i就变为了l;再执行函数f后,由于又定义了一个对象ob2,所以再次执行构造函数,i就变为了2,输出了2。函数执行完后执行析构函数,i变为了1, 然后又定义了对象指针,i变为了2。释放ob3后,i变为了1,所以答案为D。 答案: A A 、 设置虚基类的目的是为了消除二义性 B 、 虚基类的构造函数在非虚基类之后调用 C 、 若同一层中包含多个虚基类,这些虚基类的构造函数按它们说明的次序调用 D 、 若虚基类由非虚基类派生而来,则仍然先调用基类构造函数,再调用派生类的构造函数 A 、 O(n) B 、 O(n2) C 、 O(1092n) D 、 0(n1092n) A 、 Ns图 B 、 DFD图 C 、 PAD图 D 、 程序流程图 A 、 xvalue+XgetAmount() B 、 xgetData()一xgetAmount() 25、 下列关于虚基类的描述,错误的是( )。 26、 在长度为n的有序线性表中进行二分查找,最坏情况下需要比较的次数是( )。 27、 在软件开发中,需求分析阶段可以使用的工具是( )。 28、 有如下类声明: class Base protected: int amount; public: Base(int n=0):amount(n) int getAmount()constretum amount; ; class Derived:public Base protected: int value; public: Derived(int m,int n):value(m),Base(n) int getData()constreturn value+amount; : 已知x是一个Derived对象,则下列表达式中正确的是( )。 解析: 默认继承方式为私有继承,私有继承将基类的公用成员和保护成员都变为r私有成员,基类的私有成员依然属于基类私有,派生类不能访问基类 的私有成员。所以A选项正确。 答案: B 解析: 虚基类的引入就是为j-消除。二义性,其构造函数的调用仍然是按照继承的顺序进行的,对于多个虚基类则按它们说明的次序调用,虚基类的构 造函数先于非虚基类的构造函数执行。 答案: C 解析: 当有序线性表为顺序存储时才能用:二分法查找。可以证明的是对于长度为n的有序线性表,在最坏情况下,二分法查找只需要比较l092n次, 而顺序查找需要比较n次。 答案: B 解析: 在需求分析阶段可以使用的工具有数据流图DFD图,数据字典DD,判定树与判定表,所以选择B。 C 、 xgetData()一xamount D 、 xvalue+Xamount A 、 自然连接 B 、 交 C 、 除 D 、 并 A 、 软件过程不规范 B 、 软件开发生产率低 C 、 软件质量难以控制 D 、 软件成本不断提高 A 、 CCCC B 、 CCC C 、 CC D 、 C 29、 有三个关系R、S和T如下: 则由关系R和s得到关系T的操作是( )。 30、 下面描述中,不属于软件危机表现的是( )。 31、 有如下程序: #inClude using namespaCe std: Class CD publiC: CD()CoutC: private: Char name80; ; int main() CD a,*b,d2; return 0; 执行这个程序的输出结果是( )。 32、 类的析构函数是在( )调用的。 答案: B 解析: 本题考查公有继承中派生类对象对基类的访问属性。在公有继承中,派生类对象只能访问基类的公有成员,而不能方问基类的保护成员和私有 成员。题中x是派生类的对象,只能访问基类中公有的Base()和getAmount()成员,而不能访问保护类型的amount成员,故选项C、D错误。而类对象对类 成员的访问也存在类似的情况,即类对象只能访问类的公有成员,而value是Derived的保护成员,所以A选项也错误。故答案为B。 答案: C 解析: 如果S=T/R,则S称为T除以R的商在除运算中s的域由T中那些不出现在R中的域所组成,对于s中的任一序组,由它与关系R中每个有序组所构成 的有序组均出现在关系T中。所以本题选择C。 答案: A 解析: 软件危机主要表现在:软件需求的增长得不到满足;软件开发成本和进度无法控制;软件质撼难以保证;软件不可维护或维护程度非常低;软 件的成本不断提高;软件开发生产率的提高赶不上硬件的发展和应用需求的增长。所以选择A。 答案: B 解析: 本题考查类的析构函数题目中定义了类的一个对象a,对象指针*b,对象数组d2,当程序执行完后,析构函数执行了3次,输出“CCC”,对象 指针不会执行析构函数。所以本题答案为8。 A 、 类创建时 B 、 创建对象时 C 、 删除对象时 D 、 不自动调用 A 、 c+语言中的多态性分为编译时的多态性和运行时的多态性 B 、 编译时的多态性可通过函数重载实现 C 、 运行时的多态性可通过模板和虚函数实现 D 、 实现运行时多态性的机制称为动态绑定 A 、 友元函数是类的成员函数 B 、 类成员的默认访问权限是私有的 C 、 类成员函数必须声明为公有的 D 、 类的静态数据成员不能是常成员 A 、 10,2 B 、 12,10 C 、 12,2 D 、 2,2 33、 下列关于多态性的描述,错误的是( )。 34、 下列有关类成员的叙述中,正确的是( )。 35、 有如下程序: #inClude using namespaCe std; ClaSS A publiC: A(int i)x=i; void dispa( )Coutx,; private: int x; ; Class B:publiC A publiC: B(int i):A(i+10)x=i; vold dispb( )dispa( );Coutxendl; private: int x; ; int main( ) B b(2); bdispb( ); return 0; 执行这个程序的输出结果是( )。 答案: C 解析: 析构函数可以被函数调用,也可以被系统调用:函数体内的对象在函数结束时调用析构函数和使用delete释放对象所占用的资源。 答案: C 解析: 编译时的多态性是通过函数重载和模板体实现的,运行时的多态性是通过虚函数体实现的。 答案: B 解析: 友元函数是指某些虽然不是类成员却能访问类的所有成员的函数,故友元函数不足类的成员函数。类成员的默认访问权限是私有的,类的成员 函数r以是3种权限中的一种,静态数据成员可以为常成员。故本题答案为8。 答案: C 解析: 本题考查派生类的构造函数和基类的构造函数。本题中类B继承类A,定义了个类B的对象并初始化b(2),此时会执行类B的构造函数,执行的 结果是继承类A中的私有成员赋值了12,给类B自身的数据成员x赋值了2,执行bdispb()后,输出类A的私有成员x,输出类B自身的数据成员,所以答 案为C。 A 、 24 B 、 25 C 、 26 D 、 50 A 、 :a(n) B 、 :AA(n) C 、 a(n); D 、 a=n; A 、 a=c=A&(c=C|(z=a)&(c1;i一=2) tout*: 37、 有如下类定义: Class AA int a: PubliC: AA(int n=O):a(n) ; Class BB:publiC AA publiC: BB(int n) ; 其中横线处的缺失部分是( )。 38、 判断char型变量c是否为小写字母的正确表达式是( )。 39、 决定c+语言中函数的返回值类型的是( )。 40、 设int a=1,b=2;,则(a+)+b和a+b这两个表达式的值分别为( )。 答案: B 解析: 本题考查for循环语句,题目中每执行完循环体后,i都会减2,那么只有50到2之间的偶数才能输出“*”,所以总共输出25次。 答案: B 解析: 本题考查公用继承对基类成员的访问属性。公用继承中,基类的公用成员和保护成员在派生类中保持原有访问属性,其私有成员仍为基类私 有,本题中若要给派生类继承下来基类的私有成员赋值,那么只能调用基类的成员函数来对它赋值,成员变量默认的访问权限为私有,即a为私有变 量。所以本题答案为B。 答案: D 解析: 字符型数据在计算机内部是以ASCII码存储的,英文大写字母和小写字母在ASCII码表中都是连续的。大写字母Az是从6590,小写字母az 是从97122。所以只要变量c大于等于a并月小于等于z就能保证其为小写字母。 答案: D 解析: c+语言中,在定义该函数时所指定的数据类璎决定函数的返回值类型。 二、基本操作题二、基本操作题(18分分) 41、 请使用VC6或使用【答题】菜单打开考生文件夹projl下的工程projl。程序中位于每个“/ERROR*found料*之后的一行语句有错 误,请加以改正。改正后程序的输出结果应为: Name:Smith Age:21 ID:99999 CourseNum:12 Record:970 注意:只修改每个“/ERROR*found*”下的那一行,不要改动程序中的其他内容。 #include using namespace std; class Studentlnfo protected: /ERROR*found* char Name; int Age; int ID: int CourseNum; float Record; public: Studentlnfo(char*name,int Age,int ID,int coumeNum,float record); /ERROR *found* voidStudentlnfo() float AverageRecord() return Record/CourseNum; void show()const cout”Name:”Name”Age:”Age”ID:”ID ”CourseNum:”CourseNum”Record:”RecordID=ID: CourseNum=courseNum: Record=record; int main() Studentlnfo st(Smith”,21,99999,12,970); stshow(); return 0; (1)char*Name; (2)Studentlnfo() (3)Studentlnf0:Studentlnfo(char*name,int age,,int ID,int eourseNum,float record) 三、简单应用题(三、简单应用题(24分)分) 42、 请使用VC6或使用【答题】菜单打开考生文件夹proj2下的工程proj2,其中定义了vehiele类,并派生出motorcar类和bicycle类。然后以 motorcar和bicycle作为基类,再派生出motorcycle类。要求将Vehicle作为虚基类,避免二义性问题。请在程序中的横线处填写适当的 代码并删除横线,以实现上述类定义。此程序的正确输出结果应为: 80 150 100 1 注意:只能在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动“/*found*”。 #include class vehicle private: int MaxSpeed; int Weight; public: /*found* vehicle(int maxspeed,int weight): 答案: A 解析: 单目的+运算优先级高于双目的+运算,不过+的结合性是自右向左的,而+是自左向右的,所以上面的两个表达式都是先计算a+b的值之后,a 再自加1。 vehicle(); int getMaxSpeed()return MaxSpeed; int getWeight()retum Weight; ; /*found* class bicycle:public vehicle private: int Height; public: bicycle(int maxspeed,int weight,int height):vehicle(maxspeed,weight),Height(height) int getHeight()retum Height; ; /*found* class motorcar:public vehicle private: int SeatNum; public: motorcar(int maxspeed。int weight,int seatnum):vehicle(maxspeed,weight),SeatNum(seatnum) int getSeatNum()return SeatNum; ; /*found* class motorcycle: public: motorcycle(int maxspeed,int weight,int height):vehicle(maxspeed,weight),bicycle(maxspeed,weight, height),motorcar(maxspeed,weight,1) ; void main() motorcycle a(80,150,100); coutagetMaxSpeed()endl; coutagetWeight()endl; coutagetHeight()endl; coutagetSeatNum()endl; (1)MaxSpeed(maxspeed),Weight(weight)f; (2)virtual (3)virtua1 (4)public bicycle,public motorcar 四、综合应用题(四、综合应用题(18分)分) 43、 请使用VC6或使用【答题】菜单打开考生文件夹proj3下的工程文件proj3。本题创建一个小型字符串类,字符串长度不超过l00。程序 文件包括pmj3h、proj3cpp、writeToFileobj。补充完成重载赋值运算符函数,完成深复制功能。 屏幕上输出的正确结果应该是: Hello! Happy new year! 补充编制的内容写在“/*333*”与“/*666*”两行之间。 不得修改程序的其他部分。 注意: 程序最后调用writeToFil。函数,使用另一组不同的测试数据,将不同的运行结果输出到文件0utdat中。 输出函数writeToFile已经编译为obj文件。 /proj3h #include #include using namespace std; class MiniString pubhc: friend。8tream&operator(oatream&output,const MiniString&s)/重载流插入运算符 output(istream&input,MiniString&8)/重载流提取运算符 char temp100;/用于输入的临时数组 temp0=0:/初始为空字符串 inputset

温馨提示

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

评论

0/150

提交评论