ImageVerifierCode 换一换
格式:DOC , 页数:32 ,大小:89.50KB ,
资源ID:502461      下载积分:2000 积分
快捷下载
登录下载
邮箱/手机:
温馨提示:
如需开发票,请勿充值!快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝扫码支付 微信扫码支付   
注意:如需开发票,请勿充值!
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【http://www.mydoc123.com/d-502461.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文([计算机类试卷]国家二级(C++)机试模拟试卷185及答案与解析.doc)为本站会员(wealthynice100)主动上传,麦多课文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知麦多课文库(发送邮件至master@mydoc123.com或直接QQ联系客服),我们立即给予删除!

[计算机类试卷]国家二级(C++)机试模拟试卷185及答案与解析.doc

1、国家二级( C+)机试模拟试卷 185及答案与解析 一、选择题 1 下列叙述中错误的是 ( )。 ( A)算法的时间复杂度与问题规模无关 ( B)算法的时间复杂度与计算机系统无关 ( C)算法的时间复杂度与空间复杂度没有必然的联系 ( D)算法的空间复杂度与算法运行输出结果的数据量无关 2 设表的长度为 20。则在最坏情况下,冒泡排序的比较次数为 ( )。 ( A) 190 ( B) 20 ( C) 19 ( D) 90 3 下列叙述中正确的是 ( )。 ( A)带链栈的栈底指针是随栈的操作而 动态变化的 ( B)若带链队列的队头指针与队尾指针相同,则队列为空 ( C)若带链队列的队头指针与队

2、尾指针相同,则队列中至少有一个元素 ( D)带链栈的栈底指针是固定的 4 设一棵树的度为 3,共有 27个结点,其中度为 3, 2, 0的结点数分别为 4, 1,10。该树中度为 1的结点数为 ( )。 ( A) 12 ( B) 13 ( C) 11 ( D)不可能有这样的树 5 下面描述中正确的是 ( )。 ( A)好的软件设计应是高内聚低耦合 ( B)内聚性和耦合性无关 ( C)内聚性是指多个模块间相互连接的紧 密程度 ( D)耦合性是指一个模块内部各部分彼此结合的紧密程度 6 某系统总体结构如下图所示 该系统结构图的最大扇出数、最大扇人数的总和是 ( )。 ( A) 5 ( B) 7 (

3、 C) 4 ( D) 8 7 下面属于应用软件的是 ( )。 ( A)人事管理系统 ( B) Oracle数据库管理系统 ( C) C编译系统 ( D) ios操作系统 8 下面选项中不是关系数据库基本特征的是 ( )。 ( A)不同的列应有不同的数据类型 ( B)不同的列应有不同的列名 ( C)与行的次序无关 ( D)与 列的次序无关 9 工厂生产中昕需的零件可以存放在多个仓库中,而每一仓库中可存放多种零件。则实体仓库和零件间的联系是 ( )。 ( A)多对多 ( B)一对多 ( C)多对一 ( D)一对一 10 学生和课程的关系模式定义为 S(S#, Sn, Sd, De, SA)(其属性

4、分别为学号、姓名、所在系、所在系的系主任、年龄 ); C(C#, Cn, P#)(其属性分别为课程号、课程名、先选课 ); SC(S#, C#, G)(其属性分别学号、课程号和成绩 )。 关系中包含对主属性传递依赖的 是 ( )。 ( A) S#Sd , SdDc ( B) S#Sd ( C) S#sd , (S#, C#)G ( D) C#P#, (S#, C#)G 11 下列选项中,不属于 C关键字的是 ( )。 ( A) for ( B) then ( C) inline ( D) while 12 下列选项中,错误的 C表达式是 ( )。 ( A) a 1 ( B) b 65 ( C)

5、 int(x) ( D) x 33 13 有如下程序段 int k 10; do cout *; while(k ); 运行时显示字符 *的个数是 ( )。 ( A) 8 ( B) 9 ( C) 10 ( D) 11 14 下列关于符号常量的叙述中,错误的是 ( )。 ( A)定义符号常量时要使用关键字 const ( B)符号常量在使用前必须先进行定义 ( C)符号常量的值在定义后可以修改 ( D) true是 C中预定义的符号常量 15 下列关于 new和 delete运算符的叙述中,错误的是 ( )。 ( A)使用 new运算符创建对象时要调用构造函数 ( B) new运算符返回指向操作

6、数类型变量的指针 ( C) new申请的动态空间应由 delete释放 ( D) delete运算符不能释放用 New申请的整个动态数组空间 16 下列字符串中不能作为 C标识符使用的是 ( )。 ( A) ab1N25 ( B) test3 ( C) 1481 ( D) _123 17 下列语句中正确的是 ( )。 ( A) const int*pNULL; ( B) const int y 99; ( C) const int x 0: ( D) const int z 100: 18 有如下程序: #inelude iostream using namespace std: int ma

7、in( ) int sum 0: for(int i 1; i 4; i ) for(int j 1; j i; j )sum j; cout sum end1: return 0: 运行后的输出结果是 ( )。 ( A) 20 ( B) 17 ( C) 16 ( D) 14 19 下列 选项中,不属于 C关键字的是 ( )。 ( A) byte ( B) namespace ( C) enum ( D) union 20 有如下枚举类型定义: enum DAY SUN, MON 10, TUE, WED, THU, FRI 20, SAT; 执行下列程序段 for(int i 0; i TH

8、U; i ) cout a end1: 输出字符 a的个数是 ( )。 ( A) 13 ( B) 16 ( C) 19 ( D) 22 21 下列各 程序段中与语句 temp a b?(b? c 1: 0): 0; 等价的是 ( )。 ( A) if(a b)&(b c) temp 1; else temp 0; ( B) if(a b)(b c) temp 1; else temp 0; ( C) if(a b) temp 0; else if(b c) temp 1; else temp 0: ( D) if(a b) temp 1; else if(b c) temp 1: else t

9、emp 0: 22 下列有关指针的操作中,正确的是 ( )。 ( A) int a 10; void*ptr &a; cout *(ptr); ( B) int*ptr new int10; delete ptr; ( C) int Array4; *( Array 3) 10; ( D) int*ptr: new int*10; 23 下列关于运算符重载的叙述中,错误的是 ( )。 ( A)运算符重载函数 不能改变运算符原有的优先级 ( B)重载运算符至少有一个操作数的类型是用户定义类型 ( C)运算符重载函数能够改变运算符原有的操作数个数 ( D)有的运算符可以作为非成员函数重载 24 下

10、列关于运算符函数的叙述中,错误的是 ( )。 ( A)运算符函数的参数表可能是空的 ( B)运算符函数可以创造一个新的运算符 ( C)运算符函数的名称是以 operator为前缀的 ( D)运算符函数的参数类型可以是类 25 下列运算符中,既可作为类成员函数重载,又可作为非成员函数重载的是( )。 ( A) ( B) ( C)输入流的提取运算符 ( D)输出流的插入运算符 26 下列关于运算符函数的叙述中,错误的是 ( )。 ( A)运算符函数的名称总是以 operator为前缀 ( B)有的运算符不能重载 ( C)即使没有重载运算符,也可用进行对象间的赋值 ( D)可以为重载运算符函数的参数

11、设置默认值 27 下列关于运算符重载的叙述中,错误的是 ( )。 ( A)运算符函数的名称总是以 operator为前缀 ( B)重载运算符时应保持其优先级不变 ( C)可以为运算符函数指定 默认参数 ( D)运算符重载是多态性的一种表现 28 下列关于构造函数的叙述中,错误的是 ( )。 ( A)构造函数在创建类对象时自动执行 ( B)可以为构造函数的参数设置默认值 ( C)构造函数要负责对静态数据成员进行初始化 ( D)复制构造函数的参数是对同类对象的引用 29 下列关于友元的叙述中,错误的是 ( )。 ( A)关键字 friend用于声明友元 ( B)友元必须在类体中声明 ( C)友元函

12、数通过 this指针访问对象成员 ( D)一个类的成员函数可以是另一个类的友元 30 下 列关于 this指针的叙述中,正确的是 ( )。 ( A)不能显式使用 this指针 ( B)类的友元函数中都有 this指针 ( C) this指针隐含于类的每一个静态成员函数中 ( D) this指针指出了成员函数当前操作的数据所属的对象 31 下列关于常成员的叙述中,正确的是 ( )。 ( A)常成员函数只能由常对象调用 ( B)常成员函数不能更新对象的状态 ( C)常数据成员可以被类对象共享 ( D)常数据成员可以在构造函数体中初始化 32 有如下类定义和变量定义: class A public:

13、 A( )data 0; A(int x)data x; A( ) void outData( )cout data; int getData(int n)eonst return data * n; private: int data; ; A a(5); const A b(8); 下列函数调用中错误的是 ( )。 ( A) a outData( ); ( B) b outData( ); ( C) a getData(10); ( D) b getData(10); 33 建立一个类对象时,系统自动调用 ( )。 ( A)析构函数 ( B)友元函数 ( C)静态函数 ( D)构造函数 3

14、4 有如下程序: #include iostream using namespaee std; int fun(char x, char y) if(x y) return x; return y; int main( ) int a(9), b(8), e(7); cout fun(fun(a, h), fun(b, c); return 0; 运行后的输出结果是 ( )。 ( A) 8 ( B) 9 ( C) 7 ( D)函数调用出错 35 计算数列第 11项的函数定义如下: int fa(int n) if(n 0)return 0; else if(n 1)return 1; else

15、 return fa(n 1) fa(n 2); 若执行函数调用表达式 fa(3)时,返回的函数值为 ( )。 ( A) 0 ( B) 1 ( C) 2 ( D) 3 36 有如下程序; #include iostream using namespace std; void hey(_, int&b) int c; c a; a b; b c; int main( ) int m 14, n 20; hey(n1, n); cout m n: return 0; 运行后的输出结果是 “1414”,则横线处的语句应为 ( )。 ( A) int *a ( B) int &a ( C) int a

16、 ( D) a 37 有如下程序: #include iostream using namespace std; void f(int i)cout i ; void f(double d)cout d*2 ; int main( ) f(3 0); f(3); return 0; 运行后的输出结果是 ( )。 ( A) 6 3 ( B) 6 0 3 ( C) 3 6 ( D) 3 6 0 38 有如下程序: #include iostream using namespaee std; class Goods货物类 double unit_price;单价 int quantity;数量 pu

17、blic: Goods(double u 0 0, int q 0): unit_price(u), quantity(q) double getPrice( )eonstreturn unit_price; 返回单价 int getQuantity( )constreturn quantity; 返回数量 增加数量 Goods operator (int q)const return Goods(unit_price, quantity q); ; 增加数量 Goods operator (_)return g q; 输出货物信息 ostream&operator (ostream& os,

18、 Goods g) cout “单价: “ g getPrice( ) , “数量: “ g getQuantity( ) end1; return OS; f; int main( ) Goods g(35 6, 100); cout g g 33 25 g; return 0; 若运行后的输出结果是: 单价: 35 6,数量: 100 单价: 35 6,数量: 133 单价: 35 6,数量: 125 则程序中下划线处缺失部分应该是 ( )。 ( A) Goods q, Goods g ( B) Goods g, Goods q ( C) int q, Goods g ( D) Goods

19、 g, int q 39 下列关于类的静态成员的叙述中,错误的是 ( )。 ( A)静态成员函数可以直接访问类中的所有成员 ,无需对象名 ( B)静态成员属于类,为该类所有对象共享 ( C)静态数据成员必须在类外进行初始化 ( D)即使没有定义任何对象,也可以使用该类的公有静态成员 40 有如下类定义: class MyClass int k; public: MyClass(int n): k(n) ; 则下列数组定义中,错误的是 ( )。 ( A) MyClass m4 4 MyClass(1), MyClass(2), MyClass(3), MyClass(4); ( B) MyCla

20、ss m4 MyClass(1), MyClass(2), MyClass(3); ( C) MyClass m44 1, 2, 3; ( D) MyClass m4 1, 2, 3; 二、基本操作题 41 请使用 VC6或使用【答题】菜单打开考生文件夹 proj1下的工程 proj1,该工程中包含程序文件 main cpp,其中有类 Door(“门 ”)和主函数 main的定义。程序中位于每个 “ ERROR*found*”之后的一行语句有错误,请加以改正。改正后程 序的输出结果应为: 打开 503号门 门是锁着的,打不开。 打开 503号门的锁 锁开了。 打开 503号门 门打开了。 打开

21、 503号门 门是开着的,无须再开门。 锁上 503号门 先关门 门锁上了。 注意:只修改每个 “ ERROR*found*”下的那一行,不要改动程序中的其他内容。 #include iostream using namespaee std; class Door int rlum;门号 bool closed; true表示门关着 bool locked; true表示门锁着 public: Door(int num) ERROR*found* num this num; dosed locked true: bool isClosed( )eonst return closed; 门关着时

22、返回 true,否则返回 false bool isOpened( )eonst return!closed; 门开着时返回 true,否则返回 false bool isLoeked( )eonst return locked; 门锁着时返回 true,否则返回 false bool isUnlocked( )eonst return!locked; 门未锁时返回 true,否则返回 false void open( ) 开门 cout end1 “打开 “ num “号 门 “ ; ERROR *found* if(closed) cout “门是开着的,无须再开门 “; else if(

23、locked) cout “门是锁着的,打不开。 “; else closed false; cout “门打开了。 “; void close( ) 关门 cout end1 “关上 “ num “号门 “ ; if(closed) cout “门是关着的,无须再关门。 “; eise closed true: cout “门关上了。 “; ERROR*found* void lock( )const锁门 cout end1 “锁上 “ num “号门 “ ; if(locked) cout “门是锁着的,无须再锁门。 “; else if(!closed) cout “先关门 “ ; cl

24、osed true; locked true; cout “门锁上了。 “; void unlock( ) 开锁 cout end1 “开 “ num “号门的锁 “ ; if(!locked) cout “门没有上锁,无须再开锁。 “; else locked false; cout “锁开了。 “; ; int main( ) Door door(503); door open( ); door unlock( ); door open( ); door open( ); door lock( ); return 0; 三、简单应用题 42 请使用 VC6或使用【答题】菜单打开考生文件夹

25、proj2下的工程 proi2,此工程包含有一个源程序文件 proj2 cpp,其中定义了 Stack类和 ArrayStaek类。 Stack是一个用于表示数据结构 “栈 ”的类,栈中的元素是字符型数据。 Stack为抽象类,它只定义了栈的用户接口,如下所示: 公有成员函数 功能 push 入栈:在栈顶位置添加一个元素 pop 退栈:取出并返回栈顶元素 ArrayStack是 Stack的派生类,它实现了 Stack定义的接口。 ArrayStack内部使用动态分配的字符数组作为栈元素的存储空间。数据成员 maxSize表示的是栈的最大容量, top用于记录栈顶的位置。成员函数 push和

26、pop分别实现具体的人栈和退栈操作。 请在程序中的横线处填写适当的代码,然后删除横线,以实现上述功能。此程序的正确输出结果应为: a, b, c c, b, a 注意:只在指定位置编写适当代码,不要改动程序中的其他内容,也不要删除或移动 “ *found*”。 proj2 cpp #include iostream using namespaee std; class Stack public: virtual void push(ehar c) 0; virtual char pop()v0; ; class ArrayStack: public Stack char * P; int ma

27、xSize; int top; public: ArrayStack(int s) top 0; maxSize s: *found* P _; ArrayStaek() *found* _; void push(char c) if(top maxSize) cerr “Overflow! n“: return; *found* _; top: char pop() if(top 0) CelT “Underflow! n“: return 0: top; *found* _; ; void f(Stack& sRef) char ch a, b, e; cout ch0 “, “ ch1

28、“, “ ch2 end1; sRef push(ch0); sRef push(ch1); sRef push(ch2); cout sRef pop() “, “; cout sRef pop() “, “; cout sRef pop() end1; int main() ArrayStack as(10); f(aus): return 0; 四、综合应用题 43 请使用 VC6或使用【答题】菜单打开考生文件夹 proj3下的工程 proj3,其中声明的 CDeepCopy是一个用于表示矩阵的类。请编写这个类的赋值运算符成员函数operator,以实现深层复制。 要求: 补充编制的内容

29、写在 “ *333*”与“*666*”之间。不得修改程序的其他部分。 注意:程序最后将结果输出到文件 cut dat中。输出函数 writeToFile已经编译为 obj文件,并且在本程序中调用。 CDeepCopy h #include iostream #include string using namespace std; class CDeepCopy public: int n; 动态数组的元素个数 int *p;动态数组首地址 CDeepCopy(int); CDeepCopy( ); CDeepCopy&operator (const CDeepCopy&r); 赋值运算符函数

30、; void writeToFile(char *); main cpp #include“CDeepCopy h“ CDeepCopy CDeepCopy( )delete p; CDeepCopy CDeepCopy(int k)n k; p new intn; 构造函数实现 CDeepCopy& CDeepCopy operator (const CDeepCopy&r)赋值运算符函数实现 *333* *666* int main( ) CDeepCopy a(2), d(3); a p0 1; d p0 666;对象 a, d数组元素的赋值 CDeepCopy b(3);调用赋值运算符

31、函数 a p0 88; b a; cout b p0;显示内层局部对象的数组元素 cout d p0; 显示 d数组元素 a p0的值 cout “d fade away; n“; cout a p0;显示 a数组元素 a p0的值 writeToFile(“ “); return 0; 国家二级( C+)机试模拟试卷 185答案与解析 一、选择题 1 【正确答案】 A 【试题解析】 算法的时间复杂度是指执行算法所需要的计算机工作量,而算法的计算机工作量是用算法所执行的基本运算次数来度量的,算法所执行的基本运算次数和问题的规模有关。算法的 空间复杂度指执行这个算法所需要的内存空间。为降低算法的

32、空间复杂度,主要应减少输入数据所占的存储空间及额外空间,通常采用压缩存储技术。由于在编程时要受到计算机系统运行环境的限制,因此,程序的编制通常不可能优于算法的设计。算法执行时所需要的计算机资源越多算法复杂度越高,因此算法的复杂度和问题规模成正比。算法设计时要考虑算法的复杂度,问题规模越大越是如此。 算法的时间复杂度与空间复杂度没有必然的联系。算法的空间复杂度与算法运行输出结果的数据量无关。故本题答案为 A选项。 2 【正确答案】 A 【试 题解析】 对长度为 n的线性表排序,在最坏情况下,冒泡排序需要比较的次数为 n(n 1) 2。本题中玎 20, 20(20 1) 2 190。故本题答案为

33、A选项。 3 【正确答案】 A 【试题解析】 由于带链栈利用的是计算机存储空间中的所有空闲存储结点,因此随栈的操作栈顶栈底指针动态变化。带链的队列中若只有一个元素,则首尾指针相同。故本题答案为 A选项。 4 【正确答案】 A 【试题解析】 在树结构中,一个结点所拥有的后件个数称为该结点的度,所有结点中最大的度称为树的度。根据题意,度为 3的树第 1层 1个根结点,第 2层 3个子结点,每个子结点下各 3个子结点,所以第 3层共 9个子结点,前 3层共 13个结点。第 3层有一个结点度为 2即有 2个子结点,本层其他结点各 1个子结点;即第 4层共 10个结点。前 4层共 23个结点。第 4层中

34、的两个结点下各有一个子结点,即第 5层有 2个结点,此 2个结点下各有一个子结点。第 3层有 8个度为 1的结点,第 4层有 2个度为 1的结点,第 5层有 2个度为 1的结点, 8 2 2 12。故本题答案为 A选项。 5 【正确答案】 A 【试题解析】 软件设计中模块划分应遵循的准则是高内聚低偶合、模块大小 规模适当、模块的依赖关系适当等。模块的划分应遵循一定的要求,以保证模块划分合理,并进一步保证以此为依据开发出的软件系统可靠性强,易于理解和维护。模块之间的耦合应尽可能的低,模块的内聚度应尽可能的高。故本题答案为 A选项。 6 【正确答案】 A 【试题解析】 模块的扇出是指本模块的直属下

35、层模块的个数。或者说是由一个模块直接调用的其他模块数。模块的扇人是指有多少个上级模块调用它。题干中某系统为一个模块,其扇出数目为 3,功能 2模块扇出数为 3,功能 3模块扇出数为2,功能 2 2扇出数目为 2,故最大扇出数为 3。 功能 2 2 2有 2个上级模块调用,为最大扇人数。 3 2 5。故本题答案为 A选项。 7 【正确答案】 A 【试题解析】 系统软件是管理计算机的资源,提高计算机的使用效率,为用户提供各种服务的软件,包括各种系统开发、维护工具软件。应用软件是为了应用于特定的领域而开发的软件。人事管理系统属于应用软件。 Oracle数据库管理系统、 C编译系统、 ios操作系统是

36、系统软件。故本题答案为 A选项。 8 【正确答案】 A 【试题解析】 二维表由每行数据组成,每行数据包含若干属性值,每个属性都有指定的类型 和取值范围。数据行数是有限的,每行数据互不相同 (元组唯一性 ),每行的次序可以任意交换 (元组的次序无关性 ):表中属件名符不相同即宁段名不重复,属性名 (字段名 )次序可任意交换。故本题答案为 A选项。 9 【正确答案】 A 【试题解析】 零件可以存放在多个仓库中,而每一仓库中可存放多种零件,则实体仓库和零件间的联系是多对多。故本题答案为 A选项。 10 【正确答案】 A 【试题解析】 设 X、 Y、 Z是关系 R中互不相同的属性集合,存在XY(Y!X

37、) , YZ ,则称 Z传递函数依赖于 X。在 S中 S#Sd , SdDc ,则Dc传递函数依赖于 S#。故本题答案为 A选项。 11 【正确答案】 B 【试题解析】 选项 A是关键字,表示 for循环语句;选项 C是关键字,用来定义内联函数;选项 D是关键字,表示 while循环语句,本题答案为 B。 12 【正确答案】 D 【试题解析】 选项 A中,后缀自增运算符的优先级高于加法运算符,先将 a的值作为表达式 a的值,参与后续 1运算,然后将 a的值自增 1,正确;选项B判断字符常量 b的 ASCII码与整型常量 65是否相等,正确;选项 C是将 x的值强制转换为整数类型, 正确;选项

38、D中,不能构成复合赋值运算符,错误,本题答案为 D。 13 【正确答案】 D 【试题解析】 题意中首先执行一次 dowhile 循环馇,签后判断 k的值是否为真,如果为真,继续执行循环体,否则循环终止;由于 k是后缀自减运算表达式,所以先将 k的值作为整个表达式的值,再将 k执行自减运算, k初值为10,所以当 k取值分别为 10, 9 , 1时,循环条件都为真,执行 10次循环体,综 E总共执行 1 1次循环体,输出 11个 *,本题答案为 D。 14 【正确答案】 C 【试题解析】 C中, 定义一个符号常量使用摹键字 const,选项 A正确; C中所有的变量或符号常量都必须先定义后使用,

39、选项 B正确; true是 C中预定义的符号常量,选项 D正确;符号常量的值在定义以后不可以被修改,选项C错误;本题答案为 C。 15 【正确答案】 D 【试题解析】 对象创建时需要调用类的构造函数,使用 new运算符创建对象时也需要,选项 A正确; new运算符创建对象时,返回一个指向操作数类型变量的指针,选项 B正确; new申请的动态空间应由 delete释放,选项 C正确;使用new申请的整个动态数组空间使用 delete释放,选项 D错误,本题答案为 D。 16 【正确答案】 C 【试题解析】 C的标识符命名规则是:标识符可以由字母、数字和下划线组成,并且第一个字符必须是字母或下划线

40、。选项 A、 B、 D都正确,选项 C以数字作为第一个字符,不合法,本题答案为 C。 17 【正确答案】 B 【试题解析】 const关键字用来定义常量,定义的同时必须完成初始化,而初始化需要使用赋值运算符指定初值,选项 A没有初始化,错误;选项 C使用关系运算符进行赋值运算,错误;选项 D不是初始化语句,错误;选项 B定义整型变 量y为常量,值为 99,正确,本题答案为 B。 18 【正确答案】 A 【试题解析】 题意程序中 sum初值为 0,两个嵌套的 for循环将循环体中 j的当前值累加到 sum中,其中外层 for循环中, i取值为 1时,内嵌 for循环的 i取值为 1, sum累加

41、 1;当 i取值为 2时, j取值为 1, 2, sum累加 3;当 i取值为 3时, j取值为 1, 2, 3, sum累加 6;当 i取值为 4时, j取值为 1, 2, 3, 4, Sum累加 10;综上 for循环执行结束后, Sum的值为 1 3 6 10 20本题答案为A。 19 【正确答案】 A 【试题解析】 选项 B是命名空间的关键字,正确;选项 C是枚举类型的说明符,是关键字,正确;选项 D是联合体类型的说明符,是关键字,正确;选项 A表示字节,是存储空间大小的表示单位,不属于关键字,错误,本题答案为 A。 20 【正确答案】 A 【试题解析】 题意定义了枚举类型 DAY,系

42、统按定义时的顺序从 0开始对它们递增赋值,如果其中某个常量指定了初值 x,那么该常量后的所有常量会从 X 1开始赋值;所以题意程序的枚举常量 SUN的初值 0, MON初值 10, TUE初值11, WED初值 12, THU初值 13, FRI初 值为 20, SAT初值 21,所以 for循环中i取值为 0 12,执行 13次 for循环体,输出字符 a个数为 13,本题答案为 A。 21 【正确答案】 A 【试题解析】 题意中,表达式 temp a b?(b c?1: 0): 0是条件运算表达式,首先执行 b c?1: 0,当 b c时,值为 1;当 b c时,值为 0;接着执行 ab?

43、(x): 0,其中 x的值为 1或 0,当 a b时, temp的值为 x,否则 temp的值为0;所以当 a b目 b c时: temp 1,否则 temp 0,答案 A满足,本题答案为A。 22 【正确 答案】 C 【试题解析】 选项 A首先定义整型变量 a,初值为 10;然后定义 void类型指针ptr,将 a的地址赋给 ptr,由于 a的类型和 ptr的类型不同,所以不能直接赋值,A错误;选项 B动态分配 10个整型数的存储空间,首地址赋给 ptr,释放 ptr时需要使用 delete, B错误;选项 C定义数组 Arrrdy,它包含 4个整型元素,然后将与数组首地址 Array偏移

44、3个整型数的地址指向的元素,赋值为 10,即Array3 10,正确;选项 D使用 new运算符动态分配 10个整型指针元素的存储空间,首地址赋给 ptr,所以 ptr必须是一个指向指针的指针 int*ptr,错误;本题答案为 C。 23 【正确答案】 C 【试题解析】 C中,运算符重载的规则有:不允许定义新的运算符;重载不能改变运算符运算对象 (操作数 )的个数;重载不能改变运算符的优先级;重载不能改变运算符的结合性;运算符重载函数可以是类的成员函数,有些运算符也可以作为非成员函数重载;重载运算符至少有一个操作数的类型是用户定义类型;综上选项 A、 B、 D正确;选项 C错误,本题答案为 C

45、。 24 【正确答案】 B 【试题解析】 C中,对于单目 运算符的运算符重载,操作数可能是类对象,所以参数表可能是空,选项 A正确;运算符重载不允许定义新的运算符,选项 B错误;运算符函数的名字是以 operator为前缀,选项 C正确;运算符函数的参数类型可以是类,选项 D正确;本题答案为 B。 25 【正确答案】 B 【试题解析】 C中,赋值运算符必须重载为类成员函数,选项 A不满足;对于输入流的提取运算符合输出流的插入运算符,正常用法是左操作数是 IO类型,而不是该类的类对象,所以必须将它们定义为非成员函数,选项 C、D不满足,本题答案为 B。 26 【正确答案】 D 【试题解析】 C中

46、,算符函数的名字是以 operator为前缀,选项 A正确;作用域操作符 、成员引用运算符等不能被重载,选项 B正确;若没有重载赋值运算符,编译器会在需要的时候,为类生成一个默认的赋值构造函数,来进行对象间的赋值,选项 C正确;除了函数调用操作符 operator( )之外,重载操作符时使用默认实参是非法的,选项 D错误;本题答案为 D。 27 【正确答案】 C 【试题解析】 C中,算符函数的名字是以 operator为前缀,选项 A正确;重载不能改变运算符的 优先级,选项 B正确;除了函数调用操作符 operator( )之外,重载操作符时使用默认实参是非法的,选项 C错误;运算符重载是多态性表现,使得运算符可以根据操作数类型的不同,调用不同的重载函数,选项 D正确;本题答案为 C。 28 【正确答案】 C 【试

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1