1、计算机二级(C+)25 及答案解析(总分:1765.00,做题时间:90 分钟)一、选择题(每小题 2分,共 70分) 下列各(总题数:25,分数:1750.00)1.函数 fun的返回值是( )。 fun(char*a,char*b) intnum=0,n=0; while(*(a+num)!=/0)num+; while(bn)*(a+num)=bn;num+;n+; returnnum; (分数:70.00)A.字符串 a的长度B.字符串 b的长度C.字符串 a和 b的长度之差D.字符串 a和 b的长度之和2.下面程序的运行结果为( )。 #include iostreamh void
2、swap(int a,int b) int temp; temp=a+; a=b; b=temp; void main( ) int a=2,b=3; swap(a,b); couta“,“ BA.2,3B.3,2C.2,2D.3,33.存在定义 int a10,x,*pa;,若 pa:i+) switch(stri) case1:x4+; case2:x3+; case3:x2+; case4:x1+; cout x1 “,“ x2 “,“ x3 “,“ x4; (分数:70.00)A.0B.1C.2D.35.以下不正确的定义语句是( )。(分数:70.00)A.doublex5=20,40
3、,60,80,100;B.inty5=0,1,3,5,7,9;C.charcl=1,2,3,4,5;D.charc2:/x1O,/xa,/x8;6.C+语言中标点符号中表示一条预处理命令开始的是( )。(分数:70.00)A.#B.;C.7.所有在函数中定义的变量,连同形式参数,都属于( )。(分数:70.00)A.全局变量B.局部变量C.静态变量D.寄存器变量8.执行下列程序段,结果是( )。 #includeiostreamh void main( ) int x=40; char y=C; int n; n=(xi+) switch(stri) case1:x4+; case2:x3+;
4、 case3:x2+; case4:x1+; cout x1 “,“ x2 “,“ x3 “,“ x4; (分数:70.00)A.0B.1C.2 D.3解析:对于文本框的 MaxLength属性的设置如下:MaxLength 属性用来设置允许在文本框中输入的最大字符数,如果将其设置为 0,则在文本框中输入的字符不能超过 32K,所以选项 C)是正确的。5.以下不正确的定义语句是( )。(分数:70.00)A.doublex5=20,40,60,80,100;B.inty5=0,1,3,5,7,9; C.charcl=1,2,3,4,5;D.charc2:/x1O,/xa,/x8;解析:在一维数
5、组中要注意的是作为下标表达式的常量表达式的值必须是大于等于 0,并且小于自身,本题中选项 B)的下标表达式的值超过了自身。6.C+语言中标点符号中表示一条预处理命令开始的是( )。(分数:70.00)A.# B.;C.解析:C+语言中预处理语句的开始符号是#。7.所有在函数中定义的变量,连同形式参数,都属于( )。(分数:70.00)A.全局变量B.局部变量 C.静态变量D.寄存器变量解析:C+语言函数中定义的变量都是属于这个函数的局部变量。8.执行下列程序段,结果是( )。 #includeiostreamh void main( ) int x=40; char y=C; int n; n
6、=(x1 表示控件中只有水平 滚动条;2,表示控件中只有垂直滚动条;3,同时具有水平和垂直潦动条。 16.下面程序的结果为( )。 #include“ iostreamh“ void change(int a,int b) int temp; temp=a; a=b; b=temp; void main( ) int m,n; m=8; n=9; change(m,n); tout m “ “ n end1; (分数:70.00)A.永久性联系B.临时性联系 C.任意的联系D.以上说法均不正确解析:BOF( )用于测试当前表文件(缺省自变量)或指定表文件中的记录指针是否指向文件首,若是返回逻辑
7、真(T),否则为逻辑假(F)。若在指定工作区上没有打开表文件,函数返回逻辑假(F),若表文件中不包含任何记录,函数返回逻辑真(T)。17.与语句 coutendl;不等价的是( )。(分数:70.00)A.3,3 B.3,4C.4,3D.4,4解析:构造方法是给对象赋初值,所以没有返回值。18.下列函数的运行结果是( )。 #include iostreamh int f(int a,int b) int c; if (a b)c=1; else if(a=b)c=0; else c=-1; return(c); void main( ) int i=2,j=3; int p=f(i,j);
8、cout p; (分数:70.00)A.-1 B.1C.2D.编译出错,无法运行解析:本题的函数是根据 a和 b的值来给 c赋值。19.表达式 10 5 &6%3 的值是( )。(分数:70.00)A.Width和 HeightB.Width或 HeightC.StartUpPositon D.Top和 Left解析:RELEASE MEMORY 和 CLEAR MEMORY只是清除公有和私有变量,不能清除系统变量。要释放所有内存变量应使用 RELEASE ALL。20.下面程序的运行结果是( )。 #include“ iostreamh“ #define sum(a,b)a * b void
9、 main( ) int x; x=sam(1+2,3); cout x; (分数:70.00)A.0B.9C.7 D.5解析:本题考查宏定义的简单运用。理解宏定义,sum(a,b)o * b 中 a为 1+2,b 为 3,故 sum(1+2,3):1+2 * 3,即宏定义的替换过程是原样替换。注意:选项 B)的计算方法是(1+2) * 3=9 是错误的,注意,不要随意的加括号。21.下列程序的输出结果是( )。 #include“ iostream“ using namespace std; int Max(int a,int b) if(a b) else return a; else r
10、etum b; void main( ) int m,n; m=10,n=5; int max=Max(m,n); cout max end1; (分数:70.00)A.10 B.程序有误C.1D.0解析:本题考查 return语句的用法和函数的调用。本题函数 Max的功能是求出两个整数中的较大者,并且通 return语句返回。22.以下程序中调用 cin函数给变量 a输入数值的方法是错误的,其错误原因是( )。 #includeiostreamh void main( ) int *p,*q,a,b; p=&a; cout “input a:“; cin p; (分数:70.00)A.* p
11、表示的是指针变量 p的地址B.p表示的是变量 a的地址,而不是变量 a的值 C.* p表示的是指针变量 p的值D.* p只能用来说明 p是一个指针变量解析:p 表示的是变量 a的地址,定义后*p 表示的是变量 a的值。23.有以下程序 #includeiostreamh void main( ) int a=5,b=0,c=0; if(a=b+c) cout“* * *“ endl; else cout“$“endl; 下列选项叙述正确的是( )。 (分数:70.00)A.有语法错不能通过编译B.可以通过编译但不能通过连接C.输出* * *D.输出 $ $ $ 解析:解答本题时,先判断 if语
12、句,因为 a=b+c为零,则执行 else语句。24.下面程序的运行结果是( )。 #includeiostream.h void main( ) int i=1; while(i=8) if(+i3!=2)continue; else cout i; (分数:70.00)A.25B.36C.258 D.369解析:应该先做什运算,然后进行%运算,最后比较不等式,实际上最后 输出的结果就是被 3除,余数为2的不大于 8的数。25.关于静态数据成员的描述中正确的是( )。(分数:70.00)A.“=a+b+c/3”B.“(a+b+c)/3”C.“=(a+b+c)/3” D.以上表达式均错解析:本
13、题考查的是滚动条事件的应用。在 Visual Basic中,与滚动条有关的事件是 Scroll和 Change事件。当在滚动条内拖动滚动块时触发 Scroll事件;改变滚动框的位置后,将触发 Change事件。Scroll事件用于跟踪滚动条中的动态变化,Change 事件用于得到滚动条的最后的值。26.应用数据库的主要目的是( )。(分数:-1.00)A.解决数据保密问题B.解决数据完整性问题C.解决数据共享问题 D.解决数据量大的问题解析:数据库中的数据具有“集成”与“共享”的特点,也就是数据库集中了各种应用的数据,进行统一构造与存储,而使它们可以被不同应用程序所使用,故选项 C)正确。27
14、.一个关系中属性个数为 1时,称此关系为 ( )。(分数:-1.00)A.对应关系B.单一关系C.一元关系 D.二元关系解析:在关系模型数据库中,基本结构是二维表,这种二维表称为关系。关系的列称为属性,一个具有 N个属性的关系称为 N元关系。28.在设计程序时,应采纳的原则之一是( )。(分数:-1.00)A.不限制 goto语句的使用B.减少或取消注解行C.程序越短越好D.程序结构应有助于读者理解 解析:滥用 goto浯句将使程序流程无规律,可读性差,因此选项 A)不选; 注解行有利于对程序的理解,不应减少或取消,选项 B)也不选;程序的长短要依照实际情况而论,而不是越短越好,选项 C)也不
15、选。29.n个顶点的连通图中边的条数至少为( )。(分数:-1.00)A.0B.1C.n-1 D.n解析:在无向图(边没有方向性的图)中,若从顶点 vi到 vj有路径,则称 vi和 vj是连通的,若该图中任意两个顶点都是连通的,则称该图为连通图。30.索引属于( )。(分数:-1.00)A.模式B.内模式 C.外模式D.概念模式解析:内模式(Internal Schema)又称物理模式(Physical Schema),它给出了数据库物理存储结构与物理存取方法,如数据存储的文件结构、索引、集簇及 hash等存取方式与存取路径。31.在数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和
16、数据库系统阶段 其中数据独立性最高的阶段是 ( )。(分数:-1.00)A.数据库系统 B.文件系统C.人工管理D.数据项管理解析:人工管理阶段是在 20世纪 50年代中期以前出现的,数据不独立, 完全依赖于程序;文件系统是数据库系统发展的初级阶段,数据独立性差;数据库系统具 有高度的物理独立性和一定的逻辑独立性。32.下列叙述中,不属于软件需求规格说明书的作用的是( )。(分数:-1.00)A.便于用户、开发人员进行理解和交流B.反映出用户问题的结构,可以作为软件开发工作的基础和依据C.作为确认测试和验收的依据D.便于开发人员进行需求分析 解析:软件需求规格说明书(SRS,Software
17、Requirement Specification)是需求分析阶段的最后成果,是软件 开发中的重要文 档之一。它有以下几个方面的作用:便于用户、开发人员进行理解和交流;反映出用户问题的结 构,可以作为软件开发工作的基础和依据;作为确认测试和验收的依据。33.程序的 3种基本控制结构是( )。(分数:-1.00)A.过程、子过程和分程序B.顺序、选择和重复 C.递归、堆栈和队列D.调用、返回和转移解析:采用结构化程序设计方法编写程序,可使程序结构良好、易读、易理解、易维护,它包括 3种基本控制结构,分别是顺序结构、选择结构和重复结构(又称循环结构)。34.在计算机中,算法是指( )。(分数:-1
18、.00)A.加工方法B.解题方案的准确而完整的描述 C.排序方法D.查询方法解析:计算机算法是指解题方案的准确而完整的描述,它有以下几个基本特征:可行性、确定性、有穷性和拥有足够的情报。35.软件生命周期中花费时间最多的阶段是( )。(分数:-1.00)A.详细设计B.软件编码C.软件测试D.软件维护 解析:软件生命周期分为软件定义、软件开发及软件运行维护 3个所段。本题中,详细设计、软什编码和软件测试都属于软件开发阶段;维护是软件生命周期的最后一个阶段,也是持续时间最长,花费代价最大的一个阶段,软件工程学的一个目的就是提高软件的可维护性降低维护的代价。三、填空题(每空 2分,共 30分)(总
19、题数:10,分数:30.00)36.下面程序的运行结果为 1。 # include iostreamh void fun(int x=0,int y=0) cout X y; void main( ) fun(5); (分数:3.00)填空项 1:_ (正确答案:50)解析:本题考查的是函数的默认参数,如果一个函数中有多个参数,则默认参数应 从右至左逐个定义,所以题目中 x使用参数 5,y使用默认参数 0。 37.内联函数是通过 1 来实现的,因此内联函数是真正的函数。(分数:3.00)填空项 1:_ (正确答案:编译器)解析:本题考查内联函数的基本概念内联函数是通过编译器,只是在调用的时候,
20、像宏一样展开。38.表达式 xoperator+(yoperator+(0) )还可以写成 1。(分数:3.00)填空项 1:_ (正确答案:x+y+或 x+(y+))解析:因为 yoperator+(0)是对成员 y重载运算符,所以是成员重载,在参数表中又有一个参数,是重载后缀+,即是 x+(y+)。39.请定义一个函数名为 A,返回值为 int,没有参数的纯虚函数的定义是 1。(分数:3.00)填空项 1:_ (正确答案:virtual int A-|_|-=0;)解析:C+语言中的纯虚函数是一种特殊的函数,它没有自己的定义,只有声明,纯虚函数与虚函数声明的不同就在于在函数后面加上了“=0
21、”。40.在 C+语言中每个类都有一个 1 指针,该指针指向正在调用成员函数的对象。(分数:3.00)填空项 1:_ (正确答案:this)解析:C+语言中 this指针是类自带的一个指针,它指向正在调用成员函数的对象。41.假设 int a=1,b=2;则表达式 a+-b的值为 1。(分数:3.00)填空项 1:_ (正确答案:2)解析:因为运算符+和-都是右结合的且优先级高于双目运算符+,所以上式的 运算顺序为先 a+,-b,再 a+b,最后 a自加 1。 42. 1是实现 C+语言编译时多态性的机制, 2 是实现 C+语言运行时多态性的机制。 (分数:3.00)填空项 1:_ (正确答案
22、:静态联编或静态绑定)解析:C+语言编泽时多态性的机制是静态绑定,实现 C+语言运行时多态性的机制是动态绑定。43. 1是一系列相关函数的模型或样板,这些函数的 2 形式相同,只是所针对的 3 不同。(分数:3.00)填空项 1:_ (正确答案:函数模板)解析:本题考查 C+中函数模板的定义。函数模板是一系列相关函数的模型或样板,这些函数的源代码形式相同,只是所针对的数据类型不问。注意:声明一个函数的模板格式是:template 模板形参表声明 函数声明 44.以下程序运行后的输出结果是 1。 #includeiostreamh void fun(int x,int y) x=x+y;y=x-
23、y;x=x-y; cout x “,“ y “ ,“; void main2 int x=2,y=3;fun(x,y); cout x “,“ y endl; (分数:3.00)填空项 1:_ (正确答案:3,2,2,3)解析:main 函数和 fun函数中的变量 x和 y都是局部变量,它们各自独立,在本题 fun 函数中:接入实参的值传递:x=2,y=3,执行:x=x+y 后,x=5,y=3,执行:x=x-y 后,x=5,y=3,执行:y=x-y 后,x=3,y=2。所以,第一次执行 cout显示结果是 3和 2返回到 main函数中,输出 main函数中的 x和 y的值 2,3。45.假设
24、 int a=1,b=2;,则表达式(+a/b)*b-的值为 1。(分数:3.00)填空项 1:_ (正确答案:2)解析:运算符+的优先级高于双目运算符/,所以括号中的运算为 2/2,最后的结果为 2/2*2。46.数据库保护分为:安全性控制、 1、并发性控制和数据的恢复。(分数:-1.00)填空项 1:_ (正确答案:完整性控制)解析:安全性控制:防止未经授权的用户有意或无意存取数据库巾的数据,以免数据被泄露、更改或破坏;完整性控制:保证数据库中数据及语义的正确性和有效性,防止任何对数据造成错误的操作;并发控制:正确处理好多用户、多任务环境下的并发操作,防止错误发生;恢复:当数据库被破坏或数
25、据不正确时,使数据库能恢复到正确的状态。47.实体之间的联系可以归结为一对一联系、一对多(或多对多)的联系与多对多联系。如果一个学校有许多教师,而一个教师只归属于一个学校,则实体集学校与实体集教师之间的联系属于 1 的联系。(分数:-1.00)填空项 1:_ (正确答案:一对多(或 1:N))解析:48.在关系模型中,把数据看成一个二维表,每一个二维表称为一个 1。(分数:-1.00)填空项 1:_ (正确答案:关系)解析:在关系模型中,把数据看成一个二维表,每一个二维表称为一个关系。表中的每一列称为一个属性,相当于记录中的一个数据项,对属性的命名称为属性名;表中的一行称为一个元组,相当于记录值。 49.子程序通常分为两类: 1 和函数,前者是命令的抽象,后者是为了求值。(分数:-1.00)填空项 1:_ (正确答案:过程)解析:当程序之间发生调用关系时,调用命令所在的代码段被称为主程序,被调用的代码段被称为子程序。子程序是对功能的抽象,可分为过程和函数两类,两者的区别是函数是通过函数名来返回值的,而过程只能通过形式参数或对全局变量进行修改以返回值。50.软件开发环境是全面支持软件开发全过程的 1 集合。(分数:-1.00)填空项 1:_ (正确答案:软件工具)解析: