二级C语言易错点归纳

公共基础知识部分:
1.整数在计算机中存储和运算通常采用的是补码的形式
2.在操作系统中,将文件名转换为文件存储地址的结构是文件目录,文件目录是计算机系统建立的文件索引,是文件名和文件物理位置之间的映射关系。
3.树中结点数=树中所有结点的度之和+1
4.循环队列Q(1:m)初始状态为空,在循环运转起来后,若rear-front>0,则队列中元素为rear-front个,若rear-front<0,则队列中元素个数为rear-from+m个。
5.还是这个循环队列,若rear=front=m,则队列空,若rear=front!=m则可能空可能满。
6.带链队列中,若front=rear=NULL,队列空,若front=rear≠NULL,队列有一个元素,其他情况无法判断。
7.在数据库设计中,将ER图转换成关系数据模型的过程属于逻辑设计阶段。
8.非空线性结构应满足:①有且只有一个根结点②每个结点最多有一个前键,最多有一个后键。不满足以上两电的就是非线性结构。
9.数据结构是否为线性与存储空间是否连续无关。
10.最坏情况下,冒泡排序、快速排序、简单插入排序都是要排n(n-1)/2次。而希尔排序要排n的r次方次,r的范围是(1,2),堆排序要排n(log2)n次。
11.单元测试是对模块进行正确性检验的测试,通常在编码阶段进行,除源程序外还依据详细设计说明书
12.第一范式(1NF):主键不为空且不重复,字段不可再分。
第二范式(2NF):满足第一范式,且每个非主属性都没有对主属性的
部分依赖
第三范式(3NF):满足第二范式,且每个非主属性都没有对主属性的
传递依赖
BCNF范式:所有属性都不传递依赖于关系的任何候选键
13.原地工作(in place)是指执行算法时所用额外空间固定,不随算法所处理的数据空间大小变化而变化
14.带链栈栈底指针在栈空时值为null,在栈不为空时指向栈底结点,值为其地址,是有可能发生改变的
15.数据流图(DFD)是描述数据处理过程的工具,是需求理解的逻辑模型的图形表示,它直接支持系统的功能建模,从数据传递和加工的角度,来刻画数据流从输入到输出的移动变化过程。而系统的数据建模是系统设计阶段的工作,数据流图不支持它。
16.软件测试要求严格执行测试计划,排除测试的随意性,不能随意选取测试数据。
17.带链栈top=bottom=NULL时,栈空,top=bottom≠NULL时,栈中有一个元素。
17.一个数据结构是可以没有根结点或叶子结点的。线性结构必须满足有且仅有一个根结点,并且每个结点最多有一个前键,最多有一个后键。如果一个数据结构没有叶子结点,那么它一定是非线性结构。
18.二维数组、循环队列均为线性结构,采用顺序存储。二叉链表为非线性结构,采用链式存储。双向链表为线性结构,采用链式存储。
19.NS图是一个方框。PAD图是问题分析图,用于描述软件详细设计。E-R图用于数据库中表示E-R模型的图示工具。程序流程图是进行软件详细设计的工具。
20.软件测试的四个步骤:单元测试、集成测试、确认测试(验收测试)、系统测试。
21.cpu芯片内部连接各原件的总线是内部总线。除此之外还有系统总线,通信总线两类。
22.分布式计算机系统是指由多台分散的计算机经神经网络互联而成的系统,系统的处理和控制功能分布在各个计算机上。
23.地址重定位建立用户程序的逻辑地址与物理地址之间的对应关系,实现方式包括静态地址重定位和动态地址重定位。固定分区存储管理采用静态地址重定位,可变分区、页式、段式、段页式、请求页式、请求段式、请求段页式存储管理均采用动态地址重定位。
24.计算机工作的本质是取指令、分析指令和执行指令。
25.进程控制块(PCB)是由系统为每个进程分别建立的,用以记录对应进程的程序和数据的存储情况,记录进程的动态信息。系统根据PCB而感知进程存在,根据PCB中的信息对进程实施控制管理。当进程结束时,系统即随之消亡。因此可以说PCB是一个进程存在的唯一标志。
26.进程创建完成后即进入就绪状态,处于就绪状态的进程可以有多个。
27.处于运行状态的进程当运行时间片用完后将转换为就绪状态。
28.软件测试的目的是发现程序中的错误,而不会改正错误。程序调试的任务是诊断和改正程序中的错误。
29.关系模式进行规范化的目的是使关系结构更加合理,消除存储异常,使数据冗余尽量小,便于插入、删除和更新等操作。
30.在关系模式中,如果Y->X,X->A,且X不决定Y,A不属于X,那么Y->A是传递依赖。
31.冯·诺伊曼计算机结构是存储程序控制的计算机结构。
32.计算机在执行程序的过程中,当出现异常情况或者特殊情况时,cpu停止当前程序的运行,转而执行对这些异常情况或者特殊情况进行处理的程序,处理结束之后再返回到现行程序的断点处继续运行,该过程就是中断
33.数据字典(DD)是对数据流图中所有元素的精确、严格的定义和解释,是一个有组织的列表,使得用户和系统分析员对于输入、输出、存储成分和中间计件结果有共同的理解,是结构化分析方法的核心
32.寻址方式是指找到当前正在执行指令的数据地址以及下一条将要执行指令的地址的方法。寻址方式分为指令寻址(分为顺序寻址和跳跃寻址两种),和数据寻址两大类。常见的数据寻址有立即寻址(所需操作数由指令地址码部分直接给出),直接寻址(指令的地址码部分给出操作数在存储器中的地址),隐含寻址(操作数的地址隐含在指令操作码或某个寄存器中),间接寻址,寄存器寻址,寄存器间接寻址,基址寻址,变址寻址,相对寻址和堆栈寻址。
33.进程是指一个有一定独立功能的程序关于某个数据集合的一次运行活动。进程是可以并发执行的程序的执行过程,是控制程序管理下基本的多道程序单位。进程是程序在处理机上的一次执行过程,是一个动态概念,而程序本身没有任何运行的含义,是一个静态概念。一个程序可以对应多个进程,一个进程可以包含多个程序。
34.在单cpu上同一时刻只能执行一个进程,程序的并发执行是采用cpu分时原理,程序的并发执行使得程序和计算机执行程序的活动不再一一对应。
35.一个数据库可以有多个外模式(因为用户可以有多个),但概念模式和内模式只能有一个。
36.数据库设计中,在需求分析阶段形成需求说明书,概念设计阶段形成概念数据模型(E-R模型,作为进一步设计数据库的依据),逻辑设计阶段形成逻辑数据模型(从E-R图向关系模式转换、关系视图设计、模式规范化),物理设计阶段形成数据库内部模型(此时涉及具体软硬件环境)。
37.虚拟存储器是对主存的逻辑扩展,虚拟存储器的空间大小取决于计算机的访存能力。
38.进程存在的唯一标志是数据结构PCB(进程控制块)。
39.数据库系统共享性大,冗余度小,但只是减少了冗余,并不是避免一切冗余,所以不能避免一切数据的重复。
40.结构化程序设计的目的:通过设计结构良好的程序,以程序静态的良好结构保证程序动态执行的正确性,使程序易理解,易调试,易维护,以提高软件开发的效率,减少出错率。
41.算法的空间复杂度与算法运行输出结果的数据量无关,算法的时间复杂度与计算机系统无关,算法的时间复杂度与空间复杂度没有必然的联系。
42.带链栈的栈底指针是随栈的操作而动态变化的(不是不变的)。
43.模块的扇出指本模块直属下层模块数,模块的扇入是指有多少个上级模块调用它。
44.进程一但创建,即进入就绪状态。处于运行状态的进程,分配给它的时间片用完,就让出CPU而转为就绪状态。处于阻塞状态的进程,阻塞原因解除后即进入运行状态。进程进入运行状态后未必会一直运行下去45.数据库系统,文件系统均可管理各种类型的文件,并均可管理庞大的数据量。
46.集成测试是为了发现概要设计的错误。集成测试也称组装测试,是对各模块按照设计要求组装的程序进行测试,主要目的是发现与接口有关的错误。
47.软件设计中要求模块规模应该适中。应设计单入口单出口的模块,应提高模块独立性,减少模块接口和界面的复杂性。深度,扇入扇出应该适当,模块作用域应该在控制域内。
48.用户标识符与预定义标识符相同,会覆盖预定义标识符内容。
49.正数的原码反码补码均相同,负数的反码是对该数的原码除符号位外各位取反,补码是在该数的反码最后一位加1。无论正数还是负数,其偏移码都是补码符号位取反。
50.数据库应用系统中核心问题是数据库设计。
51.堆、栈、队列都可以采用顺序存储结构,二叉树中满二叉树和完全二叉树也可以按层次进行顺序存储。但非完全二叉树不能采用顺序存储结构。
52.需求分析的产物是数据字典,概念设计的产物是E-R图,逻辑设计的产物是关系模式,物理设计是设计物理存储方法及存储结构,实施阶段就是具体代码实现。

C语言部分
1.C语言中16进制在’‘中的正确表示方法为’\x___‘注意区分大小写。8进制的表示方法为’\0___’。
2.如果不是传入地址的函数(传地址包括指针,数组,结构体等),那么使用完函数后传入值保持不变,反之则随函数中操作而改变。
3.数组名本身就是一个指针,但需要注意的是这是一个指针常量,不能被修改。
4.使用结构体指针(例如p)指向结构体成员时用’p->x’表示,而使用结构体变量(如a)指向结构体成员时用’a.x’表示。
5.转义字符\ddd表示三位八进制数代表一个ASCII字符
6.函数返回值是一个表达式,不限于基本数据类型或指针,也可以是结构体类型等,但不能是数组。
7.register说明的变量是建议编译器将变量的值保存在寄存器中,这一操作不是强制性的,只是建议,所以register变量也不一定能存入,但是register变量始终是没有地址的,不能进行求地址运算。
8.未赋初值的auto变量值是不确定的,没有系统默认auto变量初值为零这一说。
9.传统流程图也可以描述复杂的算法,一个正确的算法满足有穷性,确定性,可行性,有零个或多个输入(也就是说可以没有输入),有一个或多个输出(不能没有输出)。
10.虽然说&&比||优先级高,但要注意自增自减运算符的优先级高于逻辑运算符。
11.实数的指数形式要求字母E/e之前必须有数字,之后必须是整数。整型常量中U表示无符号类型,L表示长整型,0x开头表示十六进制的整数。应注意不能把整型常量的符号用到实型常量后面。
12.位运算:&表示与,两个位为1才得1。|表示或,两个位都为0才得0。^表示异或,两个位相同为0,相异为1。~表示取反,0变1,1变0。<<表示左移,各二进位全部左移若干位,高位丢弃,低位补0。>>表示右移,各二进位全部右移若干位,高位补0。
13.形参是结构体类型,不会改变实参。
14.C语言算术表达式运算符两侧的运算数类型可以不同。
15.scanf语句中引号内是什么格式,输入的时候就要是什么格式。
16.不能用scanf读入带空格的字符串,因为在scanf函数中空格代表终止读取。
17.不能将常数地址赋给指针,不能将表达式的地址赋给指针,不能将指针地址赋给指针。
18.常错点:数组名类似一个指向数组首地址的指针常量,一但定义就不能修改其内容。
19.在程序中凡是以"#“开始的语句行都是预处理命令。
19.对文件的写操作(“w”)是把文件中已有内容删除,重新写。
21.数组做形参,调用函数时,将实参数组首地址赋给数组名指针,而非整个数组值一一复制给形参。
22.指针类型变量统一的占用四个字节。
23.文件指针是指针类型变量,不可以同时指向不同文件,存储的是文件缓存区首地址,而非文件在计算机磁盘中的路径信息。
24.在C语言中分号是语句的组成部分,是一条语句的结束标志,不是分隔符。
25.extern和static类型都是静态类型,而auto和register类型不是。
26.逻辑运算符两侧运算对象可以是任意合法表达式
27.表达式9-'0’的值是-39(9-48),举这个例子是提醒注意不同类型变量的加减有区别。
28.get(ss)读入一串字符串,直到遇到回车,读入的数据从数组的起始位置覆盖。
29.strlen遇到\0停止计数,\0的ASCII码为0。
30.取余运算符%是二元运算符,具有左结合性,参与运算的量均为整型。
31.fread(buffer,size,count,fp);功能是从一个文件流fp中读取count个元素,每个元素size个字节,读入数据存入buffer指向的内存块中。
32.C语言程序运行时可以从键盘上读入用户输入的字符或数据,并依此改变程序的运行步骤。(注意不可以读入用户输入的二进制指令)
33.#include 是文件包含的宏定义,不属于C语言语句。使用\符号可以将一条#include命令写在多行里。
34.将0赋给指针变量,表示指针变量的值为空,这样写是合法的。
35.指针变量具有基类型,基类型不同的指针不能直接相互赋值。
36.区分”"不是空字符串,它是长度为0的字符串,还包括了字符串结束标志’\0’。
37.宏定义和宏调用都是允许嵌套的。
38.switch后面的表达式只能是整型或字符型,case后面必须是常量表达式。
39.while和switch嵌套中,switch内break是跳出switch语句,执行while之后的部分,continue是直接跳到下一个循环。
40.字符数组只能在初始化时完成赋值,不能s[10]赋值一串字符串。但是可以s[]赋值字符串。
41.NULL是在stdio.h头文件中定义的预定义符,NULL的代码值为0。
42.fgets(s, n, f)功能是从f所指的文件中读入n-1个字符放入s为起始地址的空间内并自动加上一个\0。同时将读写指针向前移动字符串长度个字节。若在读取中遇到了换行符或EOF,则读出结束。
43.C语言程序的执行是从main()函数开始的,但不一定在main()函数中结束,在任何其他地方可以调用exit()函数结束程序运行。
44.如果函数省略返回值类型,则说明函数返回值为int类型。

希望能帮到正在备考的你

你可能感兴趣的:(笔记,编程语言,算法,数据库,c语言)