1、二级 C+笔试-298 及答案解析(总分:104.00,做题时间:90 分钟)一、选择题(总题数:35,分数:76.00)1.有如下程序#includeiostreamh#define N2#define M N+1#define NUM 2 * M+1void main( )int i;for(i=1;i =NUM;i+)cout i 该程序中的 for循环执行的次数是(分数:2.00)A.5B.6C.7D.82.以下程序的输出结果是#includeiostreamhvoid main( )inti,j,x=0;for(i=0;i 2;i+)x+;for(j=0;j 3;j+)if (j%
2、2)continue;x+;x+;cout “x=“ x;(分数:2.00)A.x=4B.x=8C.x=6D.x=123.面向对象程序设计思想的主要特征中不包括(分数:2.00)A.继承性B.功能分解,逐步求精C.封装性和信息隐藏D.多态性4.下列不属于结构化分析的常用工具的是(分数:2.00)A.数据流图B.数据字典C.判定树D.PAD图5.下面程序的结果是#includeiostreamhclass Apublic:A( ) cout “construtA“ end1;virtual A( ) cout “destructA“ end1; ;class B:public A;class C
3、:public A;class D:public B,public C;void main( )Dd;(分数:2.00)A.constructAdestructAB.constructAconstructAdestructAdestructAC.constructAconstructAconstructAdestructAdestructAdestructAD.constructAconstructAconstructAconstructAdestructAdestructAdestructAdestructA6.数据库的故障恢复一般是由(分数:2.00)A.数据流图完成的B.数据字典完成的C
4、.DBA完成的D.PAD图完成的7.下列说法中,不属于数据模型所描述的内容的是(分数:2.00)A.数据结构B.数据操作C.数据查询D.数据约束8.下列程序是用来判断数组中特定元素的位置所在,则输出结果为#include#includeint fun(in *s,int t,int *k)int i;* k=0;for(i=0;i t;i+)if(s *k si) *k=i;return S *k;void main( )int a10= 876,675,896,101,301,401,980,431,451,777 ,k;fun(a,10,& k);cout k , ak;(分数:2.00)
5、A.7,431B.6C.980D.6,9809.有以下语句,则对 a数组元素的引用不正确的是(0i9)int a10= 0,1,2,3,4,5,6,7,8,9 , *p=a;(分数:2.00)A.ap-aB.*(&a i)C.piD.* ( *(a+i)10.有如下程序:#includeiostreamhlong fib(int n)if(n 2) return(fib(n-1)+fib(n-2) );else return(2);void main( )cout fib(3);该程序的输出结果是(分数:2.00)A.2B.4C.6D.811.若执行下面的程序时,从键盘上输入 5和 2,则输出
6、结果是#includeiostreamh:void main( )inta,b,k;cin a b;k=a;if(a B) k=a%b;elsek=b% a;cout k end1;(分数:2.00)A.5B.3C.2D.012.下列工具中为需求分析常用工具的是(分数:2.00)A.PADB.PFDC.N-SD.DFD13.有以下程序#includestringh#includeiostreamhvoid main( )char *p=“abcde/0fghjik/0“;cout strlen(p);程序运行后的输出结果是(分数:2.00)A.12B.15C.6D.514.非空的循环单链表 h
7、ead的尾结点(由 p所指向),满足(分数:2.00)A.pnext=NULLB.p=NULLC.pnext=headD.p=head15.下列程序的运行结果是#include iostreamhclass Location private:int X,Y;public:void init(int=0,in=0);Void valueX(int val) X=val;int valueX( ) return X;void valueY(int val) Y=val;int valueY( ) return Y; ;void Location:init(int initX,int initY)X
8、=initX;Y=initY;void main( )Location A,B;Ainit( );AvalueX(5);cout AvalueX( ) end1 AvalueY( ) end1;Binit(6,2);BvaleY(4);cout BvalueX( ) end1 BvalueY( ) end1;(分数:2.00)A.5064B.0064C.5062D.006216.下列叙述中正确的是(分数:2.00)A.线性表是线性结构B.栈与队列是非线性结构C.线性链表是非线性结构D.二叉树是线性结构17.要想使 2378965421 的输出为 237887 应用的语句是(分数:2.00)A.
9、cout 2378965421;B.cout fixed 2378965421:C.cout 2378965421 -0001:D.cout fixed 2378965421 -0001;18.关于虚函数下面说的正确的是(分数:2.00)A.若在重定义虚函数时使用了 virtual,则该重定义函数还是虚函数B.虚函数不能声明为友元C.子类必须重定义父类的虚函数D.虚函数不能是 static的以下程序的运行结果是#includeiostreamhvoid sub(int x,int y,int *z)*z=y-x;void main( )int a,b,c;sub(10,5,&(分数:6.00)
10、A.;sub(7,a,&B.;sub(a,b,&C.;cout a “,/D.5,-2,-7A.B.C.D.A.B.C.D.19.下列程序的输出结果是#include iostreamhint b=2;int func(int *(分数:2.00)A.b + = *a;return(B.;void main( )iC.8D.1020.如果表达式+x/y 中,+是作为友元函数重载的,/是作为成员函数重载的,则该表达式还可为(分数:2.00)A.(operator+(x) )operator/(y)B.(operator+(0) )operator/(y)C.operator/( (operato
11、r+(x,0) ),y)D.operator/( (operator+(0) ),y)21.关于 this指针的说明不正确的是(分数:2.00)A.不能在程序中修改 this指针B.this指针可以给其他指针赋值,但不能修改 this指针C.静态成员函数中没有 this指针D.this指针可以被赋值22.若有说明语句char a =“It is mine“;char *p=“It is mine“;则以下不正确的叙述是(分数:2.00)A.a+1表示的是字符 t的地址B.p指向另外的字符串时,字符串的长度不受限制C.p变量中存放的地址值可以改变D.a中只能存放 10个字符23.在软件生产过程中
12、,需求信息的给出是(分数:2.00)A.程序员B.项目管理者C.软件分析设计人员D.软件用户24.对建立良好的程序设计风格,下面描述正确的是(分数:2.00)A.程序应简单、清晰、可读性好B.符号名的命名只要符合语法C.充分考虑程序的执行效率D.程序的注释可有可无25.在 C+语言中,封装是借助于什么达到的?(分数:2.00)A.结构B.类C.数组D.函数26.能正确表示逻辑关系:“a10 或 a0”的 C+语言表达式是(分数:2.00)A.a =10 or a =0B.a =0 | a =10C.a =10 & a =0D.a =10,a =027.在位运算中,操作数每左移一位,其结果相当于
13、(分数:2.00)A.操作数乘以 2B.操作数除以 2C.操作数除以 4D.操作数乘以 428.执行下列程序段,结果是#includevoid main( )int x=40;char y=C;int n;n=(x&0xff)&c(y B);cout n;(分数:2.00)A.0B.1C.2D.3C+语言是以哪种语言为基础逐渐发展演变而成的一种程序设计语言(分数:4.00)A.ASPB.CC.VBD.JavaA.B.C.D.29.已知数据表 A中每个元素距其最终位置不远,为节省时间,应采用的算法是(分数:2.00)A.堆排序B.直接插入排序C.快速排序D.直接选择排序30.有以下程序#incl
14、udeiostreamhfloat fun(int x,int y)return(x+y);void main( )int a=2,b=5,c=8;tout fun( (int)fun(a+c,B) ,a-C) ;程序运行后的输出结果是(分数:2.00)A.编译出错B.9C.21D.9031.NULL是指(分数:2.00)A.0B.空格C.未知的值或无任何值D.空字符串32.设变量 a是 int型,f 是 double型,i 是 float型,则表达式 10 + a + i * f 值的数据类型(分数:2.00)A.intB.floatC.doubleD.不确定33.所有在函数中定义的变量,连
15、同形式参数,都属于(分数:2.00)A.全局变量B.局部变量C.静态变量D.寄存器变量二、填空题(总题数:13,分数:28.00)34.冒泡排序算法在最好的情况下的元素交换次数为 【1】 。(分数:2.00)填空项 1:_35.在最坏情况下,堆排序需要比较的次数为 【2】 。(分数:2.00)填空项 1:_36.若串 s=“MathTypes“,则其子串的数目是 【3】 。(分数:2.00)填空项 1:_37.软件开发环境是全面支持软件开发全过程的 【4】 集合。(分数:2.00)填空项 1:_38.关系数据库的关系演算语言是以 【5】 为基础的 DML语言。(分数:2.00)填空项 1:_3
16、9.C+语言中关键字运算符有 new,delete 和 【6】 。(分数:2.00)填空项 1:_40.将以下程序写成三目运算表达式是 【7】 。if(a B) max=a;else max=b;(分数:2.00)填空项 1:_41.以下程序的输出结果是 【8】 。#includeiostreamhclass objectprivate:int va1;public:object1;object(int i)object2; ;object:Object3va1=0;cout “Default constructor for object“ end1;object:object(int i)v
17、a1=icout “Constructor for object“ va1 end1;object:object4cout “Destructor for object“ va1 end1;class container private:object one;object two;int data;public:container5;container(int i,int j,int k);container6; ;container:container7data=0;cout “Default constructor for container“ end1;container:contain
18、er(int i,int j,int k):two(i),one(j)data=k;cout “Constructor for container“ end1;container:container8cout “Destructor for container“ end1;void main9container anObj(5,6,10);(分数:2.00)填空项 1:_42.下面程序的功能是将字符数组 a中下标值为偶数的元素从小到大排列,其他元素不变,请填空。#includeiostreamh#includestringhvoid main1char a =“clanguage“,t;int
19、 i,j,k;k=strlen(A) ;for(i=;0 i =k-2;i+=2=for(j=i+2;j =k; 【9】 =if ( 【10】 )t=ai;ai=aj;aj=t;cout a;cout end1;=(分数:2.00)填空项 1:_43.静态成员函数可以直接访问类的 【11】 成员,不能直接访问类的 【12】 成员。(分数:4.00)填空项 1:_44.请定义一个函数名为 A,返回值为 int,没有参数的纯虚函数的定义是 【13】 。(分数:2.00)填空项 1:_45.表达式 xoperator+(yoperator+(0) )还可以写成 【14】 。(分数:2.00)填空项
20、1:_46.假设 fin是一个文件流对象,则关闭文件的语句是 【15】 。(分数:2.00)填空项 1:_二级 C+笔试-298 答案解析(总分:104.00,做题时间:90 分钟)一、选择题(总题数:35,分数:76.00)1.有如下程序#includeiostreamh#define N2#define M N+1#define NUM 2 * M+1void main( )int i;for(i=1;i =NUM;i+)cout i 该程序中的 for循环执行的次数是(分数:2.00)A.5B.6 C.7D.8解析:解析:这是一种简单的情况:不带参数的宏。关键要注意在对 2 * M+1进
21、行宏替换时,要将宏名 M原样替换,得到 NUM的形式为 2 * N+l+1(千万不要随意把给 N/1加上小括号,使 NUM变为 2 * (N+1)+1,这就是宏名和变量名之间的区别)。2.以下程序的输出结果是#includeiostreamhvoid main( )inti,j,x=0;for(i=0;i 2;i+)x+;for(j=0;j 3;j+)if (j% 2)continue;x+;x+;cout “x=“ x;(分数:2.00)A.x=4B.x=8 C.x=6D.x=12解析:解析:该题是一个 for循环嵌套语句,第一层 for循环循环 2次,第二层循环 3次,但当 j等于 O和
22、1时,将执行 ontinue语句,不执行 x+运算,所以每次执行完内循环后,x 的增量为 1。最后一个 x+运算将每次累加起来就是 x的值。3.面向对象程序设计思想的主要特征中不包括(分数:2.00)A.继承性B.功能分解,逐步求精 C.封装性和信息隐藏D.多态性解析:解析:面向对象程序设计的主要特征是继承性,封装性和信息隐藏,多态性。4.下列不属于结构化分析的常用工具的是(分数:2.00)A.数据流图 B.数据字典C.判定树D.PAD图解析:解析:结构化分析的常用工具有数据流图、数据字典、判定树和判定表。而 PAD图是常见的过程设计工具中的图形设计。5.下面程序的结果是#includeios
23、treamhclass Apublic:A( ) cout “construtA“ end1;virtual A( ) cout “destructA“ end1; ;class B:public A;class C:public A;class D:public B,public C;void main( )Dd;(分数:2.00)A.constructAdestructAB.constructAconstructAdestructAdestructA C.constructAconstructAconstructAdestructAdestructAdestructAD.construct
24、AconstructAconstructAconstructAdestructAdestructAdestructAdestructA解析:解析:类 D继承了类 C和类 B,所以在构造的时候分别构造类 B和类 C。6.数据库的故障恢复一般是由(分数:2.00)A.数据流图完成的B.数据字典完成的C.DBA完成的 D.PAD图完成的解析:解析:一旦数据库中的数据遭受破坏,需要及时进行恢复,RDBMS 一般都提供此种功能,并由 DBA负责执行故障恢复功能。7.下列说法中,不属于数据模型所描述的内容的是(分数:2.00)A.数据结构B.数据操作C.数据查询 D.数据约束解析:解析:数据模型所描述的内
25、容有 3个部分,它们是数据结构、数据操作和数据约束。其中,数据模型中的数据结构主要描述数据的类型、内容、性质,以及数据库的联系等;数据操作主要是描述在相应数据结构上的操作类型与操作方式。8.下列程序是用来判断数组中特定元素的位置所在,则输出结果为#include#includeint fun(in *s,int t,int *k)int i;* k=0;for(i=0;i t;i+)if(s *k si) *k=i;return S *k;void main( )int a10= 876,675,896,101,301,401,980,431,451,777 ,k;fun(a,10,& k);
26、cout k , ak;(分数:2.00)A.7,431B.6C.980D.6,980 解析:解析:本题中直接使用指针变量 k,但在使用时要注意对 k的指针运算,此外,一开始应认为。k的值为数组中的某一下标值,即*k=0。9.有以下语句,则对 a数组元素的引用不正确的是(0i9)int a10= 0,1,2,3,4,5,6,7,8,9 , *p=a;(分数:2.00)A.ap-aB.*(&a i)C.piD.* ( *(a+i) 解析:解析:选项 D) 第一层括号中为数组 a中第 i项元素的值,外面再加指针运算符没有意义。10.有如下程序:#includeiostreamhlong fib(i
27、nt n)if(n 2) return(fib(n-1)+fib(n-2) );else return(2);void main( )cout fib(3);该程序的输出结果是(分数:2.00)A.2B.4 C.6D.8解析:解析:fib(3)=fib(2)+fib(1),而 fib(2)的返回值为 2,fib(1)的返回值也为 2,故输出的 fib(3)的值为 4。11.若执行下面的程序时,从键盘上输入 5和 2,则输出结果是#includeiostreamh:void main( )inta,b,k;cin a b;k=a;if(a B) k=a%b;elsek=b% a;cout k e
28、nd1;(分数:2.00)A.5B.3C.2 D.0解析:解析:本题考查简单的 ifelse语句。先执行条件 if(aB) ,显然不成立,则执行 else语句。12.下列工具中为需求分析常用工具的是(分数:2.00)A.PADB.PFDC.N-SD.DFD 解析:解析:需求分析中的常用工具有 PAD、PFD 及 N-S等,而 DFD(数据流图)为结构化分析工具。13.有以下程序#includestringh#includeiostreamhvoid main( )char *p=“abcde/0fghjik/0“;cout strlen(p);程序运行后的输出结果是(分数:2.00)A.12B
29、.15C.6D.5 解析:解析:C+语言规定了一个字符串结束标志,以字符/0代表,在遇到/ o时,表示字符串结束,由它前面的字符组成字符串。14.非空的循环单链表 head的尾结点(由 p所指向),满足(分数:2.00)A.pnext=NULLB.p=NULLC.pnext=head D.p=head解析:解析:循环链表就是将链表的最后一个结点指向链表头结点(或第一个结点),即 Pnext=head。15.下列程序的运行结果是#include iostreamhclass Location private:int X,Y;public:void init(int=0,in=0);Void va
30、lueX(int val) X=val;int valueX( ) return X;void valueY(int val) Y=val;int valueY( ) return Y; ;void Location:init(int initX,int initY)X=initX;Y=initY;void main( )Location A,B;Ainit( );AvalueX(5);cout AvalueX( ) end1 AvalueY( ) end1;Binit(6,2);BvaleY(4);cout BvalueX( ) end1 BvalueY( ) end1;(分数:2.00)A
31、.5064 B.0064C.5062D.0062解析:解析:本题中有成员函数和它的重载函数,要注意它们的不同在本题中先调用了 init函数,初始化了 X,Y,都为 0,valueX(5);又将 X变为 5,所以输出 5和 0,然后初始化 init(6,2),接着又value Y(4);将 X,Y 设为 6和 4,所以输出 6和 4。16.下列叙述中正确的是(分数:2.00)A.线性表是线性结构 B.栈与队列是非线性结构C.线性链表是非线性结构D.二叉树是线性结构解析:解析:线性表是一种线性结构,数据元素在线性表中的位置只取决于它们自己的序号,即数据元素之间的相对位置是线性的;栈、队列、线性链表
32、实际上也是线性表,故也是线性结构;树是一种简单的非线性结构。17.要想使 2378965421 的输出为 237887 应用的语句是(分数:2.00)A.cout 2378965421;B.cout fixed 2378965421:C.cout 2378965421 -0001: D.cout fixed 2378965421 -0001;解析:解析:C+语言中默认小数的输出位一共是 6位,fixed 的意义是在小数点后保留 6位。18.关于虚函数下面说的正确的是(分数:2.00)A.若在重定义虚函数时使用了 virtual,则该重定义函数还是虚函数B.虚函数不能声明为友元C.子类必须重定义
33、父类的虚函数D.虚函数不能是 static的 解析:解析:虚函数一定不能定义为静态的。虚函数可以声明为友元,子类也不是必须重定义父类的虚函数,若在重定义虚函数时使用了 virtual,则该重定义函数不一定还是虚函数。以下程序的运行结果是#includeiostreamhvoid sub(int x,int y,int *z)*z=y-x;void main( )int a,b,c;sub(10,5,&(分数:6.00)A.;sub(7,a,&B.;sub(a,b,& C.;cout a “,/D.5,-2,-7解析:解析:在 C+语言中,调用函数不可能改变实参指针变量的值,但可以改变实参指针变
34、量所指变量的值,了解了实参指针变量的改变情况,本题只剩下简单的”加减法”了。A.B. C.D.解析:解析:在 C+语言中,调用函数不可能改变实参指针变量的值,但可以改变实参指针变量所指变量的值,了解了实参指针变量的改变情况,本题只剩下简单的”加减法”了。A.B. C.D.解析:解析:在 C+语言中,调用函数不可能改变实参指针变量的值,但可以改变实参指针变量所指变量的值,了解了实参指针变量的改变情况,本题只剩下简单的”加减法”了。19.下列程序的输出结果是#include iostreamhint b=2;int func(int *(分数:2.00)A.b + = *a;return(B.;v
35、oid main( )i C.8D.10解析:解析:在函数体语句中的 b+= * a;的*是指针运算符(也称间接访问运算符),* a 就是 main函数中 a的值。20.如果表达式+x/y 中,+是作为友元函数重载的,/是作为成员函数重载的,则该表达式还可为(分数:2.00)A.(operator+(x) )operator/(y) B.(operator+(0) )operator/(y)C.operator/( (operator+(x,0) ),y)D.operator/( (operator+(0) ),y)解析:解析:C+中用成员函数重载+x 为:xoperator+( ),用友元函
36、数重载+x 为:operator+(x),用成员函数重载 x/y为:xoperator/(y),用友元函数重载 x/y为:operator/(x,y)。21.关于 this指针的说明不正确的是(分数:2.00)A.不能在程序中修改 this指针B.this指针可以给其他指针赋值,但不能修改 this指针C.静态成员函数中没有 this指针D.this指针可以被赋值 解析:解析:C+的 this指针是系统默认产生的一个指针,它是 const的,所以是不能够被改变,不能够被赋值的。22.若有说明语句char a =“It is mine“;char *p=“It is mine“;则以下不正确的叙
37、述是(分数:2.00)A.a+1表示的是字符 t的地址B.p指向另外的字符串时,字符串的长度不受限制C.p变量中存放的地址值可以改变D.a中只能存放 10个字符 解析:解析:本题考查字符串数组和指针的引用方式。在 C+语言中,系统在每个字符串或数组的最后自动加入一个字符/0,作为字符的结束标志,在本题中,char a =“It is mine”;所表示的。字符串实际含有 11个字符。23.在软件生产过程中,需求信息的给出是(分数:2.00)A.程序员B.项目管理者C.软件分析设计人员D.软件用户 解析:解析:软件需求是指用户对目标软件系统在功能、行为、性能、设计约束等方面的期望。24.对建立良
38、好的程序设计风格,下面描述正确的是(分数:2.00)A.程序应简单、清晰、可读性好 B.符号名的命名只要符合语法C.充分考虑程序的执行效率D.程序的注释可有可无解析:解析:程序设计应该简单易懂,语句构造应该简单直接,不应该为提高效率而把语句复杂化。25.在 C+语言中,封装是借助于什么达到的?(分数:2.00)A.结构B.类 C.数组D.函数解析:解析:c+基本的性质就是它的封装性,而封装性主要是靠类来实现的。26.能正确表示逻辑关系:“a10 或 a0”的 C+语言表达式是(分数:2.00)A.a =10 or a =0B.a =0 | a =10C.a =10 & a =0D.a =10,
39、a =0 解析:解析:逻辑运算符“”表示或的意思。27.在位运算中,操作数每左移一位,其结果相当于(分数:2.00)A.操作数乘以 2 B.操作数除以 2C.操作数除以 4D.操作数乘以 4解析:解析:左移运算符“ ”是双目运算符,其功能把“ ”左边的运算数的各二进位全部左移若干位,由“ ”右边的数指定移动的位数,高位丢弃,低位补 0。左移 1位,相当于该数乘以 2。28.执行下列程序段,结果是#includevoid main( )int x=40;char y=C;int n;n=(x&0xff)&c(y B);cout n;(分数:2.00)A.0B.1 C.2D.3解析:解析:按位与运
40、算符“&”是双目运算符。其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为 1时,结果位才为 1,否则为 0。参与运算的数以补码方式出现。逻辑与运算符“&”需要两边的结果都为 1时,其结果才为 1。C+语言是以哪种语言为基础逐渐发展演变而成的一种程序设计语言(分数:4.00)A.ASPB.C C.VBD.Java解析:解析:C+语言是对 C语言进行了扩充,继承了它的语法,并增加了面向对象的设计方法。A.B. C.D.解析:解析:C+语言是对 C语言进行了扩充,继承了它的语法,并增加了面向对象的设计方法。29.已知数据表 A中每个元素距其最终位置不远,为节省时间,应采用的算法是(
41、分数:2.00)A.堆排序B.直接插入排序 C.快速排序D.直接选择排序解析:解析:当数据表 A中每个元素距其最终位置不远,说明数据表 A按关键字值基本有序,在待排序序列基本有序的情况下,采用插入排序所用时间最少,故答案为选项 B) 。30.有以下程序#includeiostreamhfloat fun(int x,int y)return(x+y);void main( )int a=2,b=5,c=8;tout fun( (int)fun(a+c,B) ,a-C) ;程序运行后的输出结果是(分数:2.00)A.编译出错B.9 C.21D.90解析:解析:本题的运算过程是 fun( (int
42、) fun(a + c,B) ,a-C) ,fun( (int)fun (10,5),2-8),fun( (int)15000000,-6),fun(15,-6)=9。31.NULL是指(分数:2.00)A.0B.空格C.未知的值或无任何值 D.空字符串解析:解析:此题属于记忆性的题目,NULL 是指未知的值或无任何值。32.设变量 a是 int型,f 是 double型,i 是 float型,则表达式 10 + a + i * f 值的数据类型(分数:2.00)A.intB.floatC.double D.不确定解析:解析:根据混合运算规则,如果有一个数据是 double型,则其他数据类型先
43、转化为 double型,运算的结果最终也是 double型。为保证精度的不丢失,表达式的数据类型是变量和常量中精确度最高的变量类型。33.所有在函数中定义的变量,连同形式参数,都属于(分数:2.00)A.全局变量B.局部变量 C.静态变量D.寄存器变量解析:解析:C+语言函数中定义的变量都是属于这个函数的局部变量。二、填空题(总题数:13,分数:28.00)34.冒泡排序算法在最好的情况下的元素交换次数为 【1】 。(分数:2.00)填空项 1:_ (正确答案:【1】0)解析:解析:根据冒泡排序算法思想可知,若待排序的初始序列为“正序”序列,则只需进行一趟排序,在排序过程中进行 n-1次关键字
44、间的比较,且不移动和交换记录,这种情况是冒泡排序的最好情况,故冒泡排序算法在最好的情况下的元素交换次数为 0。35.在最坏情况下,堆排序需要比较的次数为 【2】 。(分数:2.00)填空项 1:_ (正确答案:【2】O(nlog 2n))解析:解析:在最坏情况下,冒泡排序所需要的比较次数为 n(n-1)/2;简单插入排序所需要的比较次数为 n(n-1)/2;希尔排序所需要的比较次数为 O(n1.5);堆排序所需要的比较次数为 O(nlog2n)。36.若串 s=“MathTypes“,则其子串的数目是 【3】 。(分数:2.00)填空项 1:_ (正确答案:【3】46)解析:解析:串 s中共有
45、 9个字符,由于串中字符各不相同,则其子串中有 0个字符的 1个 (空串),1个字符的 9个,2 个字符的 8个,3 个字符的 7个,4 个字符的 6个,5 个字符的 5个,6 个字符的 4个,7个字符的 3个,8 个字符的 2个,9 个字符的 1个,共有 1+2+3+4 +5+6+7+8+9+1=46。37.软件开发环境是全面支持软件开发全过程的 【4】 集合。(分数:2.00)填空项 1:_ (正确答案:【4】软件工具)解析:38.关系数据库的关系演算语言是以 【5】 为基础的 DML语言。(分数:2.00)填空项 1:_ (正确答案:【5】谓词演算)解析:解析:关系数据库中的关系演算包括
46、元组关系演算和域关系演算。二者都是由原子公式组成的公式。而这些关系演算都是以数理逻辑中的谓词演算为基础的。39.C+语言中关键字运算符有 new,delete 和 【6】 。(分数:2.00)填空项 1:_ (正确答案:【6】sizeof)解析:解析:C+语言中关键字运算符有 3个分别 new,delete 和 sizeof。new 是申请内存, delete 是释放内存,sizeof 是求字节数。40.将以下程序写成三目运算表达式是 【7】 。if(a B) max=a;else max=b;(分数:2.00)填空项 1:_ (正确答案:【7】max=(aB) ?a:b;)解析:解析:条件运算符要求有三个操作对象,称三目(元)运算符,它是 c+语言中惟一的一个三目运算符。条件表达式的一般形式为:表达式 1?表达式 2:表达式 3。所以我们可以写成(aB) ?a:b,它是一个“条件表达式”。执行顺序是如果(aB) 条件