1、二级 C+笔试-300 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:35,分数:70.00)1.有以下程序#includeiostreamhstruct STUchar 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;i3;i+)sum=sum+p-scorei;cout sum;程序运行后的输出结果是(分数:2.00)A.260B.270C.280
2、D.2852.C+语言中类的定义的结束声明的符号是(分数:2.00)A.B.,C.;D.3.在下列几种排序方法中,要求内存量最大的是(分数:2.00)A.插入排序B.选择排序C.快速排序D.归并排序4.设一棵二叉树中有 3 个叶子结点,有 8 个度为 1 的结点,则该二叉树中总的结点数为(分数:2.00)A.12B.13C.14D.155.为了避免流程图在描述程序逻辑时的灵活性,提出了用方框图来代替传统的程序流程图,通常也把这种图称为(分数:2.00)A.PAD 图B.N-S 图C.结构图D.数据流图6.关于类定义中的语句错误的是class Aiht i;A a;A * b;char * ch
3、;(分数:2.00)A.int i;B.A a;C.A * b;D.char * ch;7.根据数据结构中各数据元素之问前后件关系的复杂程度,一般将数据结构分成(分数:2.00)A.动态结构和静态结构B.紧凑结构和非紧凑结构C.线性结构和非线性结构D.内部结构和外部结构8.下面程序段中,for 循环的执行次数是char * s=“/ta/018bc“;for(;* s! =/0;s+)cout “ * “;(分数:2.00)A.9B.5C.6D.79.软件复杂性度量的参数包括(分数:2.00)A.效率B.规模C.完整性D.容错性10.如下程序的执行结果是#includeiostreamhvoi
4、d main( )static int a = 1,7,3,9,5,11 ;int * p=a;* (p+3)+=4;cout * p “,“ * (p+3);(分数:2.00)A.1,13B.1,16C.3,13D.1,1411.下列叙述中,不属于结构化程序设计方法的主要原则的是(分数:2.00)A.自顶向下B.由底向上C.模块化D.限制使用 goto 语句12.有以下程序#includeiostreamhint f(iht n)if(n=1) return 1;else return f(n-1)+1;void main( )iht i,j=0;for(i=1;i3;i+)j+=f(i);
5、cout j;程序运行后的输出结果是(分数:2.00)A.4B.3C.2D.113.以下程序的输出结果是#includeiostreamhint f( )static int i=0;int s=1s+ =i; i+;return s;void main( )int i,a=0;for(i=0 ;i5;i+)a+=f( );cout a;(分数:2.00)A.20B.24C.25D.1514.下列程序的输出结果是#includeiostreamhvoid main( )double d=3.2;int x,y;x=12;y=(x+38)/50;cout y * d end1;(分数:2.00)
6、A.3B.3,2C.0D.30715.以下程序段的执行结果为#includeiostreamh#define PLUS(X,Y)X+Yvoid main( )int x=1,y=2,z=3,sum;sum=PLUS(x+y,z) * PLUS(y,z);cout “SUM=“ sum;cout end1;(分数:2.00)A.SUM=9B.SUM=12C.SUM=18D.SUM=3016.执行下面的程序段后,变量 k 中的值为#includeiostreamhvoid main( )int k=3, s2;s0=k; k=s1 *10;cout k;(分数:2.00)A.不定值B.33C.30
7、D.1017.下列关于 C+函数的描述中正确的是(分数:2.00)A.主函数是程序的入口,它由用户定义的函数调用B.函数在调用之前必须先被声明C.每个用户定义的函数只能被其他函数调用一次D.函数是 C+中面向对象程序设计框架的基本组成单元18.下列叙述中,不属于数据库系统的是(分数:2.00)A.数据库B.数据库管理系统C.数据库管理员D.数据库应用系统19.C+语言中运算对象必须是整型的运算符是(分数:2.00)A.%=B./C.=D.=20.下列关于 C+关键字的说法中正确的是(分数:2.00)A.关键字是用户为程序中各种需要命名的“元素”所起的名字B.关键字是对程序中的数据进行操作的一类
8、单词C.关键字是在程序中起分割内容和界定范围作用的一类单词D.关键字是 C+中预先定义并实现一定功能的一类单词21.有如下程序段#includevoid main( )int a=14,b=15,x;char c=A;x=(a&b) &(cB) ;cout x;执行该程序段后,x 的值为(分数:2.00)A.tureB.falseC.0D.122.下列运算符只能用友元函数重载的是(分数:2.00)A. , B.new,deleteC.+,-D.,23.下列不属于软件调试技术的是(分数:2.00)A.强行排错法B.集成测试法C.回溯法D.原因排除法24.以下程序的输出结果是#includevoi
9、d main( )char c=Z;cout c-25;(分数:2.00)A.97B.ZC.z-25D.225.视图设计一般有 3 种设计次序,下列不属于视图设计的是(分数:2.00)A.自顶向下B.由外向内C.由内向外D.自底向上26.#includeiostreamhvoid main( )int n=9;while(n6) n-;cout n; 该程序的输出结果是(分数:2.00)A.987B.876C.8765D.987627.数据库系统的核心是(分数:2.00)A.数据库B.数据库管理系统C.数据模型D.软件工具28.下面关于成员函数重载运算符和友元函数重载运算符相同的是(分数:2.
10、00)A.成员函数和友元函数可重载的运算符是不相同的B.成员函数和友元函数重载运算符时都需要用到 this 指针C.成员函数和友元函数重载运算符时都需要声明为公有的D.成员函数和友元函数重载运算符时的参数町能是相同的29.下列程序的运行结果是#inCludeiostreamhroid 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;(分数:2.00)A.2004 9B.9 2004C.0 0D.编译时出错30.下面说明不正确的是(
11、分数:2.00)A.char a10=“china“;B.char a10,* p=a;p=“china“;C.char * a;a=“china“;D.char a10,* P;P=a=“china“;31.在 C+语言中,退格符是(分数:2.00)A./nB./tC./fD./b32.以下程序的结果是#includeiostreamhvoid main( )char * p=“abcdefgh“,* r;long * q;q=(long * )p;q+;r=(char * )q;cout r end1;(分数:2.00)A.defgB.cdefC.ghabD.efgh33.下列描述中错误的
12、是(分数:2.00)A.析构函数可以被继承B.虚函数不能被继承C.派生类可以有多个基类D.纯虚基类的子类可以是虚基类34.下列描述中哪个是正确的?(分数:2.00)A.派生类构造函数中没有调用父类构造函数则没有对父类初始化B.子类构造函数不能是内联函数C.派生类构造函数中可以对父类数据成员赋值D.构造函数的返回值为 void 类型35.关于语句#includeiostreamusing namespace std;void main( ) cout 1008989663 ; cout fixed 1008989663 ;cout scientific 1008989663 ;的输出结果为(分数
13、:2.00)A.100.899 100898966 1008990e+002B.100.8989663 100898966 1008990e+002C.100899 100898966 1008989e+002D.100899 1008989663 1008989e+002二、填空题(总题数:13,分数:30.00)36.算法的工作量大小和实现算法所需的存储单元多少分别称为算法的 【1】 。(分数:2.00)填空项 1:_37.数据结构包括数据的逻辑结构、数据的 【2】 以及对数据的操作运算。(分数:2.00)填空项 1:_38.可以把具有相同属性的一些不同对象归类,称为 【3】 。(分数:2
14、.00)填空项 1:_39.软件工程包括 3 个要素,分别为方法、工具和 【4】 。(分数:2.00)填空项 1:_40.由关系数据库系统支持的完整性约束是指 【5】 和参照完整性。(分数:2.00)填空项 1:_41.c+语言标识符是以字母或 【6】 开头的,由字母,数字和下划线组成的字符串。(分数:2.00)填空项 1:_42.在内存中,存储字符X要占用 1 个字节,存储字符串“X“要占用 【7】 个字节。(分数:2.00)填空项 1:_43.mystrlen 函数的功能是计算 str 所指字符中的长度,并作为函数值返回,请填空。int mystrlen(char * str)int i;
15、for(i=0; 【8】 !=/0;i+);return(i);(分数:2.00)填空项 1:_44.以下函数用来求出数组的最大元素在数组中的下标并存放在 k 所指的存储单元中。请填空。#includeiostreamhvoid fun(int * s,int t,int * k)int i;* k= 【9】 ;【10】 if(s * k si) * k=i;void main1int al0= 876,675,896,101,301,401,980,431,451,777 ,k;fun(a,10,&k);cout k “,“ ak;(分数:4.00)填空项 1:_45.如果一个类中定义了成员
16、对象,则该类的对象和成员对象先被初始化的是 【11】 。(分数:2.00)填空项 1:_46.请在 mian 函数中填空使下面程序的输出结果为 1 1。#includeiostreamhclass Aprivate:int a;int b;public:A( ):a(0) ,b(1) void show( ) cout a “ “ b; ;class Bprivate:int a;int c;public:B( ):a(1),c(1) void show( ) cout a “ “ c; ;class C:public A,public B;void main( )C cc;【12】 (分数:
17、2.00)填空项 1:_47.C+在重载运算符中,如用成员函数重载一元运算符参数表中需要 【13】 个参数,如用友元函数重载一元运算符参数表中需要 【14】 个参数。(分数:4.00)填空项 1:_48.已知:double A (double A) return +a;和 int A(int A) return +a;是一个函数模板的两个实例,则该模板定义为 【15】 。(分数:2.00)填空项 1:_二级 C+笔试-300 答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:35,分数:70.00)1.有以下程序#includeiostreamhstruct STUcha
18、r 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;i3;i+)sum=sum+p-scorei;cout sum;程序运行后的输出结果是(分数:2.00)A.260B.270 C.280D.285解析:【命题目的】考查结构体的用法【解题要点】:C+语言规定数组名代表数组的首地址,也就是第 0 号元素的地址,在本题中 s 就是 s0的地址,指针变量 P 指向 s,也就是指向 s0
19、,所以在 for 循环累加的是 s0的 score 成员值。【考点链接】注意结构体与类的区别。2.C+语言中类的定义的结束声明的符号是(分数:2.00)A.B.,C.; D.解析:【命题目的】考查 C+语言中类定义的结束符号。【解题要点】C+语言中类定义的结束符号是分号。【考点链接】函数的定义不需要分号。3.在下列几种排序方法中,要求内存量最大的是(分数:2.00)A.插入排序B.选择排序C.快速排序D.归并排序 解析:【命题目的】要求考生对几种排序方法的实现机制有充分的理解。【解题要点】快速排序的基本思想是,通过一趟排序将待排序记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的
20、关键字小,再分别对这两部分记录继续进行排序,以达到整个序列有序;插入排序的基本操作是指将无序序列中的各元素依次插入到已经有序的线性表中,从而得到一个新的序列;选择排序的基本思想是:扫描整个线性表,从中选出最小的元素,将它交换到表的最前面(这是它应有的位置),然后对剩下的子表采用同样的方法,直到表空为止:归并排序是将两个或两个以上的有序表组合成一个新的有序表。【考点链接】各种排序方法实现过程及实现机制。4.设一棵二叉树中有 3 个叶子结点,有 8 个度为 1 的结点,则该二叉树中总的结点数为(分数:2.00)A.12B.13 C.14D.15解析:【命题目的】本题考查二叉树的基本概念及其基本性质
21、。【解题要点】按照题目的要求可得到满足条件的二叉树,如下图所示:*故该二叉树中总的结点个数为 13。5.为了避免流程图在描述程序逻辑时的灵活性,提出了用方框图来代替传统的程序流程图,通常也把这种图称为(分数:2.00)A.PAD 图B.N-S 图 C.结构图D.数据流图解析:【命题目的】本题考查了几种常用的算法描述工具及其基本知识。【解题要点】常见的过程设计工具有:程序流程图、N-S 图、PAD 图和 HIPO 图。其中,为了避免流程图在描述程序逻辑时的灵活性,提出了用方框图来代替传统的程序流程图,通常也把这种图称为 N-S 图。【考点链接】其他常用算法描述工具的概念。6.关于类定义中的语句错
22、误的是class Aiht i;A a;A * b;char * ch;(分数:2.00)A.int i;B.A a; C.A * b;D.char * ch;解析:【命题目的】考查 C+语言中类定义用它自己定义数据的方法。【解题要点】C+语言中类定义中若想用该类来定义数据只能定义为指针类型的,而不能定义为普通类型的。【考点链接】C+语言类的定义的方法7.根据数据结构中各数据元素之问前后件关系的复杂程度,一般将数据结构分成(分数:2.00)A.动态结构和静态结构B.紧凑结构和非紧凑结构C.线性结构和非线性结构 D.内部结构和外部结构解析:【命题目的】考查考生对数据结构分类的理解。【解题要点】根
23、据数据结构中各数据元素之间前后件关系的复杂程序,一般将数据结构分为两大类:线性结构和非线性结构。线性结构是指满足以下两个条件的非空的数据结构:一是有且只有一个根结点,二是每一个结点最多有一个前件,也最多有一个后件。如是一个数据结构不是线性结构,则称为非线性结构。【考点链接】数据结构的各种分类方法及标准。8.下面程序段中,for 循环的执行次数是char * s=“/ta/018bc“;for(;* s! =/0;s+)cout “ * “;(分数:2.00)A.9B.5C.6 D.7解析:【命题目的】数据成员内存的占用。【解题要点】本题中,格式符。表示的是八进制无符号形式输出整型数(不带前导
24、0),字符常量在内存中占一个字节,存放的是 ACSII 码代码值。C+语言规定,所有字符常量都作为整型量来处理,在计算机内部,其对应的整数值就是 ACSII 字符集中该字符的序号。【考点链接】for 循环的次数就是字符串/ta/018bc 的长度。9.软件复杂性度量的参数包括(分数:2.00)A.效率B.规模 C.完整性D.容错性解析:【命题目的】记忆软件复杂性度量的参数。【解题要点】定量度量方法是程序复杂程度经常使用的方法,把程序的复杂程度乘以适当参数即可估算出软件中错误的数量以及软件开发需要用的工作量,定量度量的结果可以用来比较两个不同设计或两个不同算法的优劣,程序的定量的复杂程度可作为模
25、块规模的精确限度,因而软件复杂性度量的参数包括规模。【考点链接】软件复杂性度量的方法及各种度量参数的作用。10.如下程序的执行结果是#includeiostreamhvoid main( )static int a = 1,7,3,9,5,11 ;int * p=a;* (p+3)+=4;cout * p “,“ * (p+3);(分数:2.00)A.1,13 B.1,16C.3,13D.1,14解析:【命题目的】本题考查对指针数组的掌握。【解题要点】指针数组的定义、赋初值、数组元素的引用与赋值等操作和一般数组的处理方法基本相同。需要注意指针数组是指针类型的,对其元素所赋的值必须是地址值。其格
26、式是“存储类型数据类型 * 指针数组名 1长度 1=初值 1,功能是定义指向“数据类型”变量或数组的指针型数组,同时给指针数组元素赋初值。这些指针变量具有指定的“存储类型”。本题中指针 * p 指向数组 a,表达式 * (p+3)+=4的含义是 * (P+3)= * (p +3)+4,而 * (p+3)在数组中指向的值为 9,最后输出的结果为 9+4=13,【考点链接】一个语句的结束要有分号。11.下列叙述中,不属于结构化程序设计方法的主要原则的是(分数:2.00)A.自顶向下B.由底向上 C.模块化D.限制使用 goto 语句解析:【命题目的】本题考查了结构化程序设计的原则。【解题要点】结构
27、化程序设计方法的主要原则可以概括为以下 4 个方面,即自顶向下、逐步求精、模块化及限制使用 goto 语句。12.有以下程序#includeiostreamhint f(iht n)if(n=1) return 1;else return f(n-1)+1;void main( )iht i,j=0;for(i=1;i3;i+)j+=f(i);cout j;程序运行后的输出结果是(分数:2.00)A.4B.3 C.2D.1解析:【命题目的】本题考查了函数的递归调用的应用。【解题要点】在 main 函数中,对 f(1)和 f(2)的值进行了累加。过程如下:f (1)=1f (2)=f (1)+l
28、=2最后,j 的值为 1+2=3。【考点链接】函数的递归调用需要有一个结束的条件。13.以下程序的输出结果是#includeiostreamhint f( )static int i=0;int s=1s+ =i; i+;return s;void main( )int i,a=0;for(i=0 ;i5;i+)a+=f( );cout a;(分数:2.00)A.20B.24C.25D.15 解析:【命题目的】考查 stabtic 的用法和意义。【解题要点】对函数的静态局部变量是在编译时就赋初值,即只赋初值一次,在程序运行时它已有初值,以后每次调用函数时不再重新赋值,而只是保留上次函数调用结束
29、时的值。【考点链接】静态函数只能用静态变量。14.下列程序的输出结果是#includeiostreamhvoid main( )double d=3.2;int x,y;x=12;y=(x+38)/50;cout y * d end1;(分数:2.00)A.3B.3,2C.0 D.307解析:【命题目的】数据类型的默认转换。【解题要点】本题中,先将 x 转换为浮点型再与 38 相加,得到结果与 50 相除。最后将得到的结果去掉小数位化成整型数据赋给 y。另外,值得注意的是,整型、实型、字符型数据间可以混合运算。在进行运算时,不同类型的数据先转换成同一类型,然后再进行运算。【错解分析】如果认为执
30、行 y=(x+38)/50 后 y 的值为 1 是错误的,此时 y 的值为 0。【考点链接】x 为 int 型,将 12 赋值给 x 时,x 的值为 1。15.以下程序段的执行结果为#includeiostreamh#define PLUS(X,Y)X+Yvoid main( )int x=1,y=2,z=3,sum;sum=PLUS(x+y,z) * PLUS(y,z);cout “SUM=“ sum;cout end1;(分数:2.00)A.SUM=9B.SUM=12 C.SUM=18D.SUM=30解析:【命题目的】本题考查带参数的宏定义及应用方法,这种宏不只是进行字符串的替换,还要进行
31、参数的替换。【解题要点】格式为:#define 宏名(参数表)字符串本题的替换过程是 sun=x+y+z * y+z,将其各值带入即可。【考点链接】注意在替换的过程不要随意加入括号。16.执行下面的程序段后,变量 k 中的值为#includeiostreamhvoid main( )int k=3, s2;s0=k; k=s1 *10;cout k;(分数:2.00)A.不定值 B.33C.30D.10解析:【命题目的】考查 C+语言中数组初始化问题。【解题要点】如果定义数组时没有进行初始化,则其各个成员的值不确定。【考点链接】使用数组时应先赋初值。17.下列关于 C+函数的描述中正确的是(分
32、数:2.00)A.主函数是程序的入口,它由用户定义的函数调用B.函数在调用之前必须先被声明 C.每个用户定义的函数只能被其他函数调用一次D.函数是 C+中面向对象程序设计框架的基本组成单元解析:【命题目的】关于 C+语言中函数的基本概念。【解题要点】C+语言中函数在被调用以前必须先被声明,主函数是程序的入口函数,用户定义的函数是可以被重复调用的,C+语言中面向对象程序设计的基本组成单元是类。【考点链接】主函数可以放在程序小的任何位置。18.下列叙述中,不属于数据库系统的是(分数:2.00)A.数据库B.数据库管理系统 C.数据库管理员D.数据库应用系统解析:【命题目的】本题考查数据库系统的基础
33、知识数据库系统的组成部分。【解题要点】数据库系统(Database System,简称 DBS)由如下几部分组成,即数据库、数据库管理系统、数据库管理员,硬件和软件。19.C+语言中运算对象必须是整型的运算符是(分数:2.00)A.%= B./C.=D.=解析:【命题目的】C+语言运算符的使用。【解题要点】C+语言规定:取余运算符的运算对象必须是整型,复合运算符“%=”中包含%运算,它的运算对象也必须是整型。20.下列关于 C+关键字的说法中正确的是(分数:2.00)A.关键字是用户为程序中各种需要命名的“元素”所起的名字B.关键字是对程序中的数据进行操作的一类单词C.关键字是在程序中起分割内
34、容和界定范围作用的一类单词D.关键字是 C+中预先定义并实现一定功能的一类单词 解析:【命题目的】C+语言关键字的概念。【解题要点】关键字是 C+语言中预先定义并实现一定功能的一类单词,它不是由用户定义的,它是一种功能性单词。【考点链接】注意关键字不能用做用户标识符,21.有如下程序段#includevoid main( )int a=14,b=15,x;char c=A;x=(a&b) &(cB) ;cout x;执行该程序段后,x 的值为(分数:2.00)A.tureB.falseC.0D.1 解析:【命题目的】关于 C+语言中逻辑运算符的考查。【解题要点】在 C+语言中,逻辑运算符有 4
35、 个,它们分别是!(逻辑非)、(逻辑或)、&(逻辑与)、(异或)。在位运算里面还有&(位与)、|(位或)的运算。本题考查逻辑与运算符的用法,在语句 x=(a&b)&(cB);中,先判断 a&b 条件,逻辑与条件的两边都要保证为 1,即 a 和 b 都成立,当然 cB是成立的,显然,该表达式的值为 1。22.下列运算符只能用友元函数重载的是(分数:2.00)A. , B.new,deleteC.+,-D.,解析:【命题目的】考查 C+语言中运算符重载。【解题要点】C+语言中运算符重载中只能用友元函数重载的运算符是 和 。23.下列不属于软件调试技术的是(分数:2.00)A.强行排错法B.集成测试
36、法 C.回溯法D.原因排除法解析:【命题目的】掌握软件调试技术的方法、【解题要点】调试的关键在于推断程序内部的错误位置及原因。主要的调试方法有强行排错法、回溯法和原因排除法。【考点链接】软件调试的各种方法及各种方法的区别。24.以下程序的输出结果是#includevoid main( )char c=Z;cout c-25;(分数:2.00)A.97 B.ZC.z-25D.2解析:【命题目的】字符串指针的考查。【解题要点】字符 z 的 ASCII 码值为 122,经过 c-25 运算后,得 97。【考点链接】C+语言中,字符也可参与算术运算,运算时用的是字符的 ASCII 码值。25.视图设计
37、一般有 3 种设计次序,下列不属于视图设计的是(分数:2.00)A.自顶向下B.由外向内 C.由内向外D.自底向上解析:【命题目的】本题主要考查了数据库概念设计中,视图设计的基本概念。【解题要点】视图设计一般有 3 种设计次序,它们分别是自顶向下、自底向上和由内向外,它们又为视图设计提供了具体的操作方法,设计者可根据实际情况灵活掌握,可以单独使用也可混合使用。【考点链接】数据库概念设计的过程:首先选择局部应用,再进行局部视图设计,最后对局部视图进行集成得到概念模式。26.#includeiostreamhvoid main( )int n=9;while(n6) n-;cout n; 该程序的
38、输出结果是(分数:2.00)A.987B.876 C.8765D.9876解析:【命题目的】考查 C+语言中 while 语句的应用【解题要点】该题目应该根据循环体第一次和最后一次执行时的输出结果来决定哪一项是正确的。第一次进入循环时,n 的值是 9,循环体内,先经过 n-运算,n 的值变为 8,所以第一次的输出值是 8,由此可以排除选项 A)和选项 D)。由循环条件 n6 可以知道,最后一次循环开始时,n 的值应该为 7,所以最后一次执行循环体时输出为 6,由此可以排除选项 C)。【考点链接】while 与 do-while 的区别。27.数据库系统的核心是(分数:2.00)A.数据库B.数
39、据库管理系统 C.数据模型D.软件工具解析:【命题目的】考查对数据库系统各方面之间的关系。【解题要点】数据库管理系统是对数据库进行管理和对数据库进行操作的管理系统,它是建立在操作系统基础之上的,位十操作系统和用户之间的一层数据管理软件,负责对数据库的数据进行统一的管理和控制,它是实现数据库和管理数据库的核心。【考点链接】数据库系统各方面之间的关系及相互作用。28.下面关于成员函数重载运算符和友元函数重载运算符相同的是(分数:2.00)A.成员函数和友元函数可重载的运算符是不相同的 B.成员函数和友元函数重载运算符时都需要用到 this 指针C.成员函数和友元函数重载运算符时都需要声明为公有的D
40、.成员函数和友元函数重载运算符时的参数町能是相同的解析:【命题目的】考查 C+语言中操作符重载中成员函数重载和友元函数重载的不同。【解题要点】成员函数和友元函数可重载的运算符有些相同的,有些是不同的,友元函数没有 this 指针,二者重载相同运算符时的参数肯定是不同的,成员函数重载运算符时都必须声明为公有的。【考点链接】友元函数的声明关健字是 friend。29.下列程序的运行结果是#inCludeiostreamhroid 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
41、,y);cout a “ “ b end1;(分数:2.00)A.2004 9 B.9 2004C.0 0D.编译时出错解析:【命题目的】函数传参的方式。【解题要点】本题函数 fun 中形参是两个指针变量,函数 fun 只是将这两个指针的指向的地址交换了一下而并没有交换它们所指向的地址中的数据。虽然,主函数中声明的变量 a,b 是整型变量而函数 fun 中的形参是两个指针变量,这两个变量仅仅是两个参数,与主函数中的那两个变量含义是不同的。【考点链接】采用指针或引用可将值交换。30.下面说明不正确的是(分数:2.00)A.char a10=“china“;B.char a10,* p=a;p=“
42、china“;C.char * a;a=“china“;D.char a10,* P;P=a=“china“; 解析:【命题目的】C+语言中字符串的赋值。【解题要点】C+语言中操作一个字符串常量的方法有:把字符串常量存放在一个字符数组之中:用字符指针指向字符串,然后通过字符指针来访问字符串存贮区域。当字符串常量在表达式中出现时,根据数组的类型转换规则,它被转换成字符指针。本题选项 D)中错误的关键是对数组初始化时,可以在变量定义时整体赋初值,但不能在赋值语句中整体赋值。31.在 C+语言中,退格符是(分数:2.00)A./nB./tC./fD./b解析:【命题目的】考查 C+语言中的转义字符。
43、【解题要点】在 C+语言中退格符表示为/b 退格。【考点链接】其他转义字符的意义:/n 表示回车换行,/t 表示横向跳到下一制表位置,/v 表示竖向跳格,/r 表示回车,/f 表示走纸换页,/表示反斜线符,/a 表示鸣铃, /ddd13 位表示八进制数所代表的字符,/xhh12 位表示十六进制数所代表的字符。32.以下程序的结果是#includeiostreamhvoid main( )char * p=“abcdefgh“,* r;long * q;q=(long * )p;q+;r=(char * )q;cout r end1;(分数:2.00)A.defgB.cdefC.ghabD.ef
44、gh 解析:【命题目的】字符串指针的考查。【解题要点】C+语言规定,如果指针变量 q 已指向数组中的一个元素,则(q+指向同一数组中的下一个元素(而不是将 q 的值简单的加 1)。本题中 q 是 long 型指针,每个 long 型数据占内存字节数为 4,所以q+则由当前位置向右移动 4 个字节,所以最后显示出的是 efgh。【考点链接】请注意 * (P+)与( * p)+的区别。33.下列描述中错误的是(分数:2.00)A.析构函数可以被继承B.虚函数不能被继承 C.派生类可以有多个基类D.纯虚基类的子类可以是虚基类解析:【命题目的】关于 C+语言基类中虚函数的继承问题。【解题要点】C+语言
45、中基类的虚函数是可以被派生类继承的。【考点链接】虚函数和纯虚函数的区别。34.下列描述中哪个是正确的?(分数:2.00)A.派生类构造函数中没有调用父类构造函数则没有对父类初始化B.子类构造函数不能是内联函数C.派生类构造函数中可以对父类数据成员赋值 D.构造函数的返回值为 void 类型解析:【命题目的】C+语言中继承中的赋值问题。【解题要点】C+语言中基类的构造函数是可以被派生类继承并赋值的。【考点链接】构造函数和析构函数均无返回值。35.关于语句#includeiostreamusing namespace std;void main( ) cout 1008989663 ; cout
46、fixed 1008989663 ;cout scientific 1008989663 ;的输出结果为(分数:2.00)A.100.899 100898966 1008990e+002 B.100.8989663 100898966 1008990e+002C.100899 100898966 1008989e+002D.100899 1008989663 1008989e+002解析:【命题目的】考查 C+语言中格式控制标志。【解题要点】C+语言中默认小数的输出位一共是六位,fixed 的意义是在小数点后保留六位,scientific 的意义是以科学计数法输出小数,本题中,10089896
47、63 的默认输出就是 100899,fixed输出是 100,898966,scienlific 输出是 1008990e+002。【考点链接】C+语言中的小数输出及各种控制方法。二、填空题(总题数:13,分数:30.00)36.算法的工作量大小和实现算法所需的存储单元多少分别称为算法的 【1】 。(分数:2.00)填空项 1:_ (正确答案:【1】时间复杂度和空间复杂度)解析:【命题目的】本题考查了考生对算法的理解程度。【解题要点】算法的复杂性是指对一个在有限步骤内终止算法和所需存储空间大小的估计。算法的计算量是算法的时间复杂性,算法所需存储空间大小是算法的空间复杂性。【考点链接】算法的各种属性及其相互作用。37.数据结