参考答案及分析
一、选择题
(1)A
解析: 数据结构是研究数据元素及其之间的相互关系和数据运算的一门学科,它包含3个方面的内容,即数据的逻辑结构、存储结构和数据的运算。
(2)D
解析: 串的长度指的是串中的字符的个数,且其字符个数可以为零。
(3)B
解析: 计算机算法是指解题方案的准确而完整的描述,它有以下几个基本特征:可行性、确定性、有穷性和拥有足够的情报。
(4)C
解析: 对象有如下一些基本特点,即标识惟一性、分类性、多态性、封装性和模块独立性。
(5)B
解析: 软件工程概念的出现源自软件危机。所谓软件危机是泛指在计算机软件的开发和维护过程中所遇到的一系列严重问题。总之,可以将软件危机归结为成本、质量、生产率等问题。
(6)C
解析: 软件设计遵循软件工程的基本目标和原则,建立了适用于在软件设计中应该遵循的基本原理和与软件设计有关的概念,它们是抽象、模块化、信息隐蔽和数据独立性。自底向上是集成测试中增量测试的一种。
(7)A
解析: 软件的显著特点是规模庞大,复杂度超线性增长,在开发大型软件时,要保证高质量,极端复杂困难,不仅涉及技术问题,更重要的是必须要有严格而科学的管理。
(8)A
解析: SQL语句中凡创建都用CREATE,删除都用DROP,改变用ALTER,再跟类型和名字,附加子句。
(9)B
解析: 数据库系统(Database System,简称DBS)包括数据库(Database,简称DB)和数据库管理系统(Database Management System,简称DBMS)。
(10)C
解析: 关系模型允许定义3类数据约束,它们是实体完整性约束、参照完整性约束及用户自定义的完整性约束。其中前两种完整性约束由关系数据库系统支持,对于用户自定义的完整性约束,则由关系数据库系统提供完整性约束语言,用户利用该语言给出约束条件,运行时由系统自动检查。
(11)A
解析: C++语言中预处理语句的开始符号是#。
(12)C
解析: 每个C++程序中都要有且仅有一个主函数,该函数是程序的入口,而语句、预处理命令和函数及类在程序中都可以有多个。
(13)B
解析: 该函数用于数据类型和变量。注意:sizeof操作符不能用于函数,不完全类型或位字段。不完全类型指具有未知存储大小的数据类型,如未知存储大小的数组类型、void类型等。
(14)A
解析: 当自加运算符做后缀表达式的时候,表达式的值不变,只有变量的值增1,所以表达式(x++*2/3)相当于(11*2/3)取整后为7。
(15)C
解析: 本题中,首先将0赋给k,表达式变为0,跳出循环,没有执行循环体语句。解答本题的关键是掌握while语句。
(16)B
解析: 本题中,若要保证for表达式能正常进行,首先要保证第2个表达式的条件判断值应该为真,从而保证循环进行。
(17)B
解析: 在一维数组中要注意的是作为下标表达式的常量表达式的值必须是大于等于0,并且小于自身,本题中选项B)的下标表达式的值超过了自身。
(18)B
解析: 在C++语言的数组元素的引用方法,如数组元素a[0],可以用表达式*(p+0),即*p来引用,对于数组元素a[1],可以用表达式*(p+1)来引用,在这里,p+1的值就是数组元素a[1]的地址,对此地址使用"间接访问运算符":*(p+1)就代表存储单元a[1],注意:一对圆括号不可少。同样,对于数组元素a[2],则可以用表达式*(p+2)来引用…,对于数组元素a[9],可以用表达式*(p+9)来引用。因此,当指针变量p指向a数组的起始地址时,若0≤i<10,则数组元素a [i]可以用*(p+i)。
(19)A
解析: 本题的函数是根据a和b的值来给c赋值。
(20)A
解析: 形参的值的改变,不能影响实参的值。选项B)函数只能嵌套调用,不能嵌套定义;函数要是有返回值其类型必须确定;函数也可无返回值,用void 表示。
(21)D
解析: C++类中的静态成员变量是该类中所有对象所共有的,它能够被类中的任何函数调用,所以选项A),B),C)是错误的。而类的静态数据成员是必须要进行初始化才能使用的。
(22)C
解析: C++语言中拷贝构造函数的参数一般是某个对象的引用名。
(23)C
解析: 基类的私有成员在派生类中是隐藏的,只能在基类内部访问,派生类中的成员不能访问基类中的私有成员,可以访问基类中的公有和受保护的成员。
(24)D
解析: 在类A中有geta()函数,在类B中也有geta()函数,类C继承了类A和类B,这样就产生了二义性,所以程序会出错。
(25)D
解析: C++中只能用成员函数重载的运算符是=,[],(),->,只能用友元函数重载的是<<,>>。
(26)B
解析: 在C++程序中的typename是都可以替换为class 的,但class不能都替换为typename。
(27)C
解析: C++语言中判断文件操作成功主要有两个函数good()和fail(),其中if(文件流名.good())和if(!文件流名.fail()),还有if(文件流名)都可以表示判断文件操作是否成功。
(28)A
解析: 题中fun函数进行了递归调用,第1次调用:fun(3)n=3 s=3-fun(2),第二次调用时:fun(2)n=2 s=2,返回第一次调用后,s=3-2=1。
(29)C
解析: 在C++语言里,main函数也可以有参数,例如:main(int arvc,char *argv),argc是指向字符串的指针数组,而选项C)是第二个形参是指向字符变量的指针,是错误的。
(30)C
解析: 该题主要要搞清楚以下几点:
①定义了一个指针数组char *p[2]后,程序中第一个循环for(i=0;i<2;i++)p[i]=ch[i];的作用是使指针数组的p[0]元素(它本身是一个指针)指向了二维数组ch的第一行字符串,并使指针数组的p[1]元素指向了二维数组ch的第二行字符串,这样,就使指针数组p和二维数组ch建立起了一种对应关系,以后对二维数组ch的某个元素的引用就有两种等价的形式:ch[i][j]或p[i][j]。② 对二维数组ch的初始化,使其第一行ch[0]中存入了字符串"6937",第二行ch[1]中的内容为字符串"8254"。③ 程序中第二个循环中的循环体s=s*10+p[i][j]-′0′;的功能是这样的,每执行一次,将s中的值乘以10(也即,将s中的数值整体向左移动一位,并在空出来的个位上添一个0),再将当前p[i][j]中的字符量转换为相应的数字,然后把这个数字加到s的个位上。④ 注意到内层循环的循环条件p[i][j]>′\0′是指p[i][j]中的字符只要不是字符串结束标志′\0′就继续循环,语句j+=2;是使下标j每次增加2,也即一个隔一个地从p[i]所指向的字符串中取出字符。经过上述解析后,不难看出,该程序首先从p[0]所指向的字符串"6937"中一个隔一个地取出字符,分别是"6"和"3",然后从p[1]所指向的字符串"8254"中一个隔一个地取出字符,分别是"8"和"5",同时经过转换和相加运算后,结果s中的值应该是6385。
(31)A
解析: C++语言中如果基类的成员是保护的,它被继承后在子类中该成员可能是保护的,也可能不是,主要看继承的权限是public还是protected或private的。
(32)C
解析: 左移1位,相当于乘以2,题中的x的值是一个八进制数,转换为十进制数是32,再乘以2,x的值为64。
(33)B
解析: 根据本题提出的条件可知,控制循环的表达式应该是所输入的两数互不相等,也即只有满足这一条件时,两数才能进行排序输出的操作,由此得出循环的控制表达式应该为a!=b。
(34)B
解析: 本题中,表达式将5个初值赋给a[0]至a[4],后面的部分,将自动会被依次补零处理。
(35)D
解析: 选项A)、B)和C)都不正确,因为友元关系是单项的,并且没有交换性、传递性。
二、填空题
(1)n/2
解析: 在线性表的任何位置插入一个元素的概率相等,即概率为p=1/(n+1),则插入一个元素时所需移动元素的平均次数为E=1/(n+1)n+1n=1(n-i+1)=n/2。
(2)层次模型
解析: 用树型结构表示实体类型及实体间联系的数据模型称为层次模型,用有向图结构表示实体类型及实体间联系的数据模型称为网状模型,用二维表格结构表示实体及其联系的数据模型称为关系模型。
(3)实例
解析: 将属性、操作相似的对象归为类,也就是说,类是具有共同属性、共同方法的对象的集合。所以,类是对象的抽象,对象则是其对应类的一个实例。
(4)变换型
解析: 典型的数据流类型有两种:变换型和事务型。变换型是指信息沿输入通路进入系统,同时由外部形式变换成内部形式,进入系统的信息通过变换中心,经加工处理以后再沿输出通路变换成外部形式离开软件系统;在很多软件应用中,存在某种作业数据流,它可以引发一个或多个处理,这些处理能够完成该作业要求的功能,这种数据流就叫做事务。
(5)物理独立性
解析: 数据独立性是数据与程序间的互不依赖性,即数据库中数据独立于应用程序而不依赖于应用程序。也就是说,数据的逻辑结构、存储结构与存取方式的改变不会影响应用程序。数据独立性一般分为物理独立性与逻辑独立性两级。
(6)类
解析: C++语言面向对象程序设计的基本组成单元是class,面向过程的程序设计的基本组成单元是函数。
(7)/* */
解析: C++语言程序的注释可以出现在程序中的任何地方,一个注释以"/*"开始,以"*/"为结束。
(8)2 4 6
解析: 本题考查静态局部变量的使用。用关键字static声明的局部变量为"静态局部变量",其值在函数调用结束后不消失而保留原值,即其占用的存储单元不释放,在下一次该函数调用时,该变量已有值,就是上一次函数调用结束时的值。
(9)malloc(11)`malloc(sizeof(char)*11)
解析: malloc函数的参数可以是一个具体的常数,也可以是一个表达式。在本题中,可以是malloc(11),也可以借助于sizeof运算符来表示。
(10)12
解析: 函数有一个形参num,循环前变量k置1,循环中,表达式num是取num的个位,将num的个位值累乘于k中,然后num除以10。循环直至num为0结束,这是逐一求出num十进制表示的各位数字,并累乘于变量k的循环。函数最后返回k。函数fun的功能是求整数的各位十进数字积。
(11)a=new int(b)~delete a
解析: C++中new和delete的使用有如下几种:① a = new int; delete a;② a = new int(10); delete a;③ a = new int[10]; delete[] a;。
(12)函数重载~虚函数
解析: C++中的多态性是在编译时通过函数重载和模板体现的,在运行时是通过虚函数体现的。
(13)x.operator+(operator*(y,z))
解析: C++中用成员函数重载x*y为:x. operator*(y),用友元函数重载x*y为:operator*(x,y),用成员函数重载x+y为:x. operator+(y),用友元函数重载x+y为:operator+(x,y)。
① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;
② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。