全国计算机二级C语言知识点.docx

上传人:b****8 文档编号:9868528 上传时间:2023-02-07 格式:DOCX 页数:23 大小:36.60KB
下载 相关 举报
全国计算机二级C语言知识点.docx_第1页
第1页 / 共23页
全国计算机二级C语言知识点.docx_第2页
第2页 / 共23页
全国计算机二级C语言知识点.docx_第3页
第3页 / 共23页
全国计算机二级C语言知识点.docx_第4页
第4页 / 共23页
全国计算机二级C语言知识点.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

全国计算机二级C语言知识点.docx

《全国计算机二级C语言知识点.docx》由会员分享,可在线阅读,更多相关《全国计算机二级C语言知识点.docx(23页珍藏版)》请在冰豆网上搜索。

全国计算机二级C语言知识点.docx

全国计算机二级C语言知识点

数组下标的下限是0。

全国计算机二级C语言

公共基础知识

一、数据结构与算法

1、完全二叉树是属于非线性结构,但其最佳存储方式是顺序存储方式

2、顺序存储结构中可能根节点不唯一,故可能不是线性结构

3、算法的有穷性是指,算法中的操作步骤为有限个,且每个步骤都能在有限时间内完成

4、法复杂度包括算法的时间复杂度和算法的空间复杂度。

算法设计必须考虑执行算法所需要的资源,即时间与空间复杂度

5、算法的优劣取决于算法复杂度,与程序的环境无关,当算法被编程实现之后,程序的运行受到计算机系统运行环境的限制

6、循环队列中,由于指针超过队列地址最大值时会移动到队列最小地址处,所以队头指针可以大于也可以小于队尾指针

7、链式存储结构中每个结点都由数据域与指针域两部分组成,增加了存储空间

8、循环队列是队列的一种顺序存储结构,用队尾指针rear指向队列中的队尾元素,用排头指针front指向排头元素的前一个位置

9、设循环队列为Q(1:

m),其初始状态为front=rear=m。

经过一系列入队与退队运算后,front=X,rear=Y。

现要在该循环队列中寻找最大值的元素,最坏情况下需要比较的次数为    

(1)若X>Y,则次数为m-(Y-X)-1

(2)若X<Y,则次数为Y-X-1

10、循环队列中的元素个数与队头指针和队尾指针的变化而变化

11、队列的修改是依先进先出的原则进行的

12、设计算法时不仅要考虑对数据对象的运算和操作,还要考虑算法的控制结构

13、顺序表具有以下两个基本特征:

(1)线性表中所有元素所占的存储空间是连续的;

(2)线性表中各数据元素在存储空间中是按逻辑顺序依次存放的。

(3)在顺序表中,每个元素占有相同的存储单元

14、设栈的顺序存储空间为S(0:

49),栈底指针bottom=X,栈顶指针top=Y(指向栈顶元素)。

则栈中的元素个数为X-Y+1

15、设栈的顺序存储空间为S(1:

m),初始状态为top=m+1(X)。

现经过一系列入栈与退栈运算后,top=20(Y),则当前栈中的元素个数为m+1-20=m-19(X-Y)

16、设栈的顺序存储空间为S(1:

50),初始状态为top=0。

现经过一系列入栈与退栈运算后,top=20(X),则当前栈中的元素个数为20(X)

二、程序设计基础

1、结构化程序设计的思想包括:

自顶向下、逐步求精、模块化、限制使用goto语句

2、结构化程序包括的基本控制结构只有三种,即顺序结构、选择结构与循环结构

3、在软件设计中使用的工具PAD图,不使用的工具数据流图(DFD图)

4、对象有如下一些基本特点:

标识唯一性、分类性、多态性、封装性、模块独立性好

5、多态性是指同一个操作可以是不同对象的行为

6、整数类实例包括:

十进制常量用0~9表示,不能以0开头;八进制常量用0~7表示,必须用0开头;十六进制常量用0~9和A~F(a~f)表示,必须以0x或0X开头。

7、字符实例的一般形式是用一对单引号括起来的一个字符。

另外ASCII码中还有一些控制字符,C语言中用转义字符的形式来书写这些常,转义字符一反斜杠(\)开始,后面跟1个字符或字符序列

8、继承是面向对象的方法的一个主要特征,是使用已有的类的定义作为基础建立新类的定义技术。

广义的说,继承是指能够直接获得已有的性质和特征,而不必重复定义它们,所以说继承是指类之间共享属性和操作的机制

三、软件工程基础

1、软件指的是计算机系统中与硬件相互依赖的另一部分,包括程序、数据和有关的文档

2、软件具有以下特点:

(1)软件是一种逻辑实体,具有抽象性;

(2)软件没有明显的制作过程;(3)软件在使用期间不存在磨损、老化问题;(4)对硬件和环境具有依赖性;(5)软件复杂性高,成本昂贵;(6)软件开发涉及诸多的社会因素,如知识产权等

3、软件生命周期可以分为软件定义、软件开发与软件运行维护三个阶段。

主要活动阶段是:

可行性研究与计划阶段,需求分析,软件设计,软件实现,软件测试,运行和维护(同9)

4、计算机软件按功能分为应用软件、系统软件、支撑软件(或工具软件)。

系统软件是管理计算机的资源,提高计算机的使用效率,为用户提供各种服务的软件,如操作系统、数据库管理系统、编译程序、汇编程序和网络软件等

5、数据定义语言:

负责数据的模式定义与数据的物理存取构建;数据操纵语言:

负责数据的操纵,包括查询及增、删、改等操作;数据控制语言:

负责数据完整性、安全性的定义与检查以及并发控制、故障恢复等功能。

6、软件工程包含3个要素:

方法、工具和过程

7、软件产品从考虑其概念开始,到该软件产品不能使用为止的整个时期都属于软件生命周期

8、数据库系统的三级模式是概念模式、外模式和内模式。

概念模式是数据库系统中全局数据逻辑结构的描述,是全体用户公共数据视图。

外模式也称子模式或用户模式,它是用户的数据视图,给出了每个用户的局部数据描述。

内模式又称物理模式,它给出了数据库物理存储结构与物理存取方法

9、软件生命周期分为3个时期共8个阶段:

软件定义期,包括问题定义、可行性研究、需求分析;软件开发期,包括概要设计、详细设计、实现、测试;运行维护期,即运行维护阶段。

可行性研究属于软件定义期任务(同3)

10、可行性分析阶段:

可行性分析报告。

需求分析阶段:

软件规格说明书,初步的用户手册。

软件设计阶段:

概要设计说明书,详细设计说明书,测试计划初稿。

软件实践阶段:

用户手册,操作手册等面向用户的文档和单元测试计划。

软件测试阶段:

测试分析报告。

11、概要设计说明书是总体设计阶段产生的文档。

集成测试计划是在概要设计阶段编写的文档。

需求规格说明书是后续工作如设计、编码等需要的重要参考文档

12、需求分析阶段的工作可以分为4个方面:

需求获取、需求分析、编写需求规格说明书和需求评审,包括确定软件系统的功能

13、

(1)在测试之前制定测试计划,并严格执行,测试用例的选择不可随意,应选择有代表性的,尽可能发现迄今为止尚未发现的错误。

(2)测试根本目的是尽可能多地发现并排除软件中隐藏的错误(3)软件测试是保证软件质量、可靠性的关键步骤。

14、在需求分析阶段可以使用的工具有数据流图DFD图,数据字典DD,判定树与判定表

15、数据流图中带箭头的线段表示的是数据流

16、数据字典(DD) 所定义的对象都包含于数据流图(DFD图)

17、软件需求规格说明书有以下几个方面的作用。

①便于用户、开发人员进行理解和交流;②反映出用户问题的结构,可以作为软件开发工作的基础和依据;③作为确认测试和验收的依据

18、软件设计中模块划分应遵循的准则是高内聚低偶合、模块大小规模适当、模块的依赖关系适当

19、从技术观点上看,软件设计包括软件结构设计、数据设计、接口设计、过程设计。

20、降低耦合性提高内聚性有利于提高模块的独立性(高内聚低耦合)

21、扇入指的是调用一个给定模块的模块个数

22、扇出指的是由一个模块直接调用的其他模块数

23、结构化程序的三种基本控制结构:

顺序、选择和循环(重复)

24、在数据流图中,用标有名字的箭头表示数据流。

在程序流程图中,用标有名字的箭头表示控制流。

25、软件测试的目的是为了发现错误而执行程序的过程。

程序调试的基本步骤有:

错误定位、修改设计和代码,以排除错误、进行回归测试,防止引进新的错误。

程序调试通常称为Debug,即排错。

软件测试的基本准则有:

所有测试都应追溯到需求、严格执行测试计划,排除测试的随意性、充分注意测试中的群集现象、程序员应避免检查自己的程序、穷举测试不可能、妥善保存测试计划等文件。

26、白盒测试又称为结构测试或逻辑驱动测试,对程序所有的逻辑路径进行测试

27、黑盒测试只是根据程序的功能说明来设计测试用例。

在使用黑盒测试法时,手头只需要有程序功能说明就可以了。

黑盒测试法:

等价类划分法、边界值分析法和错误推测法

四、数据库设计基础

1、数据库管理系统是数据库的机构,是一种在操作系统之上的系统软件。

2、数据管理技术的发展经历了3个阶段:

人工管理阶段、文件系统阶段和数据库系统阶段。

特点

人工管理阶段

文件系统阶段

数据库系统阶段

管理者

文件系统

数据库管理系统

面向对象

某个应用程序

某个应用程序

现实世界

共享程度

无共享,冗余度大

共享性差,冗余度大

共享性大,冗余度小

独立性

不独立,完全依赖于程序

独立性差

具有高度的物理独立性和一定的逻辑独立性

结构化

无结构

记录内有结构,整体无结构

整体结构化,用数据模型描述

控制能力

由应用程序控制

由应用程序控制

由DBMS提供数据安全性、完整性、并发控制和恢复

3、数据库应用系统中的核心问题是数据库的设计。

4、数据库中反映用户对数据要求的模式为外模式

5、数据模型通常由数据结构、数据操作及数据约束3部分组成

6、数据模型按照不同的应用层次分为3种类型:

概念数据模型、逻辑数据模型、物理数据模型

7、数据模型成熟并大量使用的数据模型有层次模型、网状模型、关系模型和面向对象模型等

8、关系模型实体间的联系采用二维表来表示,简称表:

网状结构为网状模型实体间的联系;树状结构为层次模型实体间的联系;属性刻画了实体。

9、在E-R图中实体集用矩形,属性用椭圆,联系用菱形

10、二维表中的一行称为元组。

候选键(码)是二维表中能唯一标识元组的最小属性集。

若一个二维表有多个候选码,则选定其中一个作为主键(码)供用户使用。

表M中的某属性集是表N的候选键或者主键,则称该属性集为表M的外键(码)。

11、1966年Boehm和Jacopini证明了程序设计语言仅仅使用顺序、选择和重复(循环)三种基本控制结构就足以表达出各种其他形式结构的程序设计方法

12、关系模型中可以有3类完整性约束:

实体完整性约束、参照完整性约束和用户定义的完整性约束。

实体完整性约束是指,若属性M是关系的主键,则属性M中的属性值不能为空值。

参照完整性约束是指,若属性(或属性组)A是关系M的外键,它与关系M的主码相对应,则对于关系M中的每个元组在A上的值必须为:

要么取空值;要么等于关系M中某个元组的主码值。

13、用于查询的3个操作无法用传统的集合运算表示,引入的运算为投影运算、选择运算、笛卡尔积。

常用的扩充运算有交、除、连接及自然连接等。

并:

RS是将S中的记录追加到R后面。

交:

RS结果是既属于R又属于S的记录组成的集合。

上述两种操作中,关系R与S要求有相同的结构,故A、D选项错误。

自然连接:

去掉重复属性的等值连接。

自然连接要求两个关系中进行,比较的是相同的属性,并且进行等值连接。

除运算可以近似地看作笛卡尔积的逆运算。

当S×T=R时,则必有R÷S=T,T称为R除以S的商。

设关系R有属性M1,M2,…,Mn,关系S有属性Mn-s+1,Mn-s+2,…,Mn,此时有:

R÷S=πM1,M2,…,Mn-s(R)-πM1,M2,…,Mn-s((πM1,M2,…,Mn-s(R)×S))。

由S中有属性A和A1,T中属性为B和B1,在R元组中找到对应于S中两个元组的T中元组为f 3与n2。

R中最后一个元组与S中无对应关系,所以在T中也不会出现。

投影,从关系模式中指定若干个属性组成新的关系。

二级C语言

一、C语言概述

1、结构化程序设计把一个复杂问题的求解过程分阶段进行,需要保证自顶向下、逐步细化、模块化设计、结构化编码

2、函数体必须由{开始。

一个源程序文件可以包括预处理命令、全局声明、函数定义,程序总是从main函数开始执行的

3、算法不一定要包含所有三种基本结构,也可以只包含一种或两种

4、算法的复杂程序不是由操作步骤多少决定的,而是按时间复杂度与空间复杂度来衡量

5、C编译程序把文件后缀为.c的源程序文件编译成文件后缀为.obj的二进制文件,链接将一个或多个目标文件与程序用到的库文件连接起来,形成一个可以在操作系统直接运行的执行程序.exe

6、一个算法应该具有以下五个重要的特征:

有穷性,确定性,输入,输出以及可行性

7、只有同时包含三种基本结构时,程序才是结构化程序。

一个结构化程序可以包含顺序、分支、循环结构中的一种或多种

8、stdio.h文件中包含标准输入输出函数的函数说明,预处理指令#include是使程序可以去该文件中找到printf,scanf等函数以便使用

9、计算机能直接执行的程序是二进制的可执行程序,扩展名为.exe

10、算法的特征:

①有穷性。一个算法(对任何合法的输入)在执行有穷步后能够结束,并且在有限的时间内完成。②确定性。算法中的每一步都有确切的含义。③可行性。算法中的操作能够用已经实现的基本运算执行有限次来实现。④输入:

一个算法有零个或者多个输入,零个输入就是算法本身确定了初始条件。⑤输出:

一个算法有一个或者多个输出,以反映出数据加工的结果

11、算法的描述有伪代码、流程图、N-S结构图等。E-R是实体联系模型

12、C语言中的非执行语句不会被编译,不会生成二进制的机器指令。

C程序经过编译、连接步骤之后才能形成一个真正可执行的二进制机器指令文件。

用C语言编写的程序称为,它以ASCII代码形式存放在一个文本文件中。

C语言源程序经编译后生成后缀为.obj的目标程序。

13、C语言的数值常量中不能夹带空格。

在C语言中运算符两侧的运算数据类型可以不一致,且结果与精度较高的保持一致,

14、C语言程序是由函数组成的。

可以单独进行编译。

每个C程序中必须包含一个main函数,但不一定是每个C程序文件中必须有,用户单独编写的某个函数也可以存储为一个C程序文件

15、一个普通的C函数可以单独作为一个C的程序文件存在被包含到其他程序中

16、在复合语句中,不仅可以有执行语句,还可以有定义语句,定义语句应该出现在执行语句的前面

17、C语言中的某些语句可以不用分号,例如if语句

18、关键字不可用做用户标识符

19、C语言的标识符分为3类:

关键字、预定义标识符和用户标识符。常量不属于标识符

20、一条C语句对应转换成一条机器指令

二、运算符与表达式

1、sizeof是C语言中的一个操作符(operator)。

其作用就是返回一个对象或者类型所占的内存字节数

2、条件表达式:

x=表达式1?

表达式2:

表达式3 的含义是:

先求解表达式1,若为非0(真),则求解表达式2,将表达式2的值赋给x。

若表达式1的值为0(假),则求解表达式3,将表达式3的值赋给x

3、C语言中没有<>运算符a%=b表示a=a%(b)c语言中"^"的意思是按位异或

4、c语言中"^"的意思是按位异或,运算符号按位或"|",把两个数化为二进制,异为1,同为0,

如10的二进制为00001010

3的二进制为00000011 10^3=9

 9的二进制为00001001

"&"按位与运算,同为1,异为0

5、在VC6.0平台中,整型int占有4个字节,double型数据占有8个字节。

6、算术运算符+的优先级高于-=

7、十进制---->>二进制:

十进制除以2,记录余数直到除尽到0,其二进制为这些余数倒着排列。

10/2=5余0,5/2=2余1,2/2=1余0,1/2=0余1,则10的二进制为1010,因为二进制有8个字节,则10的二进制为00001010。

8、二进制---->>十进制:

例:

00001001 1*2^(4-1)+0*2^(3-1)+0*2^(2-1)+1*2^(1-1)=9

       000011111*2^(4-1)+1*2^(3-1)+1*2^(2-1)+1*2^(1-1)=15

9、exp1&&exp2,规则为:

对exp1求值,若为0,则表达式为0,且不计算exp2;若exp1非0,则求exp2值,作为表达式值

10、">>"右移运算符,按位右移运算规则是将一个操作数先转换成二进制数,然后将二进制数各位右移若干位,移出的低位舍弃;并在高位补位,若为无符号数,右移时左边高位移入0。

例:

a=8=01000,执行a>>2后,a=00010=2

11、在C语言中,乘除法优先级要高于加减法,其次,除法运算符"/"两边参加运算对象都是整数,运算结果要取整

12、逗号表达式的值为其中最后一个表达式的值

13、i++,先使用后自增 自增和自减运算符的两种用法:

前置运算,运算符放在变量之前,规则是先使变量的值增(或减)1,然后以变化后表达式的值参与其他运算:

后置运算,运算符放在变量之后,规则是变量先参与其他运算,然后再使变量的值增(或减)1    例:

sum= pad =5;pAd=sum++, pAd++,++pAd;

得:

当(*str)='\0'时,结束循环,返回字符'\0'的ASCII码0sum=5,pad=5;pAd=5,sum=6,pAd=6,pAd=7

14、计算5/2,结果取整数值2。"%"运算符的两个操作值必须为整型数据

15、在C语言中,逻辑真值对应非0。

分支结构的流程走向是根据表达式的值,并不仅仅是算数表达式的值

16、rand()产生随机整数

三、基本语句

1、复合语句可以包含多条语句,在其中可以定义局部变量

2、花括号对{}不仅用来表示函数的开头和结尾,也可以用于表示复合语句

3、C语言中的语句必须以分号";"结束,所以空语句表示为";",不是空行

4、定义语句应该出现在执行语句的前面,在printf和scanf函数中都可以指定数据的宽度,scanf()的格式控制串可以使用其他非空白字符,如逗号,但在输入时必须输入这些字符,以保证匹配,。复合语句可以由任意多条语句构成,可以使一条也可以没有

5、当(*str)='\0'时,结束循环,返回字符'\0'的ASCII码0

6、while循环语句一般形式为:

while(表达式){循环体},执行过程为,首先判断表达式,成立(非0)则执行循环体,不成立(0)则退出循环

7、gets函数,getchar是用于从终端读入字符。

fputs函数用于把字符串输出到文件。

fwrite函数用于以二进制形式输出数据到文件

8、scanf ( )语句中用"空格"间隔不同的字符串。

getchar()函数从终端读入一个字符作为函数值,把读入的字符赋给变量ch。

在输入时,空格、回车符都将作为字符读入,而且只有在用户敲入回车键时,读入才开始执行。

gets()函数的调用形式为:

gets(str_adr),其中str_adr是存放输入字符串的起始地址,可以是字符数组名、字符数组元素的地址或字符指针变量。

gets函数用来从终端键盘读入字符串(包括空格符),直到读入一个换行符为止。

getc()函数的调用形式为:

ch=getc(pf)其中pf是文件指针,函数的功能是从pf指定的文件中读入一个字符,并把它作为函数值返回

9、scanf函数中的格式控制字符串是为了输入数据用的,无论其中有什么字符,也不会输出到屏幕上。

scanf()的格式控制串可以使用其他非空白字符,如逗号,但在输入时必须输入这些字符,以保证匹配就可以。

。Printf函数可以输出常量也可以输出变量,Prinf函数可以用"\%"来输出百分号%

10、数组第一个数为0。

由printf输出的数据都隐含右对齐。

Printf输出数据所占的宽度由系统决定

11、条件运算符组成条件表达式的一般形式为:

表达式1?

表达式2:

表达式3

其求值规则为:

如果表达式1的值为真,则以表达式2 的值作为条件表达式的值,否则以表达式2的值作为整个条件表达式的值

四、选择结构

1、在C语言中,逻辑真值对应非0。

2、逻辑"非"(即运算符!

)的运算级别是最高的;算术运算符优先级较高,关系和逻辑运算符优先级较低。

3、for语句的一般形式为:

    for(表达式1;表达式2;表达式3)语句

其循环中的"表达式1(循环变量赋初值)"、"表达式2(循环条件)"和"表达式3(循环变量增量)"都是选择项,即可以缺省,但";"不能缺省。

该题目中省略了"表达式1(循环变量赋初值)"和"表达式3(循环变量增量)"。

4、&&只有运算对象均非零结果才为真。

逻辑与只有在"&&"符号两边操作均为真时,逻辑与为真。

||只要有一个对象非零结果就是真。

逻辑或当且只当"||"符号两边操作至少有一个为真时,逻辑或结果为真

5、a!

=b表示a不等于b时,运算结果为1,或者为0

6、逻辑与运算符遵循"短路求值"策略,即只有在仅靠左操作数的值无法确定该逻辑表达式的结果时,才会求解右操作数 

例:

若有定义:

inta=0,b=0,c=0,d=0; ,有C语言表达式 (a++ &&b++)?

c++:

d++,以下关于其执行顺序的叙述正确是

先执行a++,表达式a++的值为0,由此即可确定(a++&&b++)的值为0,因此执行d++

7、if语句中表达式为1直接执行。

为0执行else

五、循环结构

1、条件表达式的执行次数总是比循环体的执行次数多一次

2、设有以下代码

do {

  while (条件表达式1)

  循环体A;

} while(条件表达式2);

while(条件表达式1)

 do{

} while (条件表达式2);

}

假设表达式1与表达式2成立次数为n1与n2。

若n1>n2,则循环体A执行次数为n2+1,B执行次数n2+1;若n1<n2,则循环体A执行次数为n1,B执行次数n1

3、while循环语句一般形式为:

while(表达式){循环体},执行过程为:

首先判断表达式,成立(非0)则执行循环体,不成立(0)则退出循环。

do…while循环语句一般形式为:

do{循环体}while(表达式),执行过程为:

首先执行循环体,之后判断表达式,成立(非0)则再一次执行循环体,不成立(0)则退出循环。

4、在条件相同的情况下,do…while循环比while…do多执行一次函数体两种循环都是在表达式为0时结束循环。

do-while循环由表达式真假判断是否退出循环,也可以用break语句退出循环

5、,while语句的语义是:

计算表达式的值,当值为真(非0)时, 执行循环体语句.intk=0;

while(k=1)k++;while(k=1) =while

(1),是死循环,执行无限次。

6、只要适当地修改代码,就可以将do-while与while相互转换。

for语句使用最为灵活,它完全可以取代 while语句;

7、s[k]-'0'为是s[]数组的k所对应的字符串长度。

8、在C语言中等于号用"=="表示,一个"="表示赋值

六、数组

1、*与&放在一起作用抵消,*(pt+i)表示引用指针pt所指元素后的第i个元素

2、#include<stdio.h>

  main()

{intc[6]={10,20,30,40,50,60},*p,*s;

   p=c;s=&c[5];

  printf("%d\n",s-p);

  }

语句p=c;指将c[0]元素的地址赋给指针变量p;语句s=&c[5];指将c[5]元素的地址赋给指针变量s

3、#include<stdio.h>

  main()

  {int a[5]={2,4,6,8,10},*p,**k;

  p=a;  k =&p;

   printf("%d", *( p++));

  printf("%d\n",**k );

}

首先通过p=a使p指向数组的第1个元素,所以输出2;在输出2以后,由于p++,即p就指向数组的第2个元素,**k就是取出p所指向元素的值,而p指向的是数组的第2个元素,即输出4

4、通过一

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 成人教育 > 远程网络教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1