1、二级 C+笔试 25 及答案解析(总分:98.00,做题时间:90 分钟)一、B选择题/B(总题数:35,分数:70.00)1.虚函数必须是类的(分数:2.00)A.成员函数B.友元函数C.构造函数D.析构函数2.函数 int test(int a,int b=l,int c=0),下列调用不合法的个数是 test(0); test(0,0); test( ); test(0,0,0);(分数:2.00)A.0B.1C.2D.33.C+语言函数中不能由系统自动生成的是(分数:2.00)A.析构函数B.构造函数C.内联函数D.拷贝构造函数4.相对于数据库系统,文件系统的主要缺陷有数据关联差、数据
2、不一致性和(分数:2.00)A.可重用性差B.安全性差C.非持久性D.冗余性5.下面程序错误的语句是 #include“iostream.h” void main( ) int A=0; int i1;+;B.for(int i=0;+;C.for(int i=1;i0;+;D.for(;);7.关于 continue 语句叙述不正确的是(分数:2.00)A.continue 语句用于循环体中,结束循环B.continue 语句用于循环体中,它使执行流跳出循环体中尚未执行的语句,并进行下一循环判断C.continue 可以用于 if 语句中D.continue 语句不能代替 break 语句8
3、.语句 coutsetprecision(2)1024.4567;的输出结果为(分数:2.00)A.1024.4567B.1024C.1024.45D.le+0039.最简单的交换排序方法是(分数:2.00)A.快速排序B.选择排序C.堆排序D.冒泡排序10.C+中运算符优先级由高到低排列正确的是(分数:2.00)A.:+ + |B. *| ,C.sizeof %+:D.,i=new int10;,释放指针 i 的语句是U 【9】 /U。(分数:2.00)填空项 1:_45.函数重载要求重载的函数必须有和原函数一样的U 【10】 /U。(分数:2.00)填空项 1:_46.在 C+语言中每个类
4、都有一个U 【11】 /U指针,该指针指向正在调用成员函数的对象。(分数:2.00)填空项 1:_47.设置虚基类的目的是U 【12】 /U,通过U 【13】 /U表示虚基类。(分数:2.00)填空项 1:_48.程序的结果为U 【14】 /U。 #include“iostream.h“ templatetypename T T total(T*data) T s=0; while(* data) s+=*data+; return s; int main( ) int x = 2,4,6,8,0,12,14,16,18 ; couttotal(x); return 0; coutendl;(
5、分数:2.00)填空项 1:_49.语句 cout/n还可表示为U 【15】 /U。(分数:2.00)填空项 1:_二级 C+笔试 25 答案解析(总分:98.00,做题时间:90 分钟)一、B选择题/B(总题数:35,分数:70.00)1.虚函数必须是类的(分数:2.00)A.成员函数 B.友元函数C.构造函数D.析构函数解析:命题目的 考查虚函数的基本概念。 解题要点 虚函数只能是类的成员函数,不能是构造函数或析构函数。 考点链接 虚函数可以是另一个类的友元函数。2.函数 int test(int a,int b=l,int c=0),下列调用不合法的个数是 test(0); test(0
6、,0); test( ); test(0,0,0);(分数:2.00)A.0B.1C.2 D.3解析:命题目的 考查函数含有默认参数时的调用方法。 解题要点 如果一个函数中有多个参数,则默认参数应从右到左逐个定义。 错解分析 选项 C 没有给 a 传递任何的参数,所以是错误的。 考点链接 函数含有默认参数时的调用方式。3.C+语言函数中不能由系统自动生成的是(分数:2.00)A.析构函数B.构造函数C.内联函数 D.拷贝构造函数解析:命题目的 考查一个类中由系统自动生成的函数。 解题要点 一个类中由系统自动生成的函数有构造函数,析构函数,拷贝构造函数。 错解分析 内联函数只能由用户自己定义。
7、考点链接 类能自动生成的函数,尤其注意构造函数和析构函数,还有拷贝构造函数。4.相对于数据库系统,文件系统的主要缺陷有数据关联差、数据不一致性和(分数:2.00)A.可重用性差B.安全性差C.非持久性D.冗余性 解析:命题目的 让考生了解文件系统和数据库系统的区别。 解题要点 文件系统所管理的数据文件基本上是分散的、相互独立的,因此相对于数据库系统,以此为基础的数据处理存在 3 个缺点,数据冗余大、数据的不一致性、程序与数据的相互依赖(简称为数据依赖)。 考点链接 文件系统和数据库系统各自的特点,人工管理阶段及数据库系统三代的特点。5.下面程序错误的语句是 #include“iostream.
8、h” void main( ) int A=0; int i1;+; B.for(int i=0;+;C.for(int i=1;i0;+;D.for(;);解析:命题目的 考查循环语句 for 的使用。 解题要点 for 循环的一般格式为 for(初始化部分;终止条件判断部分;迭代部分)循环体;说明如下:for 循环开始时,首先执行初始化操作,然后判断终止条件是否满足,如果满足,则执行循环体中的语句,最后执行迭代部分。完成一次循环后,重新判断终止条件。 错解分析 在 for 语句中,如果省略了终止条件判断部分,并且在语句中没有 break,或者是终止条件判断部分始终没有终止,都将出现死循环。
9、 考点链接 for 循环语句可由 while 循环语句来代替。7.关于 continue 语句叙述不正确的是(分数:2.00)A.continue 语句用于循环体中,结束循环 B.continue 语句用于循环体中,它使执行流跳出循环体中尚未执行的语句,并进行下一循环判断C.continue 可以用于 if 语句中D.continue 语句不能代替 break 语句解析:命题目的 考查 continue 语句的运用。 解题要点 continue 是跳出了本次循环中尚未执行的语句,重新执行循环,但没有终止循环。 考点链接 注意 break,continue 和 goto 语句的用法和区别。8.语
10、句 coutsetprecision(2)1024.4567;的输出结果为(分数:2.00)A.1024.4567B.1024C.1024.45D.le+003 解析:命题目的 setprecision( )函数的考查。 解题要点 setprecision( )函数为设置小数位数。 考点链接 C+中 I/O 流各种函数的使用例如: setw( ),setfill( )。9.最简单的交换排序方法是(分数:2.00)A.快速排序B.选择排序C.堆排序D.冒泡排序 解析:命题目的 让考生加深对各种排序方法特点的了解。 解题要点 冒泡排序是一种最简单的交换类排序方法,它是通过相邻数据元素的交换逐步将线
11、性表变成有序。 错解分析 交换排序方法有冒泡排序和快速排序,显然选项 B 和选项 C 错误,冒泡排序比较简单,其算法也容易理解,但快速排序本身较为复杂,且采用了递归调用,其算法理解也稍难。 考点链接 插入排序、选择排序、归并排序、基数排序等排序方法的特点。10.C+中运算符优先级由高到低排列正确的是(分数:2.00)A.:+ + | B. *| ,C.sizeof %+:D.,i=new int10;,释放指针 i 的语句是U 【9】 /U。(分数:2.00)填空项 1:_ (正确答案:delete i)解析:命题目的 new 和 delete 的用法。 解题要点 申请内存空间时用 new,释
12、放内存空间用delete。 考点链接 new 和 delete 的运用和 malloc,free 的运用。45.函数重载要求重载的函数必须有和原函数一样的U 【10】 /U。(分数:2.00)填空项 1:_ (正确答案:函数名)解析:命题目的 重载函数的具体要求。 解题要点 重载函数的函数名应和原函数致。 考点链接 重载函数的方式方法,重载函数的参数,重载函数的返回值。46.在 C+语言中每个类都有一个U 【11】 /U指针,该指针指向正在调用成员函数的对象。(分数:2.00)填空项 1:_ (正确答案:this)解析:命题目的 this 指针的基本概念。 解题要点 C+语言中 this 指针
13、是类自带的一个指针,它指向正在调用成员函数的对象。 考点链接 C+类的基本概念,this 指针概念。47.设置虚基类的目的是U 【12】 /U,通过U 【13】 /U表示虚基类。(分数:2.00)填空项 1:_ (正确答案:12解决二义性问题)解析:13用关键字 virtual 命题目的 考查二义性的概念和解决方法。 解题要点 解决二义性的两个基本方法一是用域名进行限制,二是用虚基类的方法。 考点链接 C+语言中解决二义性的方法。48.程序的结果为U 【14】 /U。 #include“iostream.h“ templatetypename T T total(T*data) T s=0;
14、while(* data) s+=*data+; return s; int main( ) int x = 2,4,6,8,0,12,14,16,18 ; couttotal(x); return 0; coutendl;(分数:2.00)填空项 1:_ (正确答案:20)解析:命题目的 模板函数的运用。 解题要点 要理解*data 的含意。49.语句 cout/n还可表示为U 【15】 /U。(分数:2.00)填空项 1:_ (正确答案:coutendl;)解析:命题目的 考查“/n“和 endl 的意义。 解题要点 “/n“表示换行,endl 也可表示换行。 考点链接 endl 和“/n“可以通用。