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

上传人:medalangle361 文档编号:502685 上传时间:2018-11-29 格式:DOC 页数:22 大小:61KB
下载 相关 举报
[计算机类试卷]国家二级(C++)笔试模拟试卷221及答案与解析.doc_第1页
第1页 / 共22页
[计算机类试卷]国家二级(C++)笔试模拟试卷221及答案与解析.doc_第2页
第2页 / 共22页
[计算机类试卷]国家二级(C++)笔试模拟试卷221及答案与解析.doc_第3页
第3页 / 共22页
[计算机类试卷]国家二级(C++)笔试模拟试卷221及答案与解析.doc_第4页
第4页 / 共22页
[计算机类试卷]国家二级(C++)笔试模拟试卷221及答案与解析.doc_第5页
第5页 / 共22页
点击查看更多>>
资源描述

1、国家二级( C+)笔试模拟试卷 221及答案与解析 1 在软件生存周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是 ( A)概要设计 ( B)详细设计 ( C)可行性分析 ( D)需求分析 2 有如下程序: #include iostream using namespaee std; class A public: A(int i): rl(i) void print( )cout E rl -; void print( )constcout C rl*rl -; private: int rl; ; int main( ) A al(2); eonst A a2(4); a1

2、 print( ); a2 print( ); return 0; 程序的输出结果是 ( A)运行时出错 ( B) E2-C16- ( C) C4-C16- ( D) E2-E4- 3 有如下程序: #include iostream using namespace std; int main() cout.fill(*); cout.width(6); cout.fill(#); cout 888 end1; return 0; 的执行结果是 ( )。 A) #888 B) 888# C) *888 D) 888* 4 由于常对象不能被更新 ,所以 ( )。 ( A)利用常对象可以调用任何不

3、改变对象值的成员函数 ( B)利用常对象只能调用静 态成员函数 ( C)常对象的成员都是常成员 ( D)利用常对象只能调用它的常成员函数 5 下列关于虚函数的说明中,正确的是 ( )。 ( A)从虚基类继承的函数都是虚函数 ( B)虚函数不得是静态成员函数 ( C)只能通过指针或引用调用虚函数 ( D)抽象类中的成员函数都是虚函数 6 设有两个串 p和 q,求 q在 p中首次出现位置的运算称作 ( )。 ( A)连接 ( B)模式匹配 ( C)求子串 ( D)求串长 7 单个用户使用的数据视图的描述称为 ( A)外模式 ( B)概念模式 ( C)内模式 ( D)存储模式 8 关系数据库的概念模

4、型是 ( )的集合。 ( A)关系模型 ( B)关系模式 ( C)关系子模式 ( D)存储模式 9 对建立良好的程序设计风格,下面有关语句结构的描述中,错误的是 ( )。 ( A)在一行内只写一条语句 ( B)程序编写应优先考虑清晰性 ( C)程序编写要做到效率第一,清晰第二 ( D)避免不必要的转移 10 下列数据结构中,能够按照 “先进后出 ”原则存取数据的是 ( A)循环队列 ( B)栈 ( C)队列 ( D)二叉树 11 有 如下程序: #include iostream using namespace std; class AA int n; public: AA(int k): n

5、 (k) int get()return n; ) int get()constreturn n+1; ; int main() AA a(5); const AA b(6); cout a get() b get(); return 0; 执行后的输出结果是 ( A) 55 ( B) 57 ( C) 75 ( D) 77 12 有如下程序: #include iostream using namespace std; class Test public: Test() n+=2; Test() n-=3; static int getNum() return n; private: stat

6、ic int n; ; int Test:n=1; int main() Test* p=new Test; delete p; cout “n=“ Test:getNum() endl; return 0; 执行该程序的输出结果是 ( )。 ( A) n=0 ( B) n=1 ( C) n=2 ( D) n=3 13 下列关于虚基类的描述,错误的是 ( )。 ( A)设置虚基 类的目的是为了消除二义性 ( B)虚基类的构造函数在非虚基类之后调用 ( C)若同一层中包含多个虚基类,这些虚基类的构造函数按它们说明的次序调用 ( D)若虚基类由非虚基类派生而来,则仍然先调用基类构造函数,再调,用派

7、生类的构造函数 14 下面程序错误的语句是 #include iostream.h void main( ) int * p new int1 ; p 9; cout * p endl; delete p; ( A) ( B) ( C) ( D) 15 下列关于 C+函数的说明中,正确的是 ( )。 ( A)内联函数就是定义在另一个函数体内部的函数 ( B)函数体的最后一条语句必须是 return语句 ( C)标准 C+要求在调用一个函数之前,必须先声明其原型 ( D)编译器会根据函数的返回值类型和参数表来区分函数的不同重载形式 16 以下叙述中正确的是 ( A)构成 C语言程序的基本单位是类

8、 ( B)可以在一个函数中定义另一个函数 ( C) main( ) 函数必须放在其他函数之前 ( D)所有被调用的函数一定要在调用之前进行定义 17 下列程序的输出结果是 #include iostream.h class Myclass public:Myclass(int i 0,int j 0) x i; y j; void show( ) cout “x “ x “ “ “y “ y endl; void show( ) constcout “x “ “ “ “y “ y endl; privated: int x; int y; ; void main( ) Myclass my1(

9、3,4) ; const my2(7, 8) ; my1.show( ) ;my2.show( ) ; ( A) x 4,y 3;x 7,y 8 ( B) x 3,y 4;x 7,y 8 ( C) x 7,y 8;x 4,y 3 ( D) x 8,y 7;x 7,y 8 18 有以下程序 : #include string.h #include iostream.h void main( ) char * p “abcde0fghjik0“; cout strlen(p) ; 程序运行后的输出结果是 ( A) 12 ( B) 15 ( C) 6 ( D) 5 19 定义如下枚举类型: enum

10、Monday,Tuesday,Wednesday,Thrusday,Friday=2;表达式 Wednesday=Friday的值是 ( )。 ( A) false ( B)真 ( C) 2 ( D)异常 20 执行完下列代码段之后: bool x=true, y=false, z=false; x=x void main( ) for(int a =0,x =0; !x a + ); cout a endl; ( A) 0 ( B) 1 ( C) 10 ( D) 11 22 下列关于 dowhile 语句的叙述中正确的是 ( )。 ( A) dowhile 语句所构成的循环不能用其他语句构成

11、的循环来代替 ( B) do while语句所构成的循环只能用 break语句跳出 ( C) dowhile 语句所构成的循环只有在 while后面的表达式非零时才结束 ( D) dowhile 语句所构成的循环只有在 while后面的表达式为零时才结束 23 关于逻辑运算符的说法,正确的是 ( )。 ( A)它们都是双目运算符,优先级相同 ( B)语句 “int a = 0, i = l, b; b = a”执行后 , i的值为 2 ( C)语句 “int a = 1, i = l, b; b = a|+;”执行后 ,i的值为 2 ( D)语句 “int a = 1, i = l, b; b

12、 = a”执行后 , i的值为 2 24 语句 ofstream f (“SALARY.DAT“, ios_ base: app);的功能是建立流对象 f,并试图打开文件 SALARY.DAT 与 f关联,而且 ( )。 ( A)若文件存在,将其置为空文件:若文件不存在,打开失败 ( B)若文件存在,将文件指针定位于文件尾;若文件不存在,建立一个新文件 ( C)若文件存在,将文件指针定位于文件首;若文件不存在,打开失败 ( D)若文件存在, 打开失败:若文件不存在,建立一个新文件 25 进行初始化即可自动获得初值 0的变量包括 ( )。 ( A)任何用 static 修饰的变量 ( B)任何在

13、函数外定义的变量 ( C)局部变量和用 static修饰的全局变量 ( D)全局变量和用 static修饰的局部变量 26 有如下类声明: class Fooint bar;; 则 Foo类的成员 bar是 ( )。 ( A)公有数据成员 ( B)公有成员函数 ( C)私有数据成员 ( D)私有成员函数 27 可以用 p.a的形式访问 派生类对象 p的基类成员 a,其中 a是 _。 ( A)私有继承的公有成员 ( B)公有继承的私有成员 ( C)公有继承的保护成员 ( D)公有继承的公有成员 28 若有 int x=2, y=3, z=4, m; 则在计算表达式 m=(x y)?z+2:z-4

14、 后, m的值为 _。 ( A) 6 ( B) 5 ( C) 4 ( D) 2 29 执行下列程序 int fun(int x1, int x2) int x; x1 x2 ?(x=3): (x=4); return x+x1; void main() cout fun(7, 8); 后输出结果是 _。 ( A) 9 ( B) 10 ( C) 11 ( D) 12 30 在 C+语言中,不合法的实型数据的是 ( A) 0.123 ( B) 123e3 ( C) 2.1e3.5 ( D) 123 31 下面关于类和对象的描述中,错误的是 ( A)类就是 C语言中的结构体类型,对象就是 C语言中的

15、结构体变量 ( B)类和对象之间的关系是抽象和具 体的关系 ( C)对象是类的实例,一个对象必须属于一个已知的类 ( D)类是具有共同行为的若干对象的统一描述体 32 有以下程序: #include iostream using namespace std; char *x=“First“, “Second“, “Third“ ; void f(char *z ) cout *z+end1; int main ( ) char *y; y=x; f(y); return 0; ( A)产生语法错误 ( B) First ( C) Secpnd ( D) Third 33 为了使程序的输出的正确

16、结果为: Now is 2004 7.10 10: 10: 10 那么应在下列程序划线处填入的正确语句是 ( )。 那么应在下列程序划线处填入的正确语句是 ( )。 #include iostream using namespace std; class TIME; class DATE public: DATE(int y=2004,int m=1,int d=1) year=y; month=m; day=d; friend void DateTime(DATE private: int year, month, day; ; class TIME public: TIME(iht h=0

17、, int m=0,int s=0) hour=h; minute=m; second=s; friend void DateTime(DATE private: int hour,minute, second; ; _ /函数 DateTime 的首部 cout “Now is“ d.year . d.month . d.day t.hour “:“ t.minute : t.second .end1; int main ( ) DATE d(2004,7,10); TIME t(10, 10, 10); DateTime(d,t); return 0; ( A) void DateTime

18、(DATE cout s; return 0; 执行上面的程序将输出 _。 40 在一个有 n个元素的顺序表的第 i个元素 (1in)之前插入一个新元素时,需要向后移动【 】个元素 41 若 a. b和 C均是 int型变量,则表达式 a=(b=4)+(c=2)执行后, a的值为 _。 42 下列程序的运行结果是 _。 #include iostream.h class test private: int hum; public: test( ); int TEST( )return num+100;) test( ); ; test:test( )num=0;) test: test( )c

19、out “Destructor is active“ endl;) void main( ) test x3; cout x1.TEST( ) endl; 43 耦合和内聚是评价模块独立性的两个主要标准,其中【 】反映了模块内各成分之间的联系。 44 对基类数据成员的初始化必须在派生类构造函数中的 _处执行。 45 以下程序的输出结果是【 】。 #include iostream.h void main( ) int a=0; a+= ( a=8 ); cout a; 46 若要在 C盘根目录下作为二进制文件打开文件 test.dat ,则应该用的语句是【 】。 47 已知 int DBL(i

20、nt n)return n+n; 和 long DBL(long n)return n+n)是一个函数模板的两个实例,则该函数模板的定义是【 】。 48 下列程序是一个函数模板,用 于把数组 a的每个元素按照逆序放入数组 b中。请填空完成该函数模板的定义 template class Type void Func(Type a, Type b,【 】 ) for(int i=0;i n;i+) bn-i-1=ai; 49 在 C+中,派生类有三种继承方式,它们分别是公有继承、私有继承和【 】。 50 补充完整下面的模板定义: template Type为类 型参数 class Xtwo由两个

21、Type类型的数据成员构成的模板类 Type a; Type b; public: Xtwo(Type aa=O, Type bb=O): a(a A), b(bB) int Compare()比较 a和 b的大小 if(aB)retum 1; else if(a=B)return 0; else return-1: f Type Sum(); return a+b; 返回 a与 b的和 Type Mult(); 函数声明,返回 a和 b的乘积 ; template 【 】: Mult()return a*b; Mult函数的类外定义 国家二级( C+)笔试模拟试卷 221答案与解析 1 【正

22、确答案】 D 【试题解析】 在需求分析阶段中,根据可行性研究阶段所提交的文档,特别是从数据流图出发,对目标系统提出清晰、准确和具体的要求,即要明确系统必须做什么的问题本题的正确答案为 D。 2 【正确答案】 B 【试题解析】 在类中重载函数的情况下,常对象调用类的常成员函数,非常对象调用类的非常成员函数,故答案 为 B。 3 【正确答案】 A 【试题解析】 C+在流操作中,利用 cout对象的 width属性设置输出字符的宽度,用 fill 函数来设置需要填充的字符。题目程序中,首先设置填充字符为 *,输出宽度为 6,但存输出前又设置了填充字符为 #。所以在输出时,其填充字符为 #,由于 88

23、8不足 6个字符,所以在前面以三个 “#”来填充。 4 【正确答案】 D 【试题解析】 如果一个成员函数没有声明为常成员函数,即使没有改变对象本身的成员值,也不能被常对象调用,所以 A) 不正确。常对象除了口 J以调用静态成员函数 外,还可以调用常成员函数,所以 B) 不正确。常对象中可以有非常成员函数,所以 C)也不正确。常对象只能调用对象的常成员函数,而不调用普通成员函数,故 D) 选项正确, 5 【正确答案】 B 6 【正确答案】 B 【试题解析】 设有两个串 p和 q,求 q在 p中首次出现位置的运算称为模式匹配。 7 【正确答案】 A 【试题解析】 选项 A)正确,外模式是用户的数据

24、视图,也就是用户所见到的数据模式;选项 B)不正确,全局数据视图的描述称为概念模式,即数据库中全部数据的整体逻辑结构的描述;选项 C)不正确 ,物理存储数据视图的描述称为内模式,即数据库在物理存储方面的描述;选项 D)不正确,存储模式即为内模式。 8 【正确答案】 B 【试题解析】 本题考核关系数据库的概念模型。数据库的概念模型体现了数据之间的关系,它是各种数据之间相互关系的集合。关系数据库的概念模型是关系模式的集合。关系子模式是指关系数据库模式中用户所见到的那部分数据模式描述。 9 【正确答案】 C 【试题解析】 语句结构的风格对建立良好的程序设计风格很重要,选项 A、 B、D都是良好的语句

25、结构的风格,考生应在编程中注意。选项 C是 错误的,好的语句结构风格要求程序编写要做到清晰第一,效率第二。 10 【正确答案】 B 【试题解析】 栈是限定只在一端进行插入与删除的线性表,通常称插入、删除的这一端为栈顶,另一端为栈底。栈顶元素总是后被插入的元素。也是最先被删除的元素;栈底元素总是最先被插入的元素,也是最后才能被删除的元素。栈是按照 “先进后出 ”或 “后进先出 ”的原则组织数据的。 11 【正确答案】 B 【试题解析】 本题考核常成员函数和函数的重载。所谓函数重载,是指同一个函数名可以对应着多个函数的实现,类 AA中定义了两个 get()函数,一个为普通成员函数,另一个为常成员函

26、数。一般对象 a既可以调用普通成员函数 get,也可以调用常成员函数 get,但是由于常成员函数不能更新对象的数据成员,所以题中通过对象 a调用的函数为普通成员函数 get(),返回值为 5。常对象 b只能调用常成员函数,所以题中通过对象 b调用的函数为常成员函数 get(),返回值为 7。 12 【正确答案】 A 【试题解析】 此题考查的是静态数据成员和静态成员函数。静态数据成员是类中所有对象共享的成员,而不是某个对象的成员。题目中的静态数据成员 n 的运算具有叠加 性,执行 “n+=2”和 “n-=3”后 n的值为 0。 13 【正确答案】 B 【试题解析】 虚基类的引入就是为了消除二义性

27、,其构造函数的调用仍然是按照继承的顺序进行的,对于多个虚基类则按它们说明的次序调用,虚基类的构造函数选于非虚基类的构造函数执行。 14 【正确答案】 B 【试题解析】 本题考查的是指针的使用, p是指向 int型的指针,若想给它指向的元素赋值,应使用。符号,直接赋值相当于改变了原来 p存储的地址。 15 【正确答案】 C 【试题解析】 选项 A)中,内联函数不是定 义在另一个函数体内部的函数,而是将 incline放在函数定义中函数类型之前;函数题的最后一条语句可以是任意的语句,所以选项 B)错误;编译器不会根据函数返回值的类型宋区分重载形式,所以选项 D)错误。标准 C+要求在调用一个函数之

28、前,必须先声明其原型,所以选项C)正确。 16 【正确答案】 A 【试题解析】 关于 C语言,我们应该了解以下必须要掌握的基础知识 : c程序是由类构成的。 一个函数由两部分组成 :函数的首部和函数体。 一个类由两部分组成 :类成员变量和类成员函数。 一个 C程序总是从 main函数开始执行的,而不论 main 函数在整个程序中的位置如何 (main 函数可以放在程序最前头,也可以放在程序最后,或写在一些函数之前,在另一些函数之后 ) 。 C程序在书写上,表现形式比较自由,一行内可以写几个语句,一个语句可以分写在几行上。每个语句和数据定义的最后必须有一个分号。 可以用 /* */ 和 /对 C

29、语言的程序的任何部分作注释。 17 【正确答案】 A 【试题解析】 在 Myclass类中定义了两个同名函数 show,其中一个是常成员函数。在 main 函数中定义了两个对象 my1、 my2,其中对象 my2 是常对象。这两个对象调用成员函数 show 时,通过对象 my1 调用的是没有用 const修饰的一般成员函数,而通过对象 my2调用的是 const修饰的常成员函数。 18 【正确答案】 D 【试题解析】 C语言规定了一个字符串结束标志,以字符 0代表,在遇到0时,表示字符串结束,由它前面的字符组成字符串。 19 【正确答案】 B 【试题解析】 enum;其中:关键词 “enum”

30、表示定义的是枚举类型,枚举类型名由标识符组成,而枚举元素表由 枚举元素或枚举常量组成。本题中的枚举类型中的数据值 Wednesday为 2,而 Friday 的值赋值为2,所以判断 Wednesday 等于 Friday的表达式值为真,即 true。 20 【正确答案】 A 【试题解析】 其中 “x=x的左边表达式值为 0,右边表达式不参与运算,所以 i的值没有变化;选项 C原因同选项 B。 24 【正确答案】 B 25 【正确答案】 D 26 【正确答案】 C 27 【正确 答案】 D 28 【正确答案】 A 29 【正确答案】 C 30 【正确答案】 C 【试题解析】 在 C+语言中,实数

31、有两种形式表示,即十进制数形式和指数形式,在指数形式中, e3, 2 le3.5, e3, e等都是不合法的指数形式。再如 123e3或 123E3都代表 123乘以 10的 3次方。注意,字母 e的前面必须有数字,且 e的后面必须是整数。 31 【正确答案】 A 【试题解析】 在 C+语言中,类和结构体有本质区别,类中包含数据及操作函数,而结构体只包含有数据。 32 【正确 答案】 B 【试题解析】 程序首先定义全局指针数组 x,并赋初值。在函数 f()中,语句“cout *z+ end1; ”是输出 *z指向的字符串,然后指向下一个指针。由于在主函数中,指针 y已初始化指向指针数组 x,所

32、以执行 f(y)后,程序输出指针数组 x中的第一个字符串 “First“。 33 【正确答案】 A 【试题解析】 本题程序中,分别在类 DATE 和 TIME 中将普通函数 DateTime声明为友元函数,但该友元函数的定义是在类体外进行的。友元函数是一个普通函数,它虽然可以访问类对象的私有成员, 但它毕竟不是类中的成员函数,因此在类体外定义友元函数时,不需要像成员函数一样在函数名前加上 “类名: ”。函数首部的其他定义照抄类中友元函数的声明。所以函数 DateTime的首部为 void DateTime(DATE&d; TIME &t),即选项 A。 34 【正确答案】 C 【试题解析】 C

33、+中,类是用户自定义的一种数据类型,对象是类的实例,类定义了属于该类的所有对象的共同特性。一个类作为一种数据类型,它可以定义多个对象。 35 【正确答案】 C 36 【正确答案】 log2n 【 试题解析】 二分法查找,也称拆半查找,是一种高效的查找方法。能使用二分法查找的线性表必须满足两个条件:用顺序存储结构;线性表是有序表。对于长度为 n的有序线性表,在最坏情况下,二分法查找只需比较 log2n 次 37 【正确答案】 自顶向下 38 【正确答案】 软件复用 39 【正确答案】 C+ 40 【正确答案】 n-i+1 【试题解析】 在一般情况下,要在第 i个元素之前插入一个新元素时,首先是从

34、最后一个元素开始,直到第 i个元素之间共 n-i+1个元素依次向后移动一个位置。 41 【正 确答案】 6 【试题解析】 本题考察运算优先级问题,从右向左,先括号后乘除,随后加减,这是基本的运算规则。 42 【正确答案】 100 Destructor is active Destructor is active Destructor is active 【试题解析】 本题比较简单,考查考生基本的类的定义,构造函数以及对象数组的概念。 43 【正确答案】 内聚 44 【正确答案】 成员初始化列表 45 【正确答案】 16 【试题解析】 解答本题的关键 是要分析清楚表达式 a+= (a=8)中,

35、a的值已经被赋为 8,而不是 0。 46 【正确答案】 ifstream fin(“C: test dat“, ios_binary);或 ifstream fin;fin open(c: test dat“, ios_binary); 【试题解析】 C+中打开文件有两种方式 ifstream fin (“test.dat“); ifstream fin; fin open(“test.dat“);, ios_binary的意义是以二进制文件打开。 fin open(“test.dat“);, ios_binary的意义是以二进制文件打开。 47 【正确答案】 template class T

36、 TDBL(Tn)return n+n; 【试题解析】 本题考核函数模板的使用。 函数模板的一般说明形式如下: template类型形参表返回类型函数名 (形参表 )/函数体 函数调用方式为: 函数名 (实参表 ); 形参表中的类型以实参表中的实际类型为依据。由此易得答案。 48 【正确答案】 int n 【试题 解析】 本题考查函数模板的定义,注意第三个参数不需要改变类型,仅仅用于给定循环体的上界为正整数,故可直接用 int来限定。 49 【正确答案】 保护继承 【试题解析】 共有三种继承方式。 50 【正确答案】 Type Xtwo 【试题解析】 类外函数要先定义函数返回类型 Type,其次要加上类名和作用域Xtwo。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

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