1、国家二级( C+)笔试模拟试卷 53及答案与解析 1 以下函数调用语句中实参的个数是 ( )。 excc (v1,v2), (V3, v4, V5),V6); ( A) 3 ( B) 4 ( C) 5 ( D) 6 2 以下程序段的执行结果是 ( )。 int a,y: a=l0; y=10 do a+=2; y+=a; cout “a“=“ a “, “ “y=“ y “n“; if(y 20)break: while(a =14); ( A) a=12,y=12 a=14,y=16 ( B) a=12,y=12 a=16,y=28 ( C) a=12,y=12 a=14,y=26 ( D)
2、 a=12,y=12 a=14,y=44 3 当一个函数无返回值时,函数的类型应为 ( )。 ( A)任意 ( B) void ( C) int ( D) char 4 下面 程序的运行结果为 ( )。 #include iostream.h void main() char a=3: switch (a) case3: cout “3; case2: cout “2“; break; default: cout “1“; ( A) 3 ( B) 321 ( C) 31 ( D) 32 5 有关析构 函数的说法不正确的是 ( )。 ( A)析构函数有且只有一个 ( B)析构函数无任何函数类型
3、( C)析构函数和构造函数一样可以有形参 ( D)析构函数的作用是在对象被撤消时收回先前分配的内存空间 6 下列关于 break语句的叙述不正确的是 ( )。 ( A) break语句可用在循环体中,它将使执行流程跳出本层循环体 ( B) break语句可用在 switch语句中,它将使执行流程跳出当前 switch语句 ( C) break语句可用在 if语句中,它将使执行流程跳出当前 if语句 ( D) break语 句在一层循环体中可以出现多次 7 一个函数为 void(int,char=a),另一个函数为 void f(int),则它们 ( )。 ( A)不能在同一程序中定义 ( B)
4、可以在同一程序中定义并可重载 ( C)可以在同一程序中定义,但不可以重载 ( D)以上说法均不正确 8 下面关于运算符重载的描述错误的是 ( )。 ( A)运算符重载不能改变操作数的个数、运算符的优先级、运算符的结合性和运算符的语法结构 ( B)不是所有的运算符都可以进行重载 ( C)运算符函数的调用必须使用关键字 operator ( D)在 C+语言中不可通过运算符重载创造出新的运算符 9 类模板的使用实际上是将类模板实例化成一个具体的 ( )。 ( A)类 ( B)对象 ( C)函数 ( D)模板类 10 以下不能正确进行字符串赋值初值的语句是 ( )。 ( A) char str5=“
5、good!“; ( B) char str=“good!“; ( C) char*str=“good!“; ( D) char str5=g, o, o, d; 11 下面程序的结果是 ( )。 #include“iostream.h“ void main() char*str: str=“test!“; cout str5: ( A)程序错误 ( B) ! ( C) 0 ( D)为空字符 12 ( )是析构函数的特征。 ( A)一个类中只能定义一个析构函数 ( B)析构函数名与类名不同 ( C)析构函数的定义只能在类体内 ( D)析构函数可以有一个或多个参数 13 当 ifstream流类定
6、义一个流对象并打开一个磁盘文件时,文件的隐含打开方式为 ( )。 ( A) ios:in ( B) ios:out ( C) ios:in|ios:out ( D) ios:binary 14 下面不是派生类对基类的继承方式的是 ( )。 ( A) private ( B) public ( C) static ( D) protected 15 以下关于 C+语言类的说法中正确的是 ( )。 ( A) C+语言的默认访问权限是 private ( B) C+语言中的类定义,用户 一定要自己定义一个构造函数用于实例化类 ( C) C+语言中的成员函数的实现部分一定要写在类定义外 ( D) C+
7、语言中的类不能够嵌套定义 16 类模板 template class T class x ,其中,友元函数 f对特定类型 T(如int),使函数 f(x int ) ( C) friend voidA:f() ( D) friend void C T :f(x T day=3 ( C) Day day;day=Monday+3 ( D) Day day;day=Tuesday+10 30 下列对结构及其变 量定义错误的是 ( )。 ( A) struct My Struct int num; char ch; ( B) struct MyStruct int num; char ch; My;
8、 ( C) strut int num; char ch; My; ( D) struct int num; char ch; ; 31 语句 ofstream f (“SALARY.DAT“, ios:appl ios:binary);的功能是建立流对象f,试图打开文件 SALARY.DAT并与之连接,并且 ( )。 ( A)若文件存在,将文件写指针定位于文件尾;若文件不存在,建立一个新文件 ( B)若文件存在,将其置为空文件:若文件不存在,打开失败 ( C)若文件存在,将文件写指针定位于文件首;若文件不存在,建立一个新文件 ( D)若文件存在,打开失败;若文件不存在,建立一个新文件 32
9、下面关于类概念的描述中 ( )是错误的。 ( A)类是抽象数据类型的实现 ( B)类是具有共同行为的若干对象的统一描述体 ( C)类是创建对象的样板 ( D)类就是 C语言中的结构体类型 33 已有如下定义和输入语句,若要求 a、 b、 c、 d分别得到的值为 10、 20、 A和B,当从第一列开始输入数据时,正确的数据输入方式是 ( )。 int a,b char c, d; cin a b c d; ( A) 10, 20空格 A, B回车 ( B) 10空格 20空格 A空格 B回车 ( C) 10空格 20, A, B回车 ( D) 10, 20, A, B回车 34 下列语句错误的是
10、 ( )。 ( A) char*p=“John“; P2=a; ( B) char name5=“John“; name2=a ( C) char name5=“John“,*p=name; p2=a; ( D) char name5=“John“,*p= cout s; return 0; 执行上面的程序将输出 _。 38 大多数 C+程序都要包含 _头文件。该文件中包含了所有输入 /输出流操作所需要的基本信息。 39 一个类可以从直接或间接的祖先中继承所有属性和方法。采用这个方法提高了软件的 _。 40 若有: int i=1000; int*ip=&i; void*VP; vp=ip;
11、其中, vp=ip的含义是 _。 41 内联函数是通过【 】来实现的,因此内联函数是真正的函数。 42 以下程序的输出结果是【 】。 #include iostream.h void main( ) int a=0; a+=(a=8) ; cout a; 43 以下程序的执行结果为【 】。 #include iostream using namespace std; class base public: virtual void who( ) cout “base class“ endl; ; class derivel: public base public: void who( ) cou
12、t “derivel class“ endl; ; class derive2: public base public: void who( ) cout “derive2 class“ endl; ; void main( ) base objl, *p; derivel obj2; derive2 obj3; P=&objl; p- who( ); p=&obj2; p- who( ); p=&obj3; p- who( ); 44 如果类中的一个成员函数的定义实现在类内,则该函数系统自动默认为该类的【 】函数。 45 为解决在多重 继承环境中因公共基类带来的【 】问题, c+语言提供了虚
13、基类机制。 46 operator是运算符重载时必须使用的关键字,它和被重载的运算符连在一起,作为运算符函数的专用函数名,务必把该函数说明为【 】的。 47 我们通常用到的 cin ,是属于【 】输入。 48 函数模板既可以与 _重载,也可以与 _重载。 49 类 ostream的成员函数 _用于执行无格式输出,成员函数 _用于输出单个字符。 50 利用成员函数对双目运算符重载,其左操作数为 _,右操作数为 _。 国家二级( C+)笔试模拟试卷 53答案与解析 1 【正确答案】 A 2 【正确答案】 C 3 【正确答案】 B 4 【正确答案】 D 5 【正确答案】 D 6 【正确答案】 C 7
14、 【正确答案】 C 8 【正确答案】 C 9 【正确答案】 A 10 【正确答案】 A 11 【正确答案】 D 12 【正确答案】 A 13 【正确答案】 A 14 【正确答案】 C 15 【正确答案】 A 16 【正确答案】 B 17 【正确答案】 C 18 【正确答案】 A 19 【正确答案】 C 20 【正确答案】 C 21 【正确答案】 C 22 【正确答案】 B 23 【正确答案】 B 24 【正确答案】 C 25 【正确答案】 A 26 【正确答案】 C 27 【正确答案】 C 28 【正确答案】 A 29 【正确答案】 A 30 【正确答案】 D 31 【正确答案】 A 32 【
15、正确答案】 D 33 【正确答案】 B 34 【正确答案】 A 35 【正确答案】 D 36 【正确答案】 *123.45 *123.45 123.45 37 【正确答案】 C+ 38 【正确答案】 iostream.h 39 【正确答案】 可重用性 40 【正确答案】 把整型指针赋给通用指针 41 【正确答案】 编译器 【试题解析】 内联函数是通过编译器,只是在调用的时候,像宏一样展开。注意:内联函数比普通函数的效率更高。 42 【正确答案】 16 【试题解析】 赋值表达式的值就是所赋值变量的值,本 题中 a+=8相当于a=a+8,对表达式逐步进行求解: a+=(a=8)此时, a的值由于赋
16、值为 8,而不是 o a+=8 a=a+8 a=16 注意: 要掌握 “+=”等相关运算符的用法。 43 【正确答案】 base class derivel class derive2 class 【试题解析】 类 base含有虚函数 who(),该类派生出 derivel类和 derive2类,两个派生类中都有虚函数 who()的定义。在 main()函数中定义了一个指向 base类的指针,它也被 允许指向其派生类。在执行过程中,不断改变它所指的对象,当 P- who()时就能调用不同的版本。这是因为使用了虚函数,因而进行动态联编。注意:应掌握静态联编的使用方法。 44 【正确答案】 内联
17、【试题解析】 c+中的成员函数如果它的实现写在了类中,那么该函数就是一个内联函数。注意: c+中内联函数的相关概念。 45 【正确答案】 二义性 【试题解析】 C+中产生虚基类的作用就是为了解决继承中的二义性问题,通过虚基类继承可以把父基类中相同的函数只编译一次。 46 【正确答案】 public 【试题解析】 C+中不论用成员函数还是友元函数重载运算符都必须用关键字operator,都必须将函数声明为公有的。注意: operator是关键字。 47 【正确答案】 有格式 【试题解析】 C+中运算符 “ ”和 “ ”都是属于有格式的输入输出。注意:使用 cin, cout进行输入输出时应包括头文件 “iostream.h。 48 【正确答案】 函数模板 非函数模板 49 【正确答案】 write、 put 50 【正确答案】 this指针 成员函数参数