1、国家二级( C+)笔试模拟试卷 84及答案与解析 1 下面关于对象概念的描述中, ( )是错误的。 ( A)对象就是 C语言中的结构体变量 ( B)对象代表着正在创建的系统中的一个实体 ( C)对象是一个状态和操作 (或方法 )的封装体 ( D)对象之间的信息传递是通过消息进行的 2 结构化程序设计所规定的三种基本控制结构是 ( )。 ( A)顺序结构、选择结构、循环结构 ( B)输入、输出、处理 ( C) for、 while、 switch ( D)主程序、子程序、函数 3 下列程序的运行结果 是 ( )。 #include iostream.h class A inta; public:
2、 A()a=0: A(int aa) a=aa; couta+; ; void main() A x, y(2), z(3); coutendl; ( A) 0 ( B) 23 ( C) 34 ( D) 25 4 已知 fl(int)是类 A的公有成员函数, p是指向成员函数 fl()的指针,采用赋值,( )是正确的。 ( A) p=fl ( B) P=A:fl ( C) P=A:fl() ( D) P=fl() 5 C+语言中的基本数据类型是 ( )。 ( A)整型、浮点型、逻辑型、无值型和类类型 ( B)整型、字符型、浮点型、无值型和逻辑型 ( C)整型、浮点型、字符型、逻辑型和枚举型 (
3、 D)整型、浮点型、逻辑型、无值型和指针型 6 下列叙述中错误的是 ( )。 ( A)一个函数中可以有多条 return语句 ( B)调用函数必须在一条独立的语句中完成 ( C)函数中通过 return语句传递函数值 ( D)主函数名 main也可以带有形参 7 结构化程序设计主要强调的是 ( )。 ( A)程序的规模 ( B)程序的效率 ( C)程序设计语言的先进性 ( D)程序易读性 8 下面关于友元的描述中,错误的是 ( )。 ( A)友元函数可以访问该类的私有数据成员 ( B)一个类的友元类中的成员函数都是这个类的友元函数 ( C)友元可以提高程序的运行效率 ( D)类与类之间的友元关
4、系可以继承 9 C+语言中 while循环和 dowhile 循环的主要区别是 ( )。 ( A) dowhile 的循环体至少五条件执行一次 ( B) while的循环控制条件比 dowhile 的循环控制条件严格 ( C) dowhile 允许从外部转到循环体内 ( D) dowhile 的循环体不能是复核语句 10 对类的构造函数和析构函数描述正确的是 ( )。 ( A)构造函数可以重载,析构函数不能重载 ( B)构造函数不能重载,析构函数可以重载 ( C)构造函数可以重载,析 构函数也可以重载 ( D)构造函数不能重载,析构函数也不能重载 11 下列选项中不全是 c+语言关键字的是 (
5、 A) const, break, default ( B) long, void, using ( C) virtual, extern, include ( D) try, throw, this 12 以下 C+语言中用于单行注释的是 ( A) / ( B) /* ( C) */ ( D) | 13 在 32位的计算机中,一个 char型数据所占的内存长度的字节是 ( A) 4 ( B) 1 ( C) 2 ( D) 8 14 若变量已正确定义并赋值,以下符合 C+语言语法的表达式是 ( A) a:=b+1 ( B) a=b=c+2 ( C) int 18.5%3 ( D) a=a+7=c
6、+b 15 有如下程序: #include“iostrearn.h“ void main( ) int x=1,a=0, b=0; switch(x) case 0:b+; case 1:a+; case 2:a+;b+; cout “a=“ a “,“ “b=“ b; 该程序的输出结果是 ( A) a=2, b=1 ( B) a=1, b=1 ( C) a=1, b=0 ( D) a=2, b=2 16 有以下程序 #include“iostream.h“ void main( ) int i=1,j=1,k=2; if(j+|k+) /3 A(int i)i+; /4 ; ( A) 1 (
7、 B) 2 ( C) 3 ( D) 4 22 以下关于 C+语言类的说法中正确的是 ( A) C+语言的默认访问权限是 private ( B) c+语言中的类定义,用户一定要自己定义一个构造函数用于实例化类 ( C) c+语言中的成员函数的实现部分一定要写在类定义外 ( D) C+语言中的类不能够嵌套定义 23 下列描述中错误的是 ( A)派生类可以作为基类派生其他的子类 ( B)派生类继承基类的所有数据成员 ( C)派生类可以有多个基类 ( D)派生类不能继承一些函数成员 24 派生类对象对其基类中的什么成员是可访问的 ? ( A)公有继承的私有成员 ( B)私有继承的公有成员 ( C)私
8、有继承的保护成员 ( D)保护继承的保护成员 25 下列运算符中哪些是不能够被重载的 ? ( A) .,.*,- *,:,?: ( B) +,-,new,delete,= ( C) sizeof,new,delete,+,- ( D) sizeof,new,delete,+,- 26 下列关于运算符重载不正确的是 ( A)运算符重载不能改变运算符的操作数个数 ( B)运算符重载不能改变运算符的优先级 ( C)运算符重载不能改变运算符的结合性 ( D)运算符重载能改变对预定义类型数据的操作方式 27 下列关于函数模板实参不能省略的情况说明不正确的是 ( A)从模板函数实参表获得的信息有矛盾 (
9、B)需要获得特定类型的返回值,而不管参数的类型如何 ( C)虚拟类型参数没有出现在模板函数的形参表中 ( D)函数模板不 含有常规形参 28 对于重载的运算符,它是一个 ( A)用于输入的友元函数 ( B)用于输入的成员函数 ( C)用于输出的友元函数 ( D)用于输出的成员函数 29 表达式 10 5 for(i=0;stri!=0;i+) switch(stri) case1: x4+; case2: x3+; case3: x2+; case4: x1+; cout x1 “, “ x2 “,“ x3 “, “ x4; ( A) 8, 6, 4, 1 ( B) 8, 6, 3, 2 (
10、C) 8, 8, 4, 1 ( D) 8, 6, 4, 2 36 在树形结构中,树根结点没有【 】。 37 Jackson结构化程序设计方法是英国的 M Jackson提出的,它是一种面向【 】的设计方法。 38 面向对象的模型中,最基本的概念是对象和【 】。 39 软件设计模块化的目的是【 】。 40 数据模型按不同应用层次分 成 3种类型,它们是概念数据模型、【 】和物理数据模型。 41 C+中封装性、继承性和【 】是面向对象思想的主要特征。 42 下面程序的结果为 【 】 。 #include iostream.h void main( ) int a=1, b=2; bool c=1;
11、 if(a b) |c) cout “true“ end1; else cout “false“ end1; 43 下列 for语句的循环次数为【 】。 for (int a=0, b=1; bi+) cout ai “ “; cout end1; 45 C+程序是从【 】函数开始执行的。 46 假定 A为一个类,则语句 A(A cout a; cout endl; 50 静态成员函数可以直接访问类的【 】成员,不能直接访问类的【 】成员。 国家二级( C+)笔试模拟试卷 84答案与解析 1 【正确答案】 A 2 【正确答案】 A 3 【正确答案】 B 4 【正确答案】 B 5 【正确 答案】
12、 B 6 【正确答案】 D 7 【正确答案】 D 8 【正确答案】 D 9 【正确答案】 A 10 【正确答案】 A 11 【正确答案】 C 【试题解析】 要熟练掌握 C+语言中的关键字。注意: include不是 C+语言的关键字。注意: define也不是关键字 12 【正确答案】 A 【试题解析】 C+语言中的注释与 C语言不同, C语言的注释符号只有 /* */,而C+在此基础上又加上了 /,此注释用于单行注释。注意:注释不影响程序的运行。 13 【正确答 案】 B 【试题解析】 char型数据所占内存的大小为 1个字节。注意: int型数据占内存的大小为 4个, cong doubl
13、e, double占内存的大小为 8个字节。注意:求字节数用 sizeof运算符。 14 【正确答案】 B 【试题解析】 a=b=c+2实际上相当于 a=(b=c +2),进而可分解为两个表达式:b=c+2和 a=b。注意:选项 A中包含一个不合法的运算符 “:=“;选项 C应改为(int)18.5%3;选项 D可理解为两个表达式: a+7=c+b和 a=a+7,其中第一个是错的,因为 C+语 言规定赋值号的左边只能是单个变量,不能是表达式或常量等。注意: c+语言赋值语句的运用。 15 【正确答案】 A 【试题解析】 该题目的关键是要搞清楚该程序执行了哪几条语句。由于 x的值等于 1,所以
14、switch结构中,程序从 case1后面的语句开始执行,又因为 casel后面的语句没有以 break结束,所以程序要继续往下执行 case 2后面的语句。所以,该程序共执行了这三条语句: a+; a+;b+;,因此,变量 a和 b最后的值应该为 2和 1。注意: break语句可以结束 switch语句。 16 【正确答案】 C 【试题解析】 该题目的关键是要搞清楚 “|”和 “c+语言的类是可以嵌套定义的,故选项 D错误; c+语言中成员函数的实现部分也可以写在类定义内,故选项 C错误。注意:函数不能嵌套 定义。 23 【正确答案】 B 【试题解析】 c+语言中通常有 3种继承修饰符 p
15、ublic, protected和 private,限制依次严格,另外对类中的数据和函数也有这 3种修饰符进行限制。一个派生类能不能继承基类的所有数据成员受它们的限制。注意: c+语言中继承关系的修饰符 pub Iic, protected和 private的运用。 24 【正确答案】 D 【试题解析】 c+语言中通常有三种继承修饰符 public, protected, private,限制依次严格,另外对类中的数据和 函数也有这三种修饰符进行限制,有 3种是不能继承的:公有继承基类的私有成员,私有继承基类的私有成员,保护继承基类的私有成员。 25 【正确答案】 A 【试题解析】 c+语言中
16、的不能重载的操作符是 ., *, - *, :和 ?:。 26 【正确答案】 D 【试题解析】 运算符重载的规则是重载时不能改变运算符的操作数个数,不能改变运算符的优先级,不能改变运算符的结合性,不能改变对预定义类型数据的操作方式。注意:运算符重载的关键字是 operator。 27 【正确答案】 D 【试题解析】 函数模板实参不能省略的情况在 C+语言中一共有 4种: 从模板函数实参表获得的信息有矛盾; 需要获得特定类型的返回值,而不管参数的类型如何; 虚拟类型参数没有出现在模板函数的形参表中; 函数模板含有常规形参。注意:模板形参分为两种类型;虚拟类型参数和常规参数。 28 【正确答案】
17、A 【试题解析】 C+语言中和运算符都是友元函数重载,分别用于输出和输入。注意:运算符 只能作为成员函数重载。 29 【正确答案】 C 【试题解析】 逻辑与运算符为真的前提是两边的表达式都为真,本题 中 6%3的值为 0,显然该表达式的值应该为 o。注意: /是整除运算符,当两个操作数都为整数时,结果为整型,将小数部分舍去。 30 【正确答案】 C 【试题解析】 在 c+语言函数调用中,如果被调用函数中没有 return语句,并不带回一个确定的、用户所希望得到的函数值,而是带回的是一个不确定的值。注意:为了明确表示 “不带回值 ”,可以用 void定义无类型 (或称空类型 ),这时,系统就保证
18、不使函数带回任何值。 31 【正确答案】 A 【试题解析】 函数的参数个数是以第一层的逗号为区分的,本题中调用 语句中有3个参数。 32 【正确答案】 B 【试题解析】 在初始化语句时,需要注意下面几点: 所赋初值个数与数组元素的个数相同; 每行所赋初值个数与数组元素的个数不同时,系统将自动给该行其余的元素补初值 o; 所赋初值行数少于数组行数时,系统将自动给后面各行的元素补初值 o; 赋初值时省略行花括号对。在给二维数组赋初值时可以不用行花括号对。注意:选项 A中省略了第二维的大小,所以是错误的;选项 C超出了数组的定义范围,所以是错误的;选项 D在初始化赋值的时候出现了错误。注意:无论是几
19、维的数组,下标都是从零开 始的。 33 【正确答案】 A 【试题解析】 在 fun函数中, x接收的是 main函数中 y的地址,所以 *x值为2,同样, *y值为 1,所以第 1次输出的是 21,第 2次改变 *x的值等同于改变 y的值,改变 *y的值也即改变 x的值,所以第 2次输出的是 43。注意: c+语言中函数的传参方式中关于指针的应用。 34 【正确答案】 C 【试题解析】 该表达式的语句是该表达式的语句是 if(表达式 1) 语句 1 else if(表达式 2) 语句 2 else if(表达式 3) 语句 3 else 语句 4 由 if表达式可知,题中直接执行 if语句的第
20、 2条 else if(x 10.0)y=1.O/x;。 注意: else总是与最近的没有匹配的 if匹配。 35 【正确答案】 D 【试题解析】 本题考查循环的嵌套。只要注意在 C+语言中,系统在字符指针的最后位置会增加一个字符串结束符 0,执行 8次 for循环,再根据 switch语句中的条件易知答案。注意: c+中各种条件判断,循环语句的用法。 36 【正确答案】 前件 【试题解 析】 在树形结构中,每一个结点只有一个前件,称为父结点,没有前件的结点只有一个,称为树的根结点;每一个结点可以有多个后件,它们都称为该结点的子结点。没有后件的结点称为叶子结点。 37 【正确答案】 数据结构
21、【试题解析】 结构化分析方法主要包括:面向数据流的结构化分析方法 (SA-Structured analysis),面向数据结构的 Jackson方法 (JSD-Jackson system development methoD和面向数据结构的结构化数据系统开发方法 (DSSD -Data structured system development methoD。 38 【正确答案】 类 【试题解析】 面向对象模型中,最基本的概念是对象和类。对象是现实世界中实体的模型化;将属性集和方法集相同的所有对象组合在一起,可以构成一个类。 39 【正确答案】 降低复杂性 【试题解析】 模块化是指解决一个
22、复杂问题时自顶向下逐层把软件系统划分成若干模块的过程,由此分解来降低复杂性。 40 【正确答案】 逻辑数据模型 【试题解析】 数据是现实世界符号的抽象,而数据模型 (data model)则是数据特征的抽象,它从抽象层次上描述了系统的静态特征、动态行为和约束行为,为数据库系统的信息表示与操作提供一个抽象的框架。数据模型按不同的应用层次分成 3种类型,它们是概念数据模型 (conceptual data model)、逻辑数据模型 (logic data model)、物理数据模型 (physical data model)。 41 【正确答案】 多态性 【试题解析】 面向对象系统包含了三个特征
23、 -封装性、继承性和多态性,这三个特征可以很好的实现数据抽象,进行行为共享,完成进化求解和描 述一个系统的确定行为。 42 【正确答案】 真 【试题解析】 本题考查的是对于逻辑运算符号的理解, “|”运算符的任何一边取值为真,则整个运算结果为真。 43 【正确答案】 5 【试题解析】 因为 b的值为 1,所以 b&a 5相当于 a 5,当 a=5时退出循环,一共进行 5次循环。 44 【正确答案】 1 2 3 4 5 【试题解析】 本题考查的是考生使用简单循环输出数组元素的能力,因为结束条件是 i 5,而 i初始值为 0,所以只会输出前 5个元素。 45 【正确答案】 main 【试题解析】
24、所有的 C+语言程序都是从 main函数开始执行,而普通函数的存在是为了简化 main函数的复杂程度。 46 【正确答案】 拷贝构造 【试题解析】 本题考查的是拷贝构造函数的定义,它是一种特殊的成员函数,作用是使用一个已知的对象来初始化一个被创建的同类的对象,定义格式是类名 :拷贝构造函数名 (类名 &引用名 )。 47 【正确答案】 类 【试题解析】 本题考查的是类模板的定义, C+语言中模板分为两种:类模板和函数模板,类模板只能用于类型参数,函数模板可以重载。 48 【正 确答案】 *hello 【试题解析】 本题考查的是 C+语言的流输出操作, cout中包括的函数 fill()和width()分别实现填充和设定显示长度的功能。 49 【正确答案】 j+=2 ai =aj或 ai aj 【试题解析】 strlen函数是测试字符串长度的函数,函数的值为字符串中的实际长度,不包括 0在内。 50 【正确答案】 静态 非静态 【试题解析】 静态成员函数可以直接访问该类中的静态数据成员,而不能访问该类中的非静态数据成员。