二级C语言知识总结及错题笔记(适合查缺补漏)_第1页
二级C语言知识总结及错题笔记(适合查缺补漏)_第2页
二级C语言知识总结及错题笔记(适合查缺补漏)_第3页
二级C语言知识总结及错题笔记(适合查缺补漏)_第4页
二级C语言知识总结及错题笔记(适合查缺补漏)_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、公共基础部分 HYPERLINK l _top top(1)链表不具有的特点是相关知识: HYPERLINK l randomaccess 随机访问与顺序访问的区别A)不必事先估计存储空间B)可随机访问任一元素C)插入删除不需要移动元素D)所需空间与线性表长度成正比解析: 链表采用的是链式存储结构,它克服了顺序存储结构的缺点:它的结点空间可以动态申请和释放;它的数据元素的逻辑次序靠结点的指针来指示,不需要移动数据元素。但是链式存储结构也有不足之处: 每个结点中的指针域需额外占用存储空间; 链式存储结构是一种非随机存储结构。C(2)已知二叉树后序遍历序列是dabec,中序遍历序列是debac,它

2、的前序遍历序列是EA)acbedB)decabBDC)deabcAD)cedba解析: 依据后序遍历序列可确定根结点为c;再依据中序遍历序列可知其左子树由deba构成,右子树为空;又由左子树的后序遍历序列可知其根结点为e,由中序遍历序列可知其左子树为d,右子树由ba构成,如上图所示。求得该二叉树的前序遍历序列为选项D)。 (3)下列有关数据库的描述,正确的是A)数据处理是将信息转化为数据的过程B)数据的物理独立性是指当数据的逻辑结构改变时,数据的存储结构不变C)关系中的每一列称为 HYPERLINK l tuple 元组,一个元组就是一个字段D)如果一个关系中的属性或属性组并非该关系的关键字,

3、但它是另一个关系的关键字,则称其为本关系的外关键字解析: 数据处理是指将数据转换成信息的过程,故选项A)叙述错误;数据的物理独立性是指数据的物理结构的改变,不会影响数据库的逻辑结构,故选项B)叙述错误;关系中的行称为元组,对应存储文件中的记录,关系中的列称为属性,对应存储文件中的字段,故选项C)叙述错误。(4)软件设计包括软件的结构、数据接口和过程设计,其中软件的过程设计是指A)模块间的关系B)系统结构部件转换成软件的过程描述C)软件层次结构D)软件开发过程解析: 软件设计包括软件结构设计、数据设计、接口设计和过程设计。其中结构设计是定义软件系统各主要部件之间的关系;数据设计是将分析时创建的模

4、型转化为数据结构的定义;接口设计是描述软件内部、软件和操作系统之间及软件与人之间如何通信;过程设计则是把系统结构部件转换成软件的过程性描述。(5)检查软件产品是否符合需求定义的过程称为A)确认测试B)集成测试C)验证测试D)验收测试解析: 确认测试的任务是验证软件的功能和性能,以及其他特性是否满足需求规格说明定的各种需求;集成测试的主要目的是发现与接口有关的错误。(6)数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是A)控制流B)加工C)数据存储D)源和潭解析: 数据流图包括4个方面,即加工(转换)(输入数据经加工变换产生输出

5、)、数据流(沿箭头方向传送数据的通道,一般在旁边标注数据流名)、存储文件(数据源)(表示处理过程中存放各种数据的文件)、源和潭(表示系统和环境的接口,属系统之外的实体)。不包括选项中的控制流。逻辑设计阶段(7)在数据库设计中,将E-R图转换成关系数据模型的过程属于逻辑模式规范化及调整E-R图向关系模式转换A)需求分析阶段B)逻辑设计阶段实现规范化和RDBMS,以及关系视图设计C)概念设计阶段D)物理设计阶段解析: E-R模型即实体-联系模型,是将现实世界的要求转化成实体、联系、属性等几个基本概念,以及它们之间的两种联接关系。数据库逻辑设计阶段包括以下几个过程:从E-R图向关系模式转换,逻辑模式

6、规范化及调整、实现规范化和RDBMS,以及关系视图设计。(8)一个类可以从直接或间接的祖先中继承所有属性和方法。采用这个方法提高了软件的可重用性 。解析: 本题考查了继承的优点:相似的对象可以共享程序代码和数据结构,从而大大减少了程序中的冗余,提高软件的可重用性。(9)软件工程研究的内容主要包括: 软件开发技术和软件工程管理。解析: 基于软件工程的目标,软件工程的理论和技术性研究的内容主要包括:软件开发技术和软件工程管理。软件开发技术包括:软件开发方法学、开发过程、开发工具和软件工程环境,其主体内容是软件开发方法学。软件工程管理包括:软件管理学、软件工程经济学,以及软件心理学等内容。(10)关

7、系操作的特点是集合操作。解析: 在关系操作中,所有操作对象与操作结果都是关系。而关系定义为元数相同的元组的集合。因此,关系操作的特点是集合操作。(11)在树形结构中,树根结点没有 前件 。解析: 在树形结构中,每一个结点只有一个前件,称为父结点,没有前件的结点只有一个,称为树的根结点;每一个结点可以有多个后件,它们都称为该结点的子结点。没有后件的结点称为叶子结点。(12)Jackson结构化程序设计方法是英国的M.Jackson提出的,它是一种面向数据结构 的设计方法。解析: 结构化分析方法主要包括:面向数据流的结构化分析方法(SA-Structured analysis),面向数据结构的Ja

8、ckson方法(JSD-Jackson system development method)和面向数据结构的结构化数据系统开发方法(DSSD-Data structured system development method)。(13)软件设计模块化的目的是 降低复杂性。解析: 模块化是指解决一个复杂问题时自顶向下逐层把软件系统划分成若干模块的过程,由此分解来降低复杂性。(14)数据模型按不同应用层次分成3种类型,它们是概念数据模型、逻辑数据模型和物理数据模型。解析:数据模型按不同的应用层次分成3种类型,它们是概念数据模型(conceptual data model)、逻辑数据模型(logic

9、 data model)、物理数据模型(physical data model)。(15)以下不属于对象的基本特点的是A)分类性B)多态性C)继承性D)封装性解析: 对象有如下一些基本特点,即标识惟一性、分类性、多态性、封装性和模块独立性。而类具有继承性。(16)下面不属于软件设计原则的是A)抽象B)模块化C)自底向上D)信息隐蔽解析: 软件设计遵循软件工程的基本目标和原则,建立了适用于在软件设计中应该遵循的基本原理和与软件设计有关的概念,它们是抽象、模块化、信息隐蔽和数据独立性。自底向上是集成测试中增量测试的一种。(17)开发大型软件时,产生困难的根本原因是A)大系统的复杂性B)人员知识不足

10、C)客观世界千变万化D)时间紧、任务重解析: 软件的显著特点是规模庞大,复杂度超线性增长,在开发大型软件时,要保证高质量,极端复杂困难,不仅涉及技术问题,更重要的是必须要有严格而科学的管理。(18)下列SQL语句中,用于修改表结构的是 (相关知识:SQL(Structured Query Language)结构化查询语言)A)ALTERB)CREATEC)UPDATED)INSERT解析: SQL语句中凡创建都用CREATE,删除都用DROP,改变用ALTER,再跟类型和名字,附加子句。(19)关系模型允许定义3类数据约束,下列不属于数据约束的是A)实体完整性约束B)参照完整性约束C)域完整性

11、约束D)用户自定义的完整性约束解析: 关系模型允许定义3类数据约束,它们是实体完整性约束、参照完整性约束及用户自定义的完整性约束。其中前两种完整性约束由关系数据库系统支持,对于用户自定义的完整性约束,则由关系数据库系统提供完整性约束语言,用户利用该语言给出约束条件,运行时由系统自动检查。(20)长度为n的顺序存储线性表中,当在任何位置上插入一个元素概率都相等时,插入一个元素所需移动元素的平均个数为 n/2 。解析: 在线性表的任何位置插入一个元素的概率相等,即概率为p=1/(n+1),则插入一个元素时所需移动元素的平均次数为E=1/(n+1)*(n+1)*n/2=n/2.(21)用树型结构表示

12、实体类型及实体间联系的数据模型称为 层次模型。解析: 用树型结构表示实体类型及实体间联系的数据模型称为层次模型,用有向图结构表示实体类型及实体间联系的数据模型称为网状模型,用二维表格结构表示实体及其联系的数据模型称为关系模型。(22)数据流图的类型有 变换型和事务型。解析: 典型的数据流类型有两种:变换型和事务型。变换型是指信息沿输入通路进入系统,同时由外部形式变换成内部形式,进入系统的信息通过变换中心,经加工处理以后再沿输出通路变换成外部形式离开软件系统;在很多软件应用中,存在某种作业数据流,它可以引发一个或多个处理,这些处理能够完成该作业要求的功能,这种数据流就叫做事务。(23)当数据的物

13、理结构(存储结构、存取方式等)改变时,不影响数据库的逻辑结构,从而不致引起应用程序的变化,这是指数据的 物理独立性 。解析: 数据独立性是数据与程序间的互不依赖性,即数据库中数据独立于应用程序而不依赖于应用程序。也就是说,数据的逻辑结构、存储结构与存取方式的改变不会影响应用程序。数据独立性一般分为物理独立性与逻辑独立性两级。(24)在下列几种排序方法中,要求内存量最大的是A)插入排序B)选择排序 C)快速排序 D)归并排序数据库系统【解题要点】快速排序的基本思想是,通过一趟排序将待排序记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,再分别对这两部分记录继续进行排序,以

14、达到整个序列有序;插入排序的基本操作是指将无序序列中的各元素依次插入到已经有序的线性表中,从而得到一个新的序列;选择排序的基本思想是:扫描整个线性表,从中选出最小的元素,将它交换到表的最前面(这是它应有的位置),然后对剩下的子表采用同样的方法,直到表空为止;归并排序是将两个或两个以上的有序表组合成一个新的有序表。数据库管理系统数据库(25)下列叙述中,不属于数据库系统的是硬件和软件数据库管理员A)数据库B)数据库管理系统C)数据库管理员D)数据库应用系统【解题要点】数据库系统(Database System,简称DBS)由如下几部分组成,即数据库、数据库管理系统、数据库管理员、硬件和软件。(2

15、6)视图设计一般有3种设计次序,下列不属于视图设计的是A)自顶向下B)由外向内C)由内向外D)自底向上【解题要点】视图设计一般有3种设计次序,它们分别是自顶向下、自底向上和由内向外,它们又为视图设计提供了具体的操作方法,设计者可根据实际情况灵活掌握,可以单独使用也可混合使用。(27)有字符串如下,n407as1xabc,则字符串的长度为A)6B)7C)8D)9 解析: 正确区分转义符号,n为换行符,为反斜杠字符,ddd三位八进制数代表的一个ASCII字符,代表双引号,xhh为两位十六进制数代表的一个ASCII字符。“n407as1xabc”中的n, , 407, , xab都只占有一个字符。(

16、28)可以把具有相同属性的一些不同对象归类,称为对象类。【解题要点】类描述的是具有相似性质的一组对象;把具有相同属性的一些不同对象归为类,我们称之为对象类。(29)由关系数据库系统支持的完整性约束是指实体完整性 和参照完整性。【解题要点】关系的完整性约束指关系的某种约束条件,包括实体完整性、参照完整性和用户定义的完整性。其中,前两种完整性约束由关系数据库系统自动支持。(30)下列关系模型中,能使经运算后得到的新关系中属性个数多于原来关系中属性个数的是A)选择B)连接C)投影D)并【解题要点】关系代数中包括传统的集合运算和专门的关系运算。经过选择或投影运算得到的新关系的属性个数最多不会超过原关系

17、中的属性个数。经过连接运算得到的新关系最多不少于原关系中属性的个数。(31)下列叙述中,正确的是 A)用E-R图能够表示实体集间一对一的联系、一对多的联系和多对多的联系B)用E-R图只能表示实体集之间一对一的联系C)用E-R图只能表示实体集之间一对多的联系D)用E-R图表示的概念数据模型只能转换为关系数据模型【解题要点】两个实体之间的联系实际上是实体集间的函数关系,这种函数关系可以有下面几种,即一对一的联系、一对多(或多对一)的联系和多对多的联系;概念模型便于向各种模型转换。由于概念模型不依赖于具体的数据库管理系统,因此,容易向关系模型、网状模型和层次模型等各种模型转换。(32)“年龄在182

18、5之间”这种约束是属于数据库当中的A)原子性措施B)一致性措施C)完整性措施D)安全性措施【解题要点】数据库的完整性是指数据的正确性和相容性(如学生的学号必须惟一,性别只能是女或男等),数据库是否具备完整性关系到数据库系统能否真实反映现实世界,因此维护数据库的完整性是非常重要的。(33)已知int a,b;double c;则以下语句中错误的函数调用是A)scanf(%d,%x,%lf,&a,&b,&c);B)scanf(%d,%d,%le,&a,&b,&c);C)scanf(%o,%x,%o,&a,&b);D)scanf(%d,%o,%e,&a,&b,&c);解析: 格式字符“f”以带小数点

19、的形式或指数形式输入单精度数,格式字符“lf”以带小数点的形式或指数形式输入双精度数,格式字符“e”和“le”与格式字符“f”和“lf”所表示的含义相同。选项D)是双精度型,输入应该用格式字符“le”。若格式说明的个数少于输入项的个数时,scanf函数结束输入,多余的数据项并没有从终端接受数据;若格式说明的个数多于输入项的个数时,scanf函数也同样结束,没有接受输入的数据。(34)下列关于指针变量赋空值的说法错误的是A)当赋空值的时候,变量指向地址为0的存储单元B)赋值语句可以表达为变量名=0;C)赋值语句可以表达为变量名=0;D)一个指针变量可以被赋空值解析: 除了给指针变量赋地址值外,还

20、可以给指针变量赋NULL值,由于NULL的代码值为0,所以,指针变量名=NULL;等同于变量名=0;或变量名=0;,指针变量并不是指向一个地址为0的存储单元,而是具有一个空值。注意:指针变量赋地址值的方式可以是通过求地址运算获得地址值、通过指针变量获得和通过标准函数获得地址值。(35)已知#define M 2;的宏定义,执行语句k=M*5;后,k的值是A)10B)5C)2D)以上答案都不对解析: 预处理命令在每一行的末尾不能加分号(;),用来区分C语句、定义和说明语句。本题加了分号,这样当宏替换的时候就会把2和分号一起替换到表达式中,这个时候就会产生错误。注意:C语言的预处理命令的语法与C语

21、言中其他部分的语法无关;它们可以根据需要出现在程序的任何一行的开始部位,其作用一直持续到源文件的尾部。(36)封装是一种信息隐蔽技术,目的在于将对象的使用者和对象的设计者分开。【解题要点】面向对象技术中包括以下几个基本概念,即对象、类、方法、消息、继承和封装,其中封装是一种信息隐蔽技术,目的在于将对象的使用者对象的和设计者分开。(37)关系运算是从二维表列的方向进行的运算。【解题要点】在关系模型的数据语言中,一般除了运用常规的集合运算,(并、交、差、笛卡尔积等)外,还定义了一些专门的关系运算,如投影、选择、连接等。前者是将关系(即二维表)看成是元组的集合,这些运算主要是从二维表的行的方向来进行

22、的;后者主要是从二维表的列的方向来进行的运算。两者统称为关系代数。(38)阅读下面程序,则在执行时候的输出为 2,2 。 #include stdio.hmain()int x=1,y=2,z=0;if(x=2)z=x,x=y,y=z;/注意这里是赋值号printf(%d,%dn,x,y);解析: if语句的执行过程为:首先计算紧跟在if后面一对圆括号中的表达式,如果表达式的值为非零,则执行其后的if子句,然后去执行if语句后的下一个语句,如果表达式为零,则跳过if子句直接执行if语句后的下一个语句,if(x=2)的值为真,即x的值为2。(39)语句printf(%dn,H-0+64);的执行

23、结果为88。解析:由下面ASCII码得出:H=72 0=48 所以结果为:72-48+64=88。常用的几个字符ASCII码:0=48A=65a=97(40)栈通常采用的两种存储结构是A)线性存储结构和链表存储结构B)散列方式和索引方式C)链表存储结构和数组D)线性存储结构和非线性存储结构 【解题要点】和线性表类似,栈也有两种存储方法,一是顺序栈,二是链式栈。栈的顺序存储结构是利用一组地址连续的存储单元一次存储自栈底到栈顶的数据元素,同时附设指针top指示栈顶元素的位置,由于栈的操作是线性表操作的特例,相对而言,链式栈的操作更易于实现。(41)在结构化设计方法中,生成的结构图(SC)中,带有箭

24、头的连线表示A)模块之间的调用关系B)程序的组成成分C)控制程序的执行顺序D)数据的流向【解题要点】常用的软件结构设计工具是结构图(SCStructure Chart),也称程序结构图。其中,矩形内用于注明模块的功能和名字;箭头表示模块间的调用关系,带实心圆的箭头表示传递的是控制信息,带空心圆的箭头表示传递的是数据。(42)下列选项中,不属于模块间耦合的是A)数据耦合B)同构耦合C)异构耦合D)公用耦合【解题要点】模块之间的耦合程度反映了模块的独立性,也反映了系统分解后的复杂程度。按照耦合程度从弱到强,可以将其分成5级,分别是:数据耦合、同构耦合、控制耦合、公用耦合和内容耦合。选项C),没有这

25、种耦合方式。(43)一个关系中属性个数为1时,称此关系为A)对应关系B)单一关系C)一元关系D)二元关系【解题要点】在关系模型数据库中,基本结构是二维表,这种二维表称为关系。关系的列称为属性,一个具有N个属性的关系称为N元关系。(44)相对于数据库系统,文件系统的主要缺陷有数据关联差、数据不一致性和A)可重用性差B)安全性差C)非持久性D)冗余性 【解题要点】文件系统所管理的数据文件基本上是分散的、相互独立的,因此相对于数据库系统,以此为基础的数据处理存在3个缺点,数据冗余大、数据的不一致性、程序与数据的相互依赖(简称为数据依赖)。(45)关于printf()函数的返回值叙述正确的是A)通常是

26、本次调用中输出字符的个数B)通常是输出的第一个数值C)通常返回布尔值真D)通常返回非零值【解题要点】printf函数的返回值通常是本次调用中输出字符的个数。(46)栈和队列通常采用的存储结构是顺序存储结构和链式存储结构 。【解题要点】栈和队列都属于线性表,它们一般采用顺序存储结构,也可以对它们采用链式存储结构。(3)软件结构是以模块为基础而组成的一种控制层次结构。【解题要点】采用模块化原理可以使软件结构清晰,不仅容易设计也容易阅读和理解,模块化使得软件容易测试和调试,因而有利于提高软件的可靠性,也有利于软件的组织管理,大型程序可由不同的程序员编写不同的模块,并且可以进一步分配技术熟练的程序员编

27、写困难的部分。(5)数据库保护分为:安全性控制、完整性控制、并发性控制和数据的恢复。【解题要点】安全性控制:防止未经授权的用户有意或无意存取数据库中的数据,以免数据被泄露、更改或破坏;完整性控制:保证数据库中数据及语义的正确性和有效性,防止任何对数据造成错误的操作;并发控制:正确处理好多用户、多任务环境下的并发操作,防止错误发生;恢复:当数据库被破坏或数据不正确时,使数据库能恢复到正确的状态。END HYPERLINK l _top top HYPERLINK l basic frontC编程部分 HYPERLINK l _top top(1)有以下程序float fun(int x,int

28、y)return(x+y);main()int a=2,b=5,c=8;printf(%3.0fn,fun(int)fun(a+c,b),a-c);程序运行后的输出结果是A)编译出错B)9C)21D)9.0解析: 本题考查函数的综合知识。首先,我们可以利用强制转换类型转换运算符将一个表达式转换成所需类型。如:(double)a是将a转换成double类型;(int)(x+y)是将x+y的值转换成整型。本题可按部就班地逐步运算:fun(int)fun(a+c,b),a-c)fun(int)fun(10,5),2-8)fun(int)15.000000,-6)fun(15,-6)9(2)若fp是指

29、向某文件的指针,且已读到文件末尾,则函数feof(fp)的返回值是A)EOFB)-1C)1D)NULL解析: EOF是指向文本文件的结束标志,NULL是打开文件错误时的返回值。feof(fp)用来判断文件是否在文件末尾,文本文件和二进制文件均可以使用此函数,如果遇到文件结束就返回1,否则返回0。(3)若有说明语句:char c=72;则变量cA)包含1个字符B)包含2个字符C)包含3个字符D)说明不合法,c的值不确定解析: C语言的字符型常量中,允许用一种特殊形式的字符常量,就是以一个“”开头的字符。其中“ddd”表示用ASCII码(八进制数)表示一个字符,本题中的char c=72即表示占一

30、个字符的变量c的ASCII码值。(4)在C语言中,引用数组元素时,其数组下标的数据类型允许是A)整型常量B)整型表达式C)整型常量或整型表达式D)任何类型的表达式解析: 在C语言中,对于数组元素下标的定义只能是整型常量或整型表达式。(5)下列程序的输出结果是Hello。maim ()char b =Hello you;b5=0;printf (%sn,b);解析: 语句b5=0;相当于语句b5=0,且0为字符串结束标志,输出时遇到0就停止输出。(6)请选出以下语句的输出结果printf(%dn,strlen(t065xffn);A)5B)14C)8D)输出项不合法,无正常输出解析: 本题考查用

31、strlen函数计算字符串长度的方法。该字符串中包含的字符是:t(跳格符)、(双引号)、065(ASCII值为八进制065,也即十进制为51的字符)、xff(ASCII值为十六进制ff,也即十进制为255的字符)、n(换行符)。(7)在16位IBM-PC机上使用C语言,若有如下定义struct data int i;char ch;double f; b;则结构变量b占用内存的字节数是A)1B)2C)7D)11解析: 结构体变量所占用内存的字节数是其所有成员所占用内存字节数之和。本题中整型变量i所占用的内存是2字节,字符型变量ch所占用的内存是1字节,双精度型变量f所占用的内存是8字节,三者相

32、加即可。(8)假定以下程序经编译和连接后生成可执行文件PROG.EXE,如果在此可执行文件所在目录的DOS提示符下键入:PROG ABCDEFGH IJKL,则输出结果为main( int argc, char *argv) while(-argc0)printf(%s,argvargc);printf(n);A)ABCDEFGB)IJHL C)ABCDEFGHIJKLD)IJKLABCDEFGH解析: 本题中,argc表示参数的个数,应为3,argv是一个指向字符串的指针数组,指针数组argv中的元素argv0指向字符串“PROG”, 元素argv1指向字符串“ABCDEFGH”,argv2

33、指向字符串“IJKL”。在while循环条件中,先进行自减运算,再执行相应的printf语句。(9)设有以下语句:char x=3,y=6,z;z=xy2;则z的二进制值是A)00010100B)00011011C)00011100D)00011000解析:按位异或运算符“”是双目运算符。其功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1。0000001100001010=00000101左移运算符“”是双目运算符。其功能把“ ”左边的运算数的各二进位全部左移若干位,由“”右边的数指定移动的位数,高位丢弃,低位补0。000001012=00010100并且“”运算符的

34、优先级高干“”。(10)C语言规定,在一个源程序中,main函数的位置A)必须在最开始B)必须在系统调用的库函数的后面C)可以任意D)必须在最后解析: 一个C程序总是从main函数开始执行的,不论main函数在整个过程中的位置如何。(11)有如下程序main() int a=2,b=-1,c=2;if(ab)if(b0)c=0;else c+;printf(%dn,c);该程序的输出结果是A)0B)1C)2D)3解析: if语句嵌套使用时,应当注意if 与else的配对关系,else总是与它上面的最近的if配对。因此,本题中先判断(a(y)?(x):(y)main() int a=5,b=2,

35、c=3,d=3,t;t=MAX(a+b,c+d)*10;printf(%dn,t);解析: 本题综合考查带参数的宏以及三目运算符的计算方法,“?”运算符是一个三目运算符,其一般形式是:?:。“?” 运算符的含义是:先求表达式1的值,如果为真,则求表达式2的值并把它作为整个表达式的值;如果表达式1的值为假,则求表达式3的值并把它作为整个表达式的值。注意,在本题中宏替换时可采用逐步求解,最终为76?7:6*10,即t=76?7:60,其值为t=7。(17)若有下面的说明和定义,则sizeof(struct aa)的值是struct aa int r1; double r2; float r3;un

36、ion uuchar u15;long u22;ua; mya;A)30B)29C)24D)22解析: 本题主要考查结构体变量和共用体变量所占存储空间大小的计算方法。结构体变量所占内存长度是各成员占的内存长度之和,每个成员分别占有自己的内存单元;共用体变量所占的内存长度等于最长的成员的长度。结构体变量aa中,成员r1占2个字节,r2占8个字节,r3占4个字节,共用体ua占8个字节,所以共占用2+8+4+8=22个字节。(18)使用结构体处理数据的场合是。 正确答案: 把不同类型的数据作为整体处理。(19)设x和y均为int型变量,且x=1,y=2,则表达式double(1+x/y)的值为1.0

37、00000。解析: 本题考查两个知识点一是x/y的值为整型即为0,二是数字1存放在double中是double类型(20)下面函数要求计算两个整数x,y之和,并通过形参返回该值,请填空。add(int x, int y,int *z)*z= x+y; 解析: 函数希望通过形参z带回结果,形参z必须是指针类型的,由于返回整型结果,所以z的说明是int * z。函数返回前必须先把结果通过形参z间接引用(写成*z)传回。(21)有如下定义,则函数fun的首部可以是#define N 5#define M 6main()doublecMN;fun(c); A)fun(double a)B)fun(do

38、uble aM)C)fun(double *a)D)fun(double (*a)N)解析: 本题目的函数首部可以是以下三种形式之一:fun(double (*a)N),fun(double aN),fun(double aMN)。(22)下面关于字符串的说明中,错误的是A)char a15= jft;B)char a=jft;C)char *a=:jft;D)char a=j,f,t;解析: 若是正确的赋值字符串,系统按照C语言对字符串处理规定,在字符串的末尾自动加上串结束标记0。选项D)是数组的字符赋值,并不是字符串的赋值,末尾不会被系统自动加上结束标记,所以是错误的。(23)C语言结构体

39、类型变量在程序运行期间A)TC环境在内存中仅仅开辟一个存放结构体变量地址的单元B)所有的成员一直驻留在内存中C)只有最开始的成员驻留在内存中D)部分成员驻留在内存中【解题要点】结构体类型的变量在程序运行期间要做为一个整体占用连续的内存单元(49)有下列运算符:,&, |,则运算的优先顺序是A),&, |,B),&, |,C), &,|D),&, |【解题要点】位运算符由高到低的优先级顺序依次为:,&,|。优先级运算符(1) () - .(2) + - & * ! sizeof (type) - (3)* / %(4)+ -(5)(6) =(7)= !=(8)&(9)(10)|(11)&(12)

40、|(13)? ;(14)Op=(15),(11)下列程序的输出结果是1.300000,1.300000。 #include main() float a=-1.3;b=1.3; printf(%f,%f,fabs(a),fabs(b);【解题要点】本题是求浮点数的绝对值,double、float都是精度为小数点后六位。(14)现有如下程序段,则程序段的输出结果为 0 。#include stdio.hint fun()static int k;return k;main()int m;m=fun();printf(%dn,m);【解题要点】在整个程序运行期间,静态局部变量在内存的静态存储区中占

41、据着永久性的存储单元。即使退出函数以后,下次再进入函数时,静态局部变量仍使用原来的存储单元,如未赋初值,则系统会自动赋值为0。(15)现有如下定义:struct aaint a;float b;char c;*p;现需用malloc函数动态的申请一个struct aa类型大小的空间(由p指向),则定义的语句为:p=(struct aa *)malloc(sizeof(struct aa); 。【解题要点】ANSI C标准规定malloc函数的返回值类型为void *,函数的调用形式为:malloc(size)要求size的类型为unsigned int。由于返回类型为void *,所以在调用函

42、数时,必须利用强制转换将其转换为所需要的类型。(17)当调函数frend从磁盘文件中读取数据时,若函数数的返回时为5,则表明读取的数据项为5;若函数的返回值为0,则表明文件结束或出错。【解题要点】fread函数的调用形式为fread(buffer,size,cout,fp);其中buffer是数据块的指针,size表示每个数据块的字节数。count用来指定每读、写一次,输入输出数据块的个数(每个数据块有size个字节)。fp是文件的指针。END HYPERLINK l _top top HYPERLINK l cprogram front上机部分 HYPERLINK l _top top(1)

43、以下程序的功能是:删去一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。例如,若一维数组中的数据是:2 2 2 3 4 4 5 6 6 6 6 7 7 8 9 9 10 10 10删除后,数组中的内容应该是:2 3 4 5 6 7 8 9 10。请填空。#include #define N 80int fun(int a, int n) int i,j=1;for(i=1;in;i+)if(aj-1!=ai)aj+=ai;return j;main() int aN= 2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,1

44、0,10, i, n=19;printf(The original data :n);for(i=0; in; i+)printf(%3d,ai);n=fun(a,n);printf(nThe data after deleted :n);for(i=0; in; i+)printf(%3d,ai); printf(nn);解析: 本题程序的流程是:让i,j都从1开始其中j用于控制删除后剩下的数中的下标,i用于搜索原数组中的元素。j始终是新数组已有元素中最后一个元素的下一个元素的下标,所以if()中的条件是aj-1!=ai,其中aj-1就是新数组中的最后一个元素,若条件成立则表示出现了不同的值

45、,所以ai要留下到新数组中。注本题中i,j的初值都要从1开始。该算法只能用于数组已排序的题目中。(2).填空题请补充函数fun(),该函数的功能是:把从主函数中输入的字符串str2倒置后接在字符串str1后面。例如:str1=“How do”,str2=“?od uoy”,结果输出:“How do you do?”。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。试题程序:#include #include #define N 40void fun(char *str1,char *str2) int i=0,j=

46、0,k=0,n; char ch; char *p1=str1; char *p2=str2; while(*(p1+i)i+; while(*(p2+j)j+; n=j-; for(;k=j/2;k+,j-)ch=*(p2+k);*(p2+k)=*(p2+j);*(p2+j)=ch; *(p2+n)=0; for(;*p2;i+)*(p1+i)=*p2+; *(p1+i)=0;main() char str1N,str2N; int m,n,k; clrscr(); printf(*Input the string str1 & str2 *n); printf(nstr1:); gets(

47、str1); printf(nstr2:); gets(str2); printf(* The string str1 & str2 *n); puts(str1); puts(str2); fun(str1,str2); printf(* The new string *n); puts(str1);【解析】填空1:while循环执行后,变量j中保存了字符串str2的长度,而后面的for循环是将字符串str2倒置,即将第一个字符与最后一个字符对调,第二个字符与倒数第二个字符对调,如此循环直到中间的字符。第一次执行循环时,*(p2+j)指向最后一个字符,所以j要减1,变为相应的下标,并将未减1

48、之前的数赋给n。填空2:将字符串str2倒置后,在字符串的最后要加上结束标记符0。填空3:当*p2所指的字符为0时,说明已经将倒置后的字符串str2都接在字符串str1后面了,for循环应该结束。当*p2所指的为其他字符时,for循环要继续执行。2. 改错题下列给定程序中,函数fun()的功能是:先从键盘上输入一个3行3列的矩阵的各个元素的值,然后输出主对角线元素之积。请改正函数fun()中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include int fun() int a33,mul; int i,j; mul=1; fo

49、r (i=0;i3;i+) /*found*/ for (i=0;j3;j+) /注意这里的i 不是J scanf(%d,&aij); for(i=0;i3;i+)/*found*/ mul=mul*aij; printf(Mul=%dn,mul);main() fun();4. 编程题请编写函数fun(),该函数的功能是:移动一维数组中的内容,若数组中有n个整数,要求把下标从p到n-1(pn-1)的数组元素平移到数组的前面。例如,一维数组中的原始内容为1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,p的值为6。移动后,一维数组中的内容应为7,8,9,10,10,11,

50、12,13,14,15,1,2,3,4,5,6。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include #define N 80void fun(int *w, int p, int n) int i,j,t; for(i=p;i=0;j-) /*实现循环右移*/ wj+1=wj; w0=t; main() int aN=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15; int i, p, n=15; printf(The original data:n); for(i=0;in;

51、i+) printf(%3d,ai); printf(nnEnter p: ); scanf(%d,&p); fun(a,p,n); printf(nThe data after moving:n); for(i=0;in;i+) printf(%3d,ai); printf(nn);经典(4)下面程序段的功能是:从键盘上输入两个字符串,对两个字符串分别排序;然后将它们合并,合并后的字符串按ASCII码值从小到大排序,并删去相同的字符。请填空。#include stdio.hfun(char *x,char *y,char *z)char t,*p;p=z;while(*x!=0&*y!=0)

52、 t=*x*y?*x+:*y*x?*y+:(*x+,*y+);if(*p=0)*p=t;else if(t!=*p)*+p=t;if(*x!=0)while(*x!=0)if(*x!=*p)*+p=*x+;else x+;if(*y!=0)while(*y!=0)if(*y!=*p)*+p=*y+;else y+;*+p= 0 ;sort(char *s) int i,j,k;char t,*p;p=s;for(k=0;*p!=0;k+)p+;for(i=0;ik-1;i+)for(j=i+1;jsj) t=si;si=sj;sj=t;main() char s1100,s2100,s3200

53、;scanf(%s,s1);scanf(%s,s2);sort(s1);sort(s2);s30=0;fun(s1,s2,s3);printf(%sn,s3);END HYPERLINK l _top top HYPERLINK l computer front知识归纳 HYPERLINK l _top topfseek函数的调用形式为:fseek(文件指针,位移量,起始点)“起始点”用0,1或2代替,0代表“文件开始”,1为“当前位置”,2为“文件末尾”。“位移量”指以“起始点”为基点,向前移动的字节数。ANSI C和大多数C版本要求位移量是long型数据。这样当文件的长度大于64k时不致出

54、现问题。ANSI C标准规定在数字的末尾加一个字母L,就表示long型。fscanf的格式为(文件指针,格式控制字符串,输入项表)。调用函数时,必须要注意以下语法:函数名必须与所调用的函数名字完全一致;实参的个数与形参的个数一致;函数必须先定义,后调用。如果被调用的函数的返回值为int型或char型,则被调用函数的定义也可以放在调用的位置之后。如果在函数调用之前没有对函数作声明,则编译系统会把第一次遇到的该函数形式作为函数的声明,并将函数类型默认为int型。C语言把文件看成是一个字符(字节)的序列,即由一个一个字符(字节)的数据顺序组成。根据数据的组织形式,可分为ASCII文件和二进制文件。A

55、SCII文件又称文本文件,它的每一个字节放一个ASCII代码,代表一个字符。二进制文件是把内存中的数据按其在内存中的存储形式原样输出到磁盘上存放。算法是指解题方案的准确而完整的描述。它有4个基本特征,分别是可行性、确定性、有穷性和拥有足够的情报。 对于长度为n的有序线性表,在最坏情况下,二分查找只需要比较log2n次,而顺序查找需要比较n次。 将属性、操作相似的对象归为类,也就是说,类是具有共同属性、共同方法的对象的集合。 数据库管理系统是位于用户与操作系统之间的一层系统管理软件,是一种系统软件,是用户与数据库之间的一个标准接口。其总是基于某种数据模型,可以分为层次模型、网状模型和关系模型。其

56、实随机访问与顺序访问的起源是设备的分类. 在以前的系统中, 外部存储设备主要是磁带,磁盘,光盘三种. 当然, 现在随着存储技术的发展, 出现像Flash, MMC卡芯片存储设备. 磁带是顺序存储设备. 也就是意味读取数据时, 总是从前开始读起, 直到找到该数据为止, 如: 一个磁带有100个文件, 我找第50个文件, 那么磁带机就会从第磁带的第一个数据块开始找, 直到找到第50个文件为止. 磁盘,光盘都属于随机存储设备. 他们找文件时,是通过文件系统记住的文件所在磁盘或光盘的物理位置来读取, 所以, 磁盘和光盘检索文件很快, 而磁带通常会比较慢.元组(Tuple) 笛卡尔积中每一个元素(d1,

57、d2,dn)叫作一个n元组(n-tuple)或简称元组。 元组是关系数据库中的基本概念,关系是一张表,表中的每行就是一个元组,每列就是一个属性。软件设计包括软件的结构、数据接口和过程设计.视图设计是数据库设计的一个阶段,在数据库的概念设计过程中,先选择局部应用,获得一分e-r图;再进行视图设计,其主要有三种设计次序,一、自顶向下。即从抽象级别高的且普遍的对象开始逐步细化、具体化与特殊化。二、由底向上。即由具体的对象开始,逐步抽象,普遍化与一般化,最后形成一个完整的视图设计。三、由内向外。即从最基本的与最明显的对象入手,逐步扩充至非基本、不明显的其他对象。fread函数的调用形式为fread(b

58、uffer,size,cout,fp);其中buffer是数据块的指针,size表示每个数据块的字节数。count用来指定每读、写一次,输入输出数据块的个数(每个数据块有size个字节)。fp是文件的指针。#include int fun(int n)int a10000, i,j, count=0; for (i=2; i=n; i+) ai = i; i = 2; while (in) /*found*/ for (j=ai*2; j=n; j+=ai) aj = 0; i+;/*found*/ while (ai=0) i+; printf(nThe prime number betwe

59、en 2 to %dn, n); for (i=2; i=n; i+)/*found*/ if (ai!=0) count+; printf(count%15?%5d: n%5d,ai); return count;main()int n=20, r; r = fun(n); printf(nThe number of prime is : %dn, r);#include #include void fun(int a,int *b,int *c)int i,j,d,y; for(i=3;i=a/2;i=i+2) /*found*/ y=1; for(j=2;j=sqrt(double)i)

60、;j+) if(i%j=0) y=0; if(y=1) /*found*/ d=a-i; for(j=2;j=sqrt(double)d);j+) if(d%j=0) y=0; if(y=1) *b=i; *c=d; main()int a,b,c; do printf(nInput a: ); scanf(%d,&a); while(a%2); fun(a,&b,&c); printf(nn%d = %d + %dn,a,b,c);#include double fun(int n)int i;double sum=0.0;for(i=1; i=n; i+) if(i%5=0|i%9=0)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论