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

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

1、国家二级( C+)笔试模拟试卷 99及答案与解析 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; cout a+; ; void main() A x, y (2), z (3): cout endl; ( A) 0 ( B) 23 ( C) 34 ( D) 25 4 已知 f1(int)是类 A的公有成员函数, p是指向成员函数 f1()的指针,采用赋值,( )是正确的。 ( A) p=f1 ( B) P=A: f1 ( C) P=A: f1() ( D) P=f1() 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循环和 do while循环 的主要区别是 ( )。 ( A) do while的循环体至少无条件执行一次 ( B) while的循环控制条件比 do while的循环控制条件严格 ( C) do while允许从外部转到循环体内 ( D) do while的循环体不能是复核语句 10 对类的构造函数和析构函数描述正确的是 ( )。 ( A)构造函数可以重载,析构函数不能重载 ( B)构造函数不能重载,析构函数可以重载 ( C)构造函数可以重载,析构函数也可以重载 ( D)构造函数不能重载,析构函数也不能重载 11 下列关于 C+关键字的说法

5、中正确的是 ( A)关键字是用户为程序中各种需要命名的 “元素 ”所起的名字 ( B)关键字是对程序中的数据进行操作的一类单词 ( C)关键字是在程序中起分割内容和界定范围作用的一类单词 ( D)关键字是 C+中预先定义并实现一定功能的一类单词 12 下列关于 C+函数的描述中正确的是 ( A)主函数是程序的入口,它由用户定义的函数调用 ( B)函数在调用之前必须先被声明 ( C)每个用户定义的函数只能被其他函数调用一次 ( D)函数是 C+中面向对象程序设计框架的基本组成单元 13 C+语言中运算对象必须是整型的运算符是 ( A) %= ( B) / ( C) = ( D) = 14 在 C

6、+语言中,退格符是 ( A) n ( B) t ( C) f ( D) b 15 有如下程序段 #include void main( ) int a=14, b=15, x; char c=A; x=(a&b) &(c B) ; cout x; 执行该程序段后, x的值为 ( A) ture ( B) FALSE ( C) 0 ( D) 1 16 #include iostream h void main( ) int n=9; while(n 6) n-; cout n; 该程序的输出结果是 ( A) 987 ( B) 876 ( C) 8765 ( D) 9876 17 如下程序的执行结

7、果是 #include iostream h void main( ) static int a = 1, 7, 3, 9, 5, 11 ; int * p=a; * (p+3)+=4; cout * p “, “ * (p+3); ( A) 1, 13 ( B) 1, 16 ( C) 3, 13 ( D) 1, 14 18 下面说明不正确的是 ( A) char a10=“china“; ( B) char a10, * p=a; p=“china“; ( C) char * a; a=“china“; ( D) char a10, * P; P=a=“china“; 19 下列程序的输出结

8、果是 #include iostream h void main( ) double d=3.2; int x, y; x=1 2; y=(x+3 8)/5 0; cout y * d end1; ( A) 3 ( B) 3, 2 ( C) 0 ( D) 3.07 20 有以下程序 #include iostream h int f(iht n) if(n=1) return 1; else return f(n-1)+1; void main( ) iht i, j=0; for(i=1; i 3;i+)j+=f(i); cout j; 程序运行后的输出结果是 ( A) 4 ( B) 3 (

9、 C) 2 ( D) 1 21 C+语言中类的定义的结束声明的符号是 ( A) ( B), ( C); ( D) 22 关于类定义中的语句错误的是 class A iht i; A a; A * b; char * ch; ; ( A) int i; ( B) A a; ( C) A * b; ( D) char * ch; 23 下列描述中错误的是 ( A)析构函数可以被继承 ( B)虚函数不能被 继承 ( C)派生类可以有多个基类 ( D)纯虚基类的子类可以是虚基类 24 下列描述中哪个是正确的 ? ( A)派生类构造函数中没有调用父类构造函数则没有对父类初始化 ( B)子类构造函数不能是

10、内联函数 ( C)派生类构造函数中可以对父类数据成员赋值 ( D)构造函数的返回值为 void类型 25 下面关于成员函数重载运算符和友元函数重载运算符相同的是 ( A)成员函数和友元函数可重载的运算符是不相同的 ( B)成员函数和友元函数重载运算符时都需要用到 this指针 ( C)成员函数和友元函数重载运算符 时都需要声明为公有的 ( D)成员函数和友元函数重载运算符时的参数町能是相同的 26 下列运算符只能用友元函数重载的是 ( A) , ( B) new, delete ( C) +, - ( D), 27 执行下面的程序段后,变量 k中的值为 #include iostream h

11、void main( ) int k=3, s2; s0=k; k=s1 *10; cout k; ( A)不定值 ( B) 33 ( C) 30 ( D) 10 28 关于语句 #include iostream using namespace std; void main( ) cout 100 8989663 ; cout fixed 100 8989663 ; cout scientific 100 8989663 ; 的输出结果为 ( A) 100.899 100 898966 1 008990e+002 ( B) 100.8989663 100 898966 1 008990e+0

12、02 ( C) 100 899 100 898966 1 008989e+002 ( D) 100 899 100 8989663 1 008989e+002 29 以下程序的结果是 #include iostream h void main( ) char * p=“abcdefgh“, * r; long * q; q=(long * )p; q+; r=(char * )q; cout r end1; ( A) defg ( B) cdef ( C) ghab ( D) efgh 30 以下程序的输出结果是 #include void main( ) char c=Z; cout c-2

13、5; ( A) 97 ( B) Z ( C) z-25 ( D) 2 31 有以下程序 #include iostream h struct STU char num10; float score3; ; void main( ) struct STU s3= “20021“, 90, 95,85 , “20022“, 95, 80, 75 , “20023“, 100, 95, 90 , * p=s; int i; float sum=0; for(i=0; i ( A) 260 ( B) 270 ( C) 280 ( D) 285 32 下面程序段中, for循环的执行次数是 char *

14、 s=“ta018bc“; for(; * s! =0; s+)cout “ * “; ( A) 9 ( B) 5 ( C) 6 ( D) 7 33 以下程序段的执行结果为 #include iostream h #define PLUS(X,Y)X+Y void main( ) int x=1, y=2, z=3, sum; sum=PLUS(x+y, z) * PLUS(y, z); cout “SUM=“ sum; cout end1; ( A) SUM=9 ( B) SUM=12 ( C) SUM=18 ( D) SUM=30 34 下列程序的运行结果是 #inClude iostre

15、am h roid fun(int *a, int * b) int * k; k=a; a=b; b=k; void main( ) int a=2004, b=9, * x=&a, * y=&b; fun(x, y); cout a “ “ b end1; ( A) 2004 9 ( B) 9 2004 ( C) 0 0 ( D)编译时出错 35 以下程序的输出结果是 #include iostream h int f( ) static int i=0; int s=1 s+ =i; i+; return s; void main( ) int i, a=0; for(i=0 ; i 5

16、; i+)a+=f( ); cout a; ( A) 20 ( B) 24 ( C) 25 ( D) 15 36 排序是计算机程序设计中的一种重要操作,常见的排序方法有插入排序、【 】和选择排序等。 37 当循环队列非空且队尾指针等于队头指针时,说明循环队列已满,不能进行入队运算。这种情况称为【 】 。 38 【 】是一种信息隐蔽技术,目的在于将对象的使用者和对象的设计者分开。 39 为了便于对照检查,测试用例应由输入数据和预期的【 】两部分组成。 40 【 】是从二维表列的方向进行的运算。 41 【 】是 C+语言程序的入口。 42 程序 #include“ iostream h“ void

17、 main( ) int i=10; jnt j=5; cout j+i+ end1; 的结果为【 】 43 C+语言的基本控制结构为顺序结构、选择结构和【 】。 44 语句 int * i; i=new int 10;,释放指针 i的语句是【 】。 45 函数重载要求重载的函数必须有和原函数一样的【 】。 46 在 C+语言中每个类都有一个【 】指针,该指针指向正在调用成员函数的对象。 47 程序的结果为【 】。 #include”iostream h” template typename T T total(T * data) T s=0; while( * data) s+= * dat

18、a +; return s; int main( ) int x = 2, 4, 6, 8, 0, 12, 14, 16, 18 ; cout total(x); r 48 语句 cout n还可表示为【 】。 49 设置虚基类的目的是【 】,通过【 】表示虚基类。 国家二级( C+)笔试模拟试卷 99答案与解析 1 【正确答案】 A 2 【正确答案】 A 3 【正确答案】 B 4 【正确答案】 B 5 【正确答案】 B 6 【正确答案】 D 7 【正确答案】 D 8 【正确答案】 D 9 【正确答案】 A 10 【正确答案】 A 11 【正确答案】 D 【试题解析】 关键字是 C+语言中预先

19、定义并实现一定功能的一类单词,它不是由用户定义的,它是一种功能性单词。注意:注意关键字不能用做用户标识符, 12 【正确答案】 B 【试题解析】 C+语言中函数在被调用以前必须先被声明,主函 数是程序的入口函数,用户定义的函数是可以被重复调用的, C+语言中面向对象程序设计的基本组成单元是类。注意:主函数可以放在程序小的任何位置。 13 【正确答案】 A 【试题解析】 C+语言规定:取余运算符的运算对象必须是整型,复合运算符“%=”中包含 %运算,它的运算对象也必须是整型。 14 【正确答案】 D 【试题解析】 在 C+语言中退格符表示为 b退格。注意:其他转义字符的意义: n表示回车换行,

20、t 表示横向跳到下一制表位置, v表示竖向跳格, r表示回车, f 表示走纸换页, 表示反斜线符, a表示鸣铃, ddd1 3位表示八进制数所代表的字符, xhh1 2位表示十六进制数所代表的字符。 15 【正确答案】 D 【试题解析】 在 C+语言中,逻辑运算符有 4个,它们分别是 !(逻辑非 )、 (逻辑或 )、 &(逻辑与 )、 (异或 )。在位运算里面还有 &(位与 )、 |(位或 )的运算。本题考查逻辑与运算符的用法,在语句 x=(a&b)&(c B);中,先判断 a&b 条件,逻辑与条件的两边都要保证为 1,即 a和 b都成立,当然 c B是成立的,显然,该表达式的值为 1。 16

21、 【正确答案】 B 【试题解析】 该题目应该根据循环体第一次和最后一次执行时的输出结果来决定哪一项是正确的。第一次进入循环时, n的值是 9,循环体内,先经过 n-运算, n的值变为 8,所以第一次的输出值是 8,由此可以排除选项 A)和选项 D)。由循环条件 n 6可以知道,最后一次循环开始时, n 的值应该为 7,所以最后一次执行循环体时输出为 6,由此可以排除选项 C)。注意: while与 do-while的区别。 17 【正确答案】 A 【试题解析】 指针数组的定义、赋初值、数组元素的引用与赋值等操作和一般数组 的处理方法基本相同。需要注意指针数组是指针类型的,对其元素所赋的值必须是

22、地址值。其格式是 “存储类型数据类型 * 指针数组名 1长度 1=初值 1,功能是定义指向 “数据类型 ”变量或数组的指针型数组,同时给指针数组元素赋初值。这些指针变量具有指定的 “存储类型 ”。本题中指针 * p指向数组 a,表达式 * (p+3)+=4的含义是 * (P+3)= * (p +3)+4,而 * (p+3)在数组中指向的值为 9,最后输出的结果为 9+4=13,注意:一个语句的结束要有分号。 18 【正确答案】 D 【试题解 析】 C+语言中操作一个字符串常量的方法有: 把字符串常量存放在一个字符数组之中: 用字符指针指向字符串,然后通过字符指针来访问字符串存贮区域。当字符串常

23、量在表达式中出现时,根据数组的类型转换规则,它被转换成字符指针。本题选项 D)中错误的关键是对数组初始化时,可以在变量定义时整体赋初值,但不能在赋值语句中整体赋值。 19 【正确答案】 C 【试题解析】 本题中,先将 x转换为浮点型再与 3 8相加,得到结果与 5 0相除。最后将得到的结果去掉小数位化成整型数据赋给 y。另外,值得注意的是,整型、实型、字 符型数据间可以混合运算。在进行运算时,不同类型的数据先转换成同一类型,然后再进行运算。注意:如果认为执行 y=(x+3 8)/5 0后 y的值为1是错误的,此时 y的值为 0。注意: x为 int型,将 1 2赋值给 x时, x的值为1。 2

24、0 【正确答案】 B 【试题解析】 在 main 函数中,对 f(1)和 f(2)的值进行了累加。过程如下: f (1)=1 f (2)=f (1)+l=2 最后, j的值为 1+2=3。注意:函数的递归调用需要有一个结束的条件。 21 【正确答案】 C 【试题 解析】 C+语言中类定义的结束符号是分号。注意:函数的定义不需要分号。 22 【正确答案】 B 【试题解析】 C+语言中类定义中若想用该类来定义数据只能定义为指针类型的,而不能定义为普通类型的。注意: C+语言类的定义的方法 23 【正确答案】 B 【试题解析】 C+语言中基类的虚函数是可以被派生类继承的。注意:虚函数和纯虚函数的区别

25、。 24 【正确答案】 C 【试题解析】 C+语言中基类的构造函数是可以被派生类继承并赋值的。注意:构造函数和析构函数均无返回值。 25 【正确答案】 A 【试题解析】 成员函数和友元函数可重载的运算符有些相同的,有些是不同的,友元函数没有 this 指针,二者重载相同运算符时的参数肯定是不同的,成员函数重载运算符时都必须声明为公有的。注意:友元函数的声明关健字是 friend。 26 【正确答案】 A 【试题解析】 C+语言中运算符重载中只能用友元函数重载的运算符是 和 。 27 【正确答案】 A 【试题解析】 如果定义数组时没有进行初始化,则其各个成员的值不确定。注意:使用数组时应先赋初值

26、。 28 【正确答案】 A 【试题解析】 C+语言中默认小数的输出位一共是六位, fixed 的意义是在小数点后保留六位, scientific的意义是以科学计数法输出小数,本题中,100 8989663的默认输出就是 100 899, fixed 输出是 100, 898966, scienlific输出是 1 008990e+002。注意: C+语言中的小数输出及各种控制方法。 29 【正确答案】 D 【试题解析】 C+语言规定,如果指针变量 q 已指向数组中的一个元素,则 (q+指向同一数组中的下一个元素 (而 不是将 q 的值简单的加 1)。本题中 q 是 long型指针,每个 lon

27、g型数据占内存字节数为 4,所以 q+则由当前位置向右移动 4个字节,所以最后显示出的是 efgh。注意:请注意 * (P+)与 ( * p)+的区别。 30 【正确答案】 A 【试题解析】 字符 z的 ASCII码值为 122,经过 c-25运算后,得 97。注意:C+语言中,字符也可参与算术运算,运算时用的是字符的 ASCII 码值。 31 【正确答案】 B 【试题解析】 : C+语言规定数组名代表数组的首地址,也就是第 0号元素的地址,在 本题中 s就是 s0的地址,指针变量 P指向 s,也就是指向 s0,所以在 for循环累加的是 s0的 score成员值。注意:注意结构体与类的区别。

28、 32 【正确答案】 C 【试题解析】 本题中,格式符。表示的是八进制无符号形式输出整型数 (不带前导 0),字符常量在内存中占一个字节,存放的是 ACSII 码代码值。 C+语言规定,所有字符常量都作为整型量来处理,在计算机内部,其对应的整数值就是ACSII 字符集中该字符的序号。注意: for循环的次数就是字符串 ta018bc的长度。 33 【正确答案 】 B 【试题解析】 格式为: #define宏名 (参数表 )字符串本题的替换过程是 sun=x+y+z * y+z,将其各值带入即可。注意:注意在替换的过程不要随意加入括号。 34 【正确答案】 A 【试题解析】 本题函数 fun 中

29、形参是两个指针变量,函数 fun 只是将这两个指针的指向的地址交换了一下而并没有交换它们所指向的地址中的数据。虽然,主函数中声明的变量 a, b是整型变量而函数 fun中的形参是两个指针变量,这两个变量仅仅是两个参数,与主函数中的那两个变量含义是不同的。注意:采用指针或引用可将值 交换。 35 【正确答案】 D 【试题解析】 对函数的静态局部变量是在编译时就赋初值,即只赋初值一次,在程序运行时它已有初值,以后每次调用函数时不再重新赋值,而只是保留上次函数调用结束时的值。注意:静态函数只能用静态变量。 36 【正确答案】 交换排序 【试题解析】 常见的排序方法有插入排序 (包括简单插入排序法和希

30、尔排序法等 )、交换排序 (包括冒泡排序和快速排序法等 )和选择排序 (包括简单选择排序和堆排序等 )。注意:常见的排序方法及其作用机制和区别。 37 【正确答案】 上溢 【试 题解析】 入队运算是指在循环队列的队尾加入一个新元素。这个运算有两个基本操作:首先将队尾指针进一 (即 rear=rear+1),并当 lear=m+1 时置 rear=1;然后将新元素插入队尾指针指向的位置。当循环队列非空 (s=1)时且队尾指针等于队头指针时,说明循环队列已满,不能进行入队运算,这种情况称为 “上溢 ”。 38 【正确答案】 封装 【试题解析】 面向对象技术中包括以下几个基本概念,即对象、类、方法、

31、消息、继承和封装,其中封装是一种信息隐蔽技术,目的在于将对象的使用者对象的和设计者分开。 39 【正确答案】 输出结果 【试题解析】 注意:测试的基本方法和步骤。 40 【正确答案】 关系运算 【试题解析】 在关系模型的数据语言中,一般除了运用常规的集合运算, (并、交、差、笛卡尔积等 )外,还定义了一些专门的关系运算,如投影、选择、连接等。前者是将关系 (即二维表 )看成是元组的集合,这些运算主要是从二维表的行的方向来进行的;后者主要是从二维表的列的方向来进行的运算。两者统称为关系代数。 41 【正确答案】 main( )函数 【试题解析】 main( )是 C+语言的人口函 数。注意: m

32、ain( )函数可以放在程序的任何位置 42 【正确答案】 15 【试题解析】 i+为先做与 i有关的运算后, i自加 1,而 +i是先给 i加 1再进行与 i有关的操作注意:各种运算符的应用,注意 +, -。 43 【正确答案】 循环结构 【试题解析】 C+语言 3种基本结构就是顺序结构,选择结构,循环结构。 44 【正确答案】 delete i 【试题解析】 申请内存空间时用 new,释放内存空间用 delete。注意: new 和delete的运用和 malloc, free的 运用。 45 【正确答案】 函数名 【试题解析】 重载函数的函数名应和原函数一致。注意:重载函数的方式方法,重载函数的参数,重载函数的返回值。 46 【正确答案】 this 【试题解析】 C+语言中 this指针是类自带的一个指针,它指向正在调用成员函数的对象。注意: C+类的墓本概念, this 指针概念。 47 【正确答案】 20 【试题解析】 要理解 * data的含意。 48 【正确答案】 cout end1; 【试题解析】 “n”表示换行, end1也可表 示换行。注意: end1 和 “n”可以通用。 49 【正确答案】 解决二义性问题 用关键字 virtual 【试题解析】 解决二义性的两个基本方法一是用域名进行限制,二是用虚基类的方法。注意: C+语言中解决二义性的方法。

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

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

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