2017年二级公共基础知识考试必考内容

  

考试中的其他权重:

1、C语言程序结构占总分的1%。

2、数据类型和操作占总分的4%

3、结构性编程占分数的3%。

4.循环结构占分数的5%

5.数组的定义和引用占分数的5%

6、功能占分数的5%

7、编译预处理占1%

8、指针占得分的5%。

9、结构占分数的3%

10、位运算占分数的2%

11、文件操作占分数的2%

考试

机考,时长 120 分钟

单选题40分(其中公共基础10分),操作题60分(包括程序填空题、程序修改题、程序设计题)

第1部分 C语言知识复习材料 第1章 C语言基础知识(90分)

【测试点1】C程序

用C语言编写的程序称为C语言源程序,源程序文件的后缀为“.c”。 源程序编译后生成后缀为“.obj”的目标文件,然后该目标文件与各种库函数连接生成“.exe”可执行文件。 C语言具有三种基本结构:顺序结构、选择结构、循环结构。

【测试点2】主要功能

也称主函数,是C程序的入口。 main 后面是一对圆括号和一对花括号。 大括号括起来的部分称为主函数的函数体。 AC程序从main函数开始执行,到执行完main函数体时结束,与main函数在整个程序中的位置无关。 每个程序有且只有一个主函数,其他函数为主函数服务。

【测试点3】存储形式

计算机以二进制形式将数据存储在计算机中。 由0或1组成的二进制系统称为位。 八个位构成一个字节(Byte)。 1 字节 = 8 位。 乘法用于将二进制、八进制和十六进制转换为十进制,除法用于将十进制转换为二进制、八进制和十六进制。 数据存储的位置就是它的地址。

【测试点4】注意事项

它是程序的描述,可以出现在程序中任何适当的位置。 注释从“/*”开始,以最新的“*/”结束。 计算机不会执行中间的任何操作。 注释不能嵌套。

【测试点5】写作格式

每个语句后面必须跟一个分号,它是语句的一部分。 多条语句可以写在一行上,一条语句可以写在多行上。

[测试点6] 标识符

它是标识名称的有效字符序列,可以理解为C程序中的单词。

标识符的命名规则是:

(1) 标识符只能由字母、数字和下划线组成,字母区分大小写。

(2) 标识符的第一个字符必须是字母或下划线,不能是数字。

C语言标识符分为三类:

(1)关键词。 它们在程序中具有固定的含义,不能用于其他目的。 如int、for等。

(2) 预定义标识符。 预定义的且具有特定含义的标识符。 比如诸如此类。

(3) 用户标识符。 用户根据需要定义的标识符,符合命名规则,与关键字不同。

【测试点7】常量和变量

常量是指在程序运行时其值不能改变的量。 常量有五种类型:整型常量、实数常量、字符常量、字符串常量和符号常量。 在程序执行过程中其值可以改变的量称为变量。 C语言中没有字符串变量。 使用字符数组来存储字符串。

【测试点8】整数数据

整数常量有十进制、八进制和十六进制三种表示形式,但没有二进制形式。 八进制整数常量添加前导数字 0,十六进制常量添加前导数字 0X。 8 不出现在八进制常数中。

整型变量可以分为基本整型(int)、短整型(short)、长整型(long)和无符号整型()。 一个基本整数占用4个字节。 其他类型整数占用的字节数和取值范围详见教材第9页。

【测试点9】真实数据

实际数据有两种表示形式:小数形式和指数形式。 掌握决策指标表的合法性。

公式:E之前和E之后必须有一个数字,并且E之后必须有一个整数。

实型变量分为单精度型(float)和双精度型()。 单精度类型占用四个字节。

【测试点10】算术运算

有五种算术运算符:+、-、*、/ 和 %。 求余运算要求操作数只能是整数类型。 当除法运算符两边的操作数为整数类型时,运算结果也为整数类型,即舍去小数部分。

【测试点11】强制类型转换

将操作数转换为指定类型,格式为(类型名)表达式,注意括号的位置。

[测试点12]作业

赋值运算符是“=”,它与关系等价的“==”不同。 赋值表达式的格式为:变量名=表达式。 赋值运算符的左侧必须是变量。 赋值操作是将赋值运算符右侧表达式的值赋给左侧变量。

复合赋值运算符是将算术运算符或按位运算符与赋值运算符组合在一起的运算符。 掌握复合赋值表达式转换为赋值表达式的方法。 例如,n+=100可以转换为n=n+100。

【测试点13】自加自减运算

自加运算符“++”和自减运算符“--”是一元运算符,操作数必须是变量。 自增自减操作分为前缀操作和后缀操作。 它们对应的表达式的值是不同的。 例如,j=i++; 相当于 j=i;i=i+1; j=++i; 相当于i=i+1;j=i;。

提示:使用前添加,使用后添加,添加后添加。

【测试点14】逗号操作

逗号运算符的操作优先级最低,可以将多个表达式组合成一个新的表达式。

真题:

1.下列说法错误的是(D)——选2006年4月第44题

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

B) C语言只有经过编译和链接步骤才能形成真正可执行的二进制机器指令文件。

C)用C语言编写的程序称为源程序,以ASCII码的形式存储在文本文件中

D)C语言中的每一条可执行语句和不可执行语句最终都会转换为二进制机器指令

2.下列说法错误的是(B)——选2006年4月第45题

A)具有正确算法的程序最终会结束

B)算法正确的程序可以有零输出

C)算法正确的程序可以有零输入

D)具有正确算法的程序对于相同的输入必须具有相同的结果

3.下列说法不正确的是(A)——选择2006年9月第11题

A)AC语言程序只能实现一种算法

B) AC程序可以由多个程序文件组成

C) AC程序可以由一个或多个函数组成

D) AC函数可以作为C程序文件单独存在

4.下列说法正确的是(D)——选择2006年9月第12题

A) 每个C 程序文件中都必须有一个main() 函数。 具有正确算法的程序对于相同的输入必须具有相同的结果。

B) main()函数在C程序中的位置是固定的

C) C 程序中的所有函数都可以互相调用,无论函数的位置如何。

D) 不能在 C 程序的函数内定义另一个函数

5、算法中,必须对每一步需要执行的操作给出明确、严格的规定。 这属于算法(C)——选择2007年4月第11题

一)合法性

B) 可行性

C) 确定性

D)有限性

6.下列说法不正确的是(D)——选择2007年4月第12题

A)计算机不能直接执行C语言编写的源程序

B) C程序经过C编译器编译后,生成的后缀为.obj的文件是二进制文件

C) 后缀为.obj的文件,链接器生成的后缀为.exe的文件是二进制文件

D) 后缀为.obj、.exe的二进制文件可以直接运行

7.下列说法错误的是(C)——选择2007年4月第14题

A)C语言是一种结构化编程语言

B) 结构化程序由三种基本结构组成:序列、分支和循环。

C) 使用三种基本结构的程序只能解决简单的问题

D)结构化编程提倡模块化设计方法

8、对于正常运行的C程序,下列说法正确的是(A)——选择2007年4月第15题

A)程序的执行总是从main函数开始,到main函数结束

B) 程序的执行总是从程序的第一个函数开始,到main函数结束

C) 程序的执行总是从main函数开始,到程序的最后一个函数结束

D)程序的执行总是从程序中的第一个函数开始,到程序中的最后一个函数结束

9、C语言源程序名后缀为(B)——选择2007年9月第11题

A).exeB).cC).objD).cp

10.下列说法正确的是(C)——2007年9月选择第14题

A) C语言程序将从源程序中的第一个函数开始执行

B) 用户可以在程序中指定任意函数作为主函数,程序将从该函数开始执行。

C) C语言规定必须用main作为主函数名,程序从这里开始执行,到这里结束。

D) Main 可以作为用户标识符,将任意函数命名为主函数

11、以下选项中的合法标识符为(C)(2009年3月)

A) 1_1B) 1-1 C) _11D) 1_

12、下列选项中非法标识符为(C)(2008年4月)

A))对于 C)&aD)_00

13. C 程序中可用作用户标识符的标识符集是 (A)(2007 年 9 月)

A) 和 B) 日期 C) HiD) 案例 -m-dDr。

14、根据C语言规定的用户标识符命名规则,(B)不能出现在标识符中(2007年4月)

A) 大写字母 B) 连接符 C) 数字字符 D) 下划线

15. 以下非法用户标识符是 (C)(2006 年 4 月)

A))) 4d D) _8_

16.下列选项不是字符常量的是(B)(2008年4月)

A)'C'B) "C" C)'xCC0'D)'72'

17. 下列合法字符常量是 (A)

A)'x13' B) 81 C) '65'D)”n”

18、已知大写字母A的ASCII码是65,小写字母a的ASCII码是97。下面不能将变量c中的大写字母转换为对应的小写字母的语句是(A) (2007 年 4 月)

A) c=(c-'A')%26+ a B) c=c+32 C) c=c-'A + a D) c=('A'+c)%26 -'a'

19、下列选项中,值为1的表达式。(2006年9月)

A) 1-'0 B) 1-' C) 1 -0D) -'0

20. 下列选项中,哪一个可以用作数据常量(D)(2009年3月)

A) o115B) 0118C) 1.5e1.5 D) 115L

21、下列选项中,不能作为C语言合法常量使用的选项是(B)。

A) 'cd' B) 0.1e+6C) "a" D) '11'

22.下列非法数值常量是(C)

A) 011B) le C) 8.0 E0.5 D)

23. C 源程序中不能表示的数制是(C)。 (2008 年 9 月)

A) 二进制

B) 八进制

C) 小数

D) 十六进制

24、下列关于long、int、short数据占用内存大小的说法正确的是(D)(2007年9月)

A) 均占用4个字节

B) 根据数据的大小确定占用内存的字节数

C) 用户自行定义

d) 由C语言编译系统决定

25、下列选项中,合法的C语言数值常量集是(B)(2007年9月)

A。 028 B.12.C. 177D.0x8A

5e-.510,000

-0xf 4.5e0 0abc3.e5

第2章 顺序结构

【测试点1】运算符、表达式、语句

操作数加上运算符就形成了表达式,表达式加上分号就形成了表达式语句。 操作数可以是表达式、常量或变量。 例如,赋值运算符加上操作数构成赋值表达式,赋值表达式加上分号可以构成赋值语句。

【测试点2】算子的优先级和组合顺序

运算符根据参与运算的对象数量可以分为一元运算符、二元运算符和三元运算符。 基本运算符具有最高优先级,其次是一元运算符、算术运算符、关系运算符、逻辑运算符(逻辑非除外!)、条件运算符、赋值运算符和逗号运算符。 位运算符的优先级介于算术运算符和逻辑运算符之间。 组合顺序多为从左到右,从右到左有三种:一元运算符、条件运算符和赋值运算符。

【测试点3】功能

格式为:(输出控制、输出列表)。 输出控件用双引号引起来,并包含格式化指令和原样信息。 输出列表包含多个输出项。

【测试点4】函数中的格式说明

%d对应整数类型,%f对应单精度实数类型,%c对应字符类型,%o对应八进制无符号整数类型,%x对应无符号十六进制整数类型,%u对应无符号整数类型, %e对应指数类型,%s对应字符串类型。 可以在%和格式字符之间添加数字来控制数据的宽度和小数位数。

【测试点5】scanf函数

输入项需要地址字符&。 使用键盘输入多个数据时,请在数据之间使用分隔符。 分隔符包括空格、制表符和回车符,但不包括逗号。

【测试点】6 如何交换两个变量

要使用中间变量,语句是:t=x; x=y; x=t;。

第三章选择结构

【测试点1】关系运算

C语言用非零表示逻辑真,用0表示逻辑假。 关系运算符共有6个,即>、>=、)称为结构指针)

【测试点4】链表

链表是由节点组成的,节点是一个结构体变量。 每个节点可以分为两部分:数据域和指针域。 数据域用于存储要存储的数据,指针域用于指向下一个节点。 链表是考试中的一个难点。 他们将在C语言和公共基础部分进行测试。 你必须理解并掌握它们。

【测试点5】普通本体

联合体的使用格式与结构体类似。 union定义的关键字是union。 union占用的字节数是所有成员中字节数最大的那个。

第十一章 文件

【测试点1】文件类型指针

文件指针是一个指向结构体类型的指针,定义格式为:FILE *指针变量名。 使用文件时,需要先定义文件指针。

【测试点2】文本文件和二进制文件

文本格式存储的是字符的ASCII码,二进制格式存储的是数据的二进制格式。 例如,如果“100”是文本形式,则存储“1”、“0”、“0”这三个字符的ASCII码(00)。 如果是二进制形式,则将100转为二进制()。

【测试点3】打开文件

文件打开格式如下:FILE *fp; fp=fopen(“c:\lab.c”,“rb”);. fopen函数的前一部分是文件名,后一部分是文件的使用方式。 详细打开方法参见教材第127页,其中r代表读,w代表写,a代表加,b代表二进制位。

【测试点4】文件功能

l 判断文件结束 feof 函数,调用形式为:feof(FILE *fp); //文件指针,如果文件结束,函数返回1,否则返回0

l fseek用于设置文件的位置,后续的读或写操作将从该位置开始。 函数的调用形式如下:

fseek(文件指针、位移、移动起点);

例如。 FILE*fp=fopen("C:\.c","rb");

fseek(fp,12,); //表示将文件fp的位置移动到文件起始位置后的第12个字节位置

或 fseek(fp,12,0);

fseek(fp,-12,; //表示将文件fp的位置移动到文件末尾之前的第12个字节位置

或 fseek(fp,12,2);

如果是

fseek(fp,12,); //表示将文件fp的位置从当前位置移动到后面第12个字节的位置

或 fseek(fp,12,1);

l ftell 用于获取文件的当前位置。 该函数给出当前位置相对于文件开头的字节数。 函数调用形式如下:

ftell(FILE *fp) //给出当前听到的相对于开头的字节数。 当发生错误时,返回-1L。

l 将文件位置移动到开头的功能相当于fseek(fp,0,)

l 文件字符输入输出 ch=fgetc(FILE *fp) 函数用于从fp指定的文件中读取一个字符并作为函数值返回

l fputc(char ch,FILE *fp),将字符ch写入文件指针fp指向的文件中。 如果输出成功,则返回输出字符。 如果失败,将返回 EOF 值。

l 文件输入输出函数及函数、通用形式(文件指针、格式控制字符串、输入项表或输入项表)

l 文件字符串输入输出fgets函数(fgets(str,n,fp),功能是从fp指向的文件中读取n-1个字符,放入str为起始地址的空间中)和fputs函数(fputs(str,fp))

l 读写二进制文件的函数和fread函数。

上述函数要求你了解其格式,并知道它是用于二进制文件还是文本文件。 一定要仔细复习课本文件章节,考试时不要混淆这些文件功能。

典型例子:

在给定的程序中,fun的作用就是将形参给出的字符串、整数、浮点数写入到一个文本文件中,然后以字符方式从文本文件中一一读取出来,并显示在屏幕上。终端屏幕。 请在程序的下划线处填写正确的内容,并删除下划线,以便程序能够产生正确的结果。

注:源程序存放在考生文件夹下的.C文件中。

不得添加或删除任何行,不得更改程序结构!

给定源程序:

#include  
void fun(char *s, int a, double f) 
{
__1__ fp; 
char ch; 
fp = fopen("file1.txt", "w"); 
fprintf(fp, "%s %d %fn", s, a, f); 
fclose(fp); 
fp = fopen("file1.txt", "r"); 
printf("nThe result :nn"); 
ch = fgetc(fp); 
while (!feof(__2__)) { 
putchar(__3__); ch = fgetc(fp); } 
putchar('n'); 
fclose(fp); 
} 
main() 
{ char a[10]="Hello!"; int b=12345; 
double c= 98.76; 
fun(a,b,c); 
} 
 

第12章 深入讨论

【测试点1】编译预处理

任何以#开头的行都是编译和预处理命令行。 编译和预处理不包含分号,也不考虑运行时间。 宏替换只是简单的文本替换。 例如,替换 f(2+2) 时,# f(x) (x)*(x) 和 # f(x) x*x 之间存在差异。 前者展开为(2+2)。 )*(2+2),后者就是2+2*2+2。

如果源文件f2.c中存在#"f1.c",则可以理解为将源文件f1.c原样包含到f2.c中,从而将f1.c和f2.c合并在一起编译 C 程序。 因此,C程序必须有main函数,但C源文件可能没有main函数。

【测试点2】标识符范围

局部变量是在函数或复合语句中定义的变量,其作用域在定义它的函数内。 局部变量有三种类型:auto、 和 。

自动变量随着函数使用与否而消失; 寄存器变量在CPU中分配,没有内存地址; 静态变量占用固定的存储单元,在程序执行过程中直到程序结束才被释放。

全局变量是在函数外部定义的变量。 它的作用范围从定义它的位置一直延伸到整个源文件的末尾,它的生存期是整个程序的运行时间。 全局变量都是静态变量。

例如

.#

int 乐趣()

整数x = 1;

x*=2;

X;

主要的()

int i,s=1;

当for(i=1;i0时,为非空树。 节点的度:该节点拥有的子树数量。

叶节点:度数为0的节点。

分支节点:叶子节点以外的节点。

节点的级别:根节点在第一级,同级左右节点的子节点在下一级。

树的深度:级别最大的节点的级别。

树的度:树中所有节点的度的最大值。

【测试点11】二叉树及其基本性质

1、二叉树的概念

二叉树是一种特殊的树结构。 每个节点最多有两个子树,左右子树不能互换。 因此,二叉树有五种不同的形状,参见教材第12页。

2. 二叉树的性质

性质1 二叉树的第k层最多有2k-1(k≥1)个节点。

性质2:深度为m的二叉树最多有2m-1个节点。

性质3 在任意二叉树中,度数为0的节点(叶节点)总是比度数为2的节点多一个。

性质4:n个节点的二叉树的深度不小于[log2n]+1,其中[log2n]表示log2n的整数部分。

3、二叉树的存储结构:详见教材第13-14页。

【测试点12】满二叉树和完全二叉树

满二叉树:除最后一层外,每一层的所有节点都有两个子节点。 在满二叉树中,每一层的节点数达到最大值,即满二叉树的第k层有2k-1个节点,深度为m的满二叉树有2m-1个节点。

完全二叉树是指除最后一层外,每一层的节点数都达到最大的二叉树; 最后一层只有右侧的几个节点缺失。

满二叉树是完全二叉树,但完全二叉树一般不是满二叉树。

【测试点13】完全二叉树的性质

性质1 具有n 个节点的完全二叉树的深度为[log2n]+1。

性质2:完全二叉树中度数为1的节点个数为0或1。

【测试点14】二叉树的遍历

前序遍历:先访问根节点,然后遍历左子树,最后遍历右子树; 而在遍历左右子树时,仍然是先访问根节点,然后遍历左子树,最后遍历右子树。 树。

对图 5 进行预序遍历,得到:

中序遍历:先遍历左子树,然后访问根节点,最后遍历右子树; 而在遍历左右子树时,仍然是先遍历左子树,然后访问根节点,最后遍历右子树。 树。

对图 5 进行中序遍历,得到:

后序遍历:先遍历左子树,再遍历右子树,最后访问根节点; 而在遍历左右子树时,仍然先遍历左子树,再遍历右子树,最后访问根节点。 观点。

图 5 的后序遍历得到:

【测试点15】顺序搜索

顺序查找从表的一端开始,依次扫描表中的每个元素,并与要查找的数字进行比较。

以下两种情况,只能使用顺序查找:

(1)如果线性表是无序表,无论是顺序存储结构还是链接存储结构,都只能使用顺序查找。

(2)即使是有序线性表,如果采用链式存储结构,也只能顺序查找。

【测试点16】二分查找

二分查找的条件:(1)使用顺序存储结构(2)线性表是有序表。

检索步骤:详见教材第16页。

对于长度为n的有序线性列表,在最坏的情况下,二分查找只需要log2n次比较,而顺序查找则需要n次比较。

【测试点17】排序

1. 交易所排序

(1)冒泡排序法。 最坏情况下,冒泡排序要求比较次数为n(n-1)/2。

(2)快速排序法。 最坏情况下,快速排序要求比较次数为n(n-1)/2。

2.插入类排序方法:

(1)简单的插入排序方法在最坏的情况下需要n(n-1)/2次比较;

(2) 希尔排序方法在最坏情况下需要O(n1.5)次比较。 (大写O是算法复杂度的表示)

3.选择类别排序方式:

(1)简单选择排序方法,最坏情况需要n(n-1)/2次比较;

(2) 堆排序方法在最坏的情况下需要O()次比较。

与上述方法(希尔排序方法除外)相比,堆排序方法的时间复杂度是最小的。

第 2 章编程基础

【测试点1】编程方法和风格

培养良好的编程风格时需要注意的事项:(详见教材第19页)。

1、源程序文档; 2、数据描述方法; 3、语句结构; 4. 输入和输出。

注释分为序言注释和功能注释。

清晰的语句结构第一,效率第二。

【测试点2】结构化编程方法的四个原则

1、自上而下; 2、逐步细化; 3、模块化; 4.限制goto语句的使用。

【测试点3】结构化程序的基本结构

顺序结构:是最基本、最常见的结构形式。 它是按照程序中语句行的顺序一一执行的。

选择结构:也称为分支结构,包括简单选择和多分支选择结构。

循环结构:根据给定的条件,判断是否重复执行某个相同或相似的程序段。 循环结构对应两种类型的循环语句:先判断后执行的循环体称为when型循环结构; 先执行后判断的循环体称为until型循环结构。

【测试点4】面向对象编程以及面向对象方法的优点

面向对象编程以对象为核心,强调对象的抽象、封装、继承和多态性。

面向对象方法的优点

(1)符合人类习惯思维方式; (2)稳定性好; (3)重复使用性好;

(4)易于开发大型软件产品; (5)可维护性好。

【测试点5】物体及其特性

对象():面向对象方法中最基本的概念,可以用来表示客观世界中的任何实体。 对象是实体的抽象。

对象的基本特征:

(一)标识的唯一性; (2) 分类; (3) 多态性; (4)封装; (5)良好的模块独立性。

【测试点6】属性、类和实例

属性:对象中包含的信息是在设计对象时确定的,一般只能通过对对象执行操作来更改。

类:具有相似属性和操作的一组对象。 类是对对象属性的描述。 类是对象的抽象,对象是其对应类的实例。

【测试点7】消息及其组成

消息:是一个实例与另一个实例之间传递的信息。 对象之间的通信依赖于消息传递。 它请求对象执行一定的过程或回答一定的请求信息,它统一了数据流和控制流。

该消息包括:

(1) 接收消息的对象名称; (2)消息标识符,也称为消息名称; (3) 零个或多个参数。

【测试点8】继承与多态

继承:是一种以现有类定义为基础构建新类的定义技术。 从广义上讲,它意味着可以直接获取现有的属性和特征,而不必重复定义它们。

继承是传递性的,一个类实际上继承了它上面的基类的所有特性。

继承分为单继承和多重继承。 单继承是指一个类只允许有一个父类,即类层次结构是树形结构; 多重继承意味着一个类可以有多个父类。

多态性:是指同一个消息被不同的对象接收时可以导致完全不同的动作的现象。

第 3 章软件工程基础知识

【测试点1】软件定义和软件特性

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

姓名

描述

程序

软件开发人员根据用户需求开发的、用编程语言描述的、适合计算机执行的指令序列。

数据

使程序能够正常操作信息的数据结构

文档

与程序的开发、维护和使用相关的图文材料

软件特点:

软件是一个逻辑实体,是抽象的;

软件的生产与硬件不同,没有明显的生产过程;

软件运行和使用过程中不存在磨损、老化问题;

软件的开发和运行依赖于计算机系统并受到计算机系统的限制,从而导致软件移植问题;

软件复杂且昂贵;

软件开发涉及许多社会因素。

根据不同的应用程序目标,可以将软件分为应用程序软件,系统软件和支持软件(或工具软件)。

姓名

描述

应用

开发了用于解决特定领域的应用程序的软件,例如办公室自动化软件

系统软件

计算自己的资源,提高计算机使用效率并为计算机用户(例如操作系统)提供各种服务的软件

支持软件(或工具软件)

支持软件是两者之间的工具软件,并协助用户开发软件。

[测试点2]软件生命周期

软件生命周期是指根据建议,实施,使用和维护的整个软件产品的整个过程,以停止使用和退休。 它可以分为三个阶段:软件定义,软件开发和软件维护。 在软件生命周期中,可以准确确定软件系统必须执行的操作以及必须具有什么功能的阶段:需求分析。

[测试点3]软件危机和软件工程的概念

软件危机通常是指在计算机软件的开发和维护中遇到的一系列严重问题,重点是成本和质量。 生产效率和其他方面。

所谓的软件工程是指使用工程概念,原理,技术和方法来指导软件的开发和维护。 这是一系列建立和使用完美的工程原则来获得可靠软件的方法,这些软件可以通过更经济的方式在实际机器上有效运行; 软件工程的主要思想强调需要在软件开发过程中应用工程原理。 软件工程的核心思想是将软件视为工程产品。

软件工程包括3个要素:方法,工具和过程

姓名

描述

方法

方法是完成软件工程项目的技术手段

工具

工具支持软件开发,管理和文档生成

过程

该过程支持软件开发各个方面的控制和管理

[测试点4]软件工程过程

软件工程过程是一组相关的资源活动,可将软件转换为输出,包括四个基本活动:

(1)p(计划) - 软件规格; (2)D(do) - 软件开发;

(3)C(检查) - 软件确认; (4)A() - 软件演变。

[测试点5]软件开发技术和软件工程管理

软件工程的理论和技术研究内容主要包括软件开发技术和软件工程管理。

软件开发技术包括软件开发方法,开发过程,开发工具和软件工程环境,其主要内容是软件开发方法。

软件开发方法包括分析方法,设计方法和编程方法。

软件工程管理包括软件管理,软件工程经济学,软件心理学等。

软件管理包括人员组织,计划安排,质量保证,配置管理,项目计划等。

软件工程经济学是对软件开发中成本估算,成本效益方法和技术的研究。

[测试点6]软件工程原理

软件工程原理:抽象,信息隐藏,模块化,本地化,确定性,一致性,完整性和可验证性(有关详细信息,请参见教科书的第28-29页)。

[测试点7]需求分析概述

在需求分析阶段工作:要求获取,需求分析,写作需求规格和需求审查。

需求分析方法包括:

(1)结构性需求分析方法;

①DATA面向结构的方法(ISD);

②结构化分析方法(SA)用于数据流;

③DATA面向结构的结构化数据系统开发方法(DSSD);

(2)面向对象的分析方法(OOA)。

根据需求分析建立的模型的特征,可以将其分为:静态分析和动态分析。

[测试点8]结构化方法和结构化分析方法

1.结构化方法包括结构化分析方法,结构化设计方法和结构化编程方法。

在结构化方法中,软件功能分解属于总体设计阶段。

2.结构化分析方法的概念

结构化分析方法是一种基于自上而下和逐步完善数据流的需求分析方法。

在软件需求分析阶段中的结构化分析方法的应用。

3.结构化分析的常见工具

数据流程图(DFD-DATA流):它是一种用于结构化分析方法中系统逻辑模型的工具。 它以图形方式描述了系统中流动和处理的过程。

数据流程图中有四个基本符号。

箭头:代表数据流,这是数据通过系统传播的路径。

圆或椭圆:表示处理。 处理也称为数据处理,即在数据流上执行某些操作或转换。

双水平线:指示数据存储(数据源)。 数据存储(也称为文件)是指暂时保存的数据。 它可以是数据库文件或任何形式的数据组织。

框:来源,池。 代表数据的源或终点。它是软件系统外部环境中的实体,共同称为外部实体

数据字典(DD):它是结构分析方法的核心。 它是用于描述系统中使用的所有数据和文件的文档。 它的功能是准确解释DFD中出现的命名图形元素。

数据字典由以下4种元素组成

(1)数据流(2)数据流量组件(3)数据存储(4)处理

决策树(决策树):它是描述处理的图形工具。 它适用于描述处理中的多种判断,每个决策都与多种条件有关。

决策表:与决策树类似,它也是描述处理的图形工具。 如果处理逻辑具有多个条件,多个操作并在不同条件组合下执行不同的操作,则可以使用决策表进行描述。

[测试点9]软件需求规范

软件需求规范(SRS,)是从需求分析阶段得出的最重要的文档。 软件需求规格的特征:正确性,明智,完整性,可验证性,一致性,可理解性,可修改性和可追溯性。 其中最重要的是明确的。

[测试点10]软件设计的基本概念

软件设计是为了确定系统的物理模型。

软件设计是开发阶段中最重要的一步,也是将需求准确转换为完整的软件产品或系统的唯一方法。

从技术角度来看,软件设计包括软件结构设计,数据设计,接口设计和过程设计。

(1)结构设计定义了软件系统的主要组成部分之间的关??系;

(2)数据设计将分析过程中创建的模型转换为数据结构的定义;

(3)界面设计描述了如何在软件,软件和协作系统之间以及软件与人员之间进行通信;

(4)过程设计是将系统结构组件转换为软件的过程描述。

从工程管理的角度来看,软件设计分为两个步骤:轮廓设计和详细设计。

(1)大纲设计将软件需求转换为软件体系结构,确定系统级接口,全局数据结构或数据库模式;

(2)详细的设计建立了每个模块的实现算法和本地数据结构,并使用适当的方法来表达算法和数据结构的详细信息。

[测试点11]软件设计的基本原理

1.软件设计中应遵循的与软件设计相关的基本原理和概念:

模块:将程序分为名为独立的模块,可以独立访问。 每个模块都可以完成子功能。

摘要:事物的基本特征是从他们的细节的细节中删除的。

信息隐藏和本地化:信息隐藏是指模块中包含的信息(过程或数据)。 对于不需要此信息的其他模块,无法访问它。 信息隐藏的实现取决于对象的包装。

模块独立性:模块独立性意味着每个模块仅完成系统要求的独立子功能,并且与其他模块的连接最少,并且接口很简单。 模块的独立性程度是评估和设计的重要测量标准。

[测试点12]耦合和内部聚集

该软件模块的独立性是使用两个定性测量标准的耦合和内部集聚。

耦合:这是软件结构中不同模块之间互连的量度。 耦合的强度取决于模块间接端口的复杂性。

内部聚集:这是模块中每个元素之间的紧密依从性。

模块的内部聚合越强,模块的模块越强。 一个模块和其他模块的耦合越强,模块的独立性越弱。

在结构编程中,模块划分的原理是该模块具有较高的内部聚合,并且模块具有低耦合协同作用。

耦合和内部聚合的类型(有关详细信息,请参见第35页教科书第35页)。

从低到高的耦合度:非直接耦合,数据耦合,标签耦合,控制耦合,外部耦合,公共耦合,内容耦合。

内部集聚从强度到弱:功能性内部,依次收集,在 - 通信,内部收集,过程中,进时间收集,时间收集,逻辑,逻辑,意外的内部收集。

[测试点13]结构设计方法

结构化分析方法是从顶部进行数据流的方法,并逐渐寻求精炼以执行需求分析方法。 基本思想设计具有相对独立和单功能模块的软件的结构,该模块与结构分析方法相连。 该图显示了被发现是转换结构和事物的目标系统的软件的模块结构。

1.摘要设计任务:(1)划分构成系统的物理元素(2)设计软件结构

2.摘要设计工具:

结构图(SC-Chart)也称为程序图。 在结构图中,模块由矩形表示,箭头表示模块之间的调用。 您可以使用带有注释的箭头来表示模块调用期间来回传递的信息。 您还可以使用带有真实心脏的箭头来表示控制信息,而空箭头心表示传递数据。

结构图的基本形式:基本形式,顺序形式,重复形式和选择形式。

结构图中有四种类型的模块:传递模块,模块,转换模块和协调模块。

计划结构中的专业术语:

姓名

描述

深度

控制层的数量

上层模块,下属模块

模块A和B的上层,下层和A呼叫B,然后A是上级模块,B是下属模块

宽度

表示整体控制跨度(最大模块的层)

扇入

调用模块的模块数量

扇出

直接称为模块的其他模块的数量

原子模块

树上的叶节点的模块

3.数据流的设计方法

任何软件系统都可以用数据流图表示。 有两种典型的数据流类型:转换和交易类型。

转换系统组成由三个部分组成:输入,中心转换和输出。

4.设计标准

(1)提高模块独立性。

(2)中等大小。

(3)适当的深,宽度,风扇和风扇。 如果深度太大,则意味着某些控制模块可能很简单。 如果宽度太大,则意味着系统的控制过于集中,并且解释模块的消失太复杂了。 在中层,风扇可以将模块进一步分解为几个小模块,或合并到上级模块中。 风扇越大,共享模块的上级人数就越多。 良好的软件设计结构通常是高端风扇,中间的风扇较少,底层很高。

(4)模块的范围在模块的控制域中。

(5)降低了模块的接口和界面的复杂性。

(6)设计为单个入口,一个单个出口模块。

(7)设计功能可以预测模块。

详细的设计工具(工程设计工具):图形工具,形式工具和语言工具。

图形工具:

程序流程图:箭头代表控制流,框表示处理步骤,钻石表示逻辑条件。

NS图:有五个基本图形。

垫图:问题分析图,有五个基本数字。

表工具:法官表。

语言工具:PDL - 过程设计语言(结构化英语和伪代码)。

[测试点14]软件测试的目标和准则

软件测试目标:查找程序中的错误。

软件测试的代码:

(1)所有测试都应追溯到需求。

(2)严格执行测试计划并消除测试的随机性。

(3)全神贯注于测试中的群集性能。 程序中错误的可能性与程序中的错误直接成正比。

(4)程序员应避免检查其程序。

(5)不良测试是不可能的。 测试不佳是检查程序的所有可能执行路径。 即使小规模程序的执法路径数量很大,也无法耗尽,表明该测试只能证明程序是错误的,并且无法证明程序是错误的。

(6)正确保留测试计划,测试案例的统计数据和最终分析报告错误。

[测试点15]软件测试方法

从是否需要测试软件的角度来看,它被分为静态测试和动态测试; 根据功能,将其分为白盒测试和黑匣子测试

1.静态测试和动态测试

静态测试包括代码检查,静态结构分析和代码质量测量。 不切实际的运行软件主要由手动执行。

动态测试是通过运行软件测试操作结果的动态行为和正确性。 动态测试的关键是使用高效且合理的测试用例。 测试用例由测试设计的两个部分组成,这些数据由测试输入数据(输入值集)和预期输出结果(输出值集)组成。 测试用例的设计方法通常分为两类:黑匣子测试方法和白盒测试方法。

2.白盒测试和黑匣子测试

(1)白盒测试

白盒测试也称为结构测试或逻辑测试。 它是将程序视为透明的白色盒子。 测试人员完全了解程序的结构和处理过程。 它根据程序的内部逻辑设计测试用例,并检查程序中的逻辑渠道是否根据计划要求正确工作。

白盒测试的基本原理:

(1)确保至少执行测量模块中的每个独立路径一次。

(2)确保至少执行一次测量模块的所有判断的每个分支。

(3)在边界条件和一般条件下,每个循环至少一次进行一次测得的模块。

(4)验证所有内部数据结构的有效性。

(5)根据白盒测试的基本原理,“白色盒子”方法是测试的糟糕方法。

如何测试白框:逻辑覆盖范围,基本道路测试。

(2)黑匣子测试

黑匣子测试也称为功能测试或数据驱动测试。 他们将该程序视为黑匣子。 测试仪根本不了解它,或者不考虑程序的结构和处理过程。 它根据规格的功能设计测试用例,检查程序的功能是否符合规格的要求。

黑匣子测试的方法:等效划分方法,边界价值分析方法,错误推测方法。

【测试点16】软件测试的实施

软件测试过程分为4个步骤,即单位测试,集成测试,验收测试和系统测试。

单位测试是用于测试正确性测试的软件设计模型的最小单元。 单位测试的基础是源程序和详细的设计说明。 单位测试的技术可以是静态分析和动态测试。

单元测试期间模块的测试:模块接口,本地数据结构,重要的执行通道,错误处理通道,边界条件。

驾驶模块等效于测量模块的主程序。

桩模块通常用于替换测得的模块调用的其他模块。 它的作用只是少量数据操作,这是一个模拟子例程。

集成测试是测试和组装软件的系统技术。 主要目的是发现与接口有关的错误。 集成测试的基础是必须设计设计。

集成测试方法:非注册方法组装和增量方法组装。

增加方法包括从顶部的增量方法,增量方法和从底部的混合增加方法。

确认测试的任务是验证软件的功能和性能。 测试的实施首先使用黑匣子测试方法来测试软件的有效性,即验证测试软件是否符合要求规格的要求以解释确认标准。

检查软件产品是否满足需求的定义的过程是:确认测试。

系统测试是通过测试确认的软件。 作为基于计算机系统的元素,它与计算机硬件,外围设备,支持软件,数据和人员结合使用。 执行一系列集成测试和确认测试。

系统测试的特定实现通常包括:功能测试,性能测试,操作测试,配置测试,外部接口测试,安全测试等。

【测试点17】程序调试

成功测试了该程序后,它将输入程序调试(通常称为DEBUG,即错误)。

该程序的调试任务是诊断和校正中的错误。

程序调试和软件测试之间的区别:

(1)软件测试是要在软件中找到尽可能多的软件中的错误,并且必须先在软件中找到程序调试,然后使用某个调试工具来执行软件错误的特定位置。

(2)软件测试贯穿整个软件寿命,调试主要在开发阶段。

程序调试的基本步骤:

(1)方向。 从错误的外部表达式开始,研究与相关部分相关的程序,确定程序中的误差位置,并找出错误的内部原因;

(2)修改设计和代码以消除错误;

(3)返回测试以防止新错误。

软件调试可以分为静态调试和动态调试。 静态调试主要是指通过人类思维分析源程序代码和排放。 这是主要的设计方法,动态调试是协助静态调试。

主要调试方法是:

(1)强行解除错误; (2)回顾性方法; (3)排除方法的原因,包括解释方法,归纳方法和两个点方法。

第4章数据库设计基础知识

[测试点1]数据库的基本概念

数据(数据)是数据库存储的基本对象,是描述事物的符号记录。

数据库(DB)是存储在计算机,有组织和共享的大量数据的集合。 它具有统一的结构,并存储在统一的存储介质中。 数据库技术的基本目标是解决数据共享问题。

数据库管理系统(DBMS)是一家数据库管理机构,负责数据库中数据组织,数据维护,控制和保护以及数据库中的数据服务。 数据库管理系统是数据库系统的核心。 数据库系统包含数据库和数据库管理系统。

数据库管理系统的功能:

(1)数据模式定义:为数据库构建其数据框架;

(2)数据访问物理构建:提供有效的访问方法和手段,以实现数据模型的物理访问和构建;

(3)数据操作:用户可以方便地使用数据库的数据,例如查询,插入,修改,删除和简单的算术操作和统计信息;

(4)数据的完整性,安全定义和检查;

(5)数据库的消除控制和失败恢复;

(6)数据服务:例如复制,纠正,重组,绩效监控,分析等。

为了完成数据库管理系统的功能,数据库管理系统提供相应的数据语言:

数据定义语言(DDL):负责数据模式的定义和数据物理访问的构建。

数据操纵语言(DML):负责数据操作。

数据控制语言(DCL):负责数据完整性,定义和检查安全性以及并发控制,故障恢复和其他功能。

数据语言在使用中有两种结构性形式:交互式命令语言(自主语言和自主语言)和主机型语言。

数据库管理员(DBA)的工作:数据库设计,数据库维护,提高系统性能并提高系统效率。

数据库系统(DBS)是指在计算机系统中引入数据库的系统。 它通常由数据库,数据库管理系统,应用程序系统,数据库管理员和用户组成。

数据库应用程序系统(DBA)由数据库系统以及应用程序软件和应用程序接口组成。 具体来说,它包括:数据库,数据库管理系统,数据库管理员,硬件平台,软件平台,应用程序软件,应用程序接口。

[测试点2]数据管理的开发和基本特征

数据管理技术的开发经历了三个阶段:人工管理阶段,文件系统阶段和数据库系统阶段。 具有最高数据独立性的阶段是数据库系统阶段。

手动管理阶段的功能:(1)计算机系统的管理功能无法提供用户数据(2)无法共享数据(3)数据不能单独保存。

文件系统阶段:(1)数据冗余(2)不一致(3)弱数据连接。

数据库系统的开发阶段:网格和分层数据库系统的第一代; 第二代关系数据库系统; 具有面向对象的模型的第三代数据库系统。

数据库系统的基本特征:

(1)数据的高组合(2)高共享和低冗余性数据(3)数据高独立性(4)统一数据管理和控制。

数据独立性是数据和程序之间的非依赖性,即数据库中的数据独立于应用程序,并且不取决于应用程序。

数据的独立性通常分为两种类型:物理独立性和逻辑独立性。

(1)物理独立性:当数据的物理结构(包括存储结构,访问方法等)发生变化时,其逻辑结构和应用不需要更改。

(2)逻辑独立性:数据的逻辑结构已更改,例如修改数据模式,添加新数据类型,更改数据连接等。用户的应用程序可以保持不变。

[测试点3]数据系统的内部结构系统

1.三级数据统一系统:

(1)概念模式,也称为逻辑模式,是数据库系统中全局数据逻辑结构的描述,以及所有用户的公共数据视图。 数据库只有一个概念模式。

(2)外部模式和外部模式也称为子模式。 它是数据库用户可以看到和使用的本地数据的逻辑结构和特征的描述。 概念模式可以具有多种外部模式。

(3)内部模式和内部模式也称为物理模型,该模型提供数据库物理存储结构和物理访问方法。 数据库只有一个内部模式。

内部模式在底层,它反映了计算机物理结构中数据的实际存储形式。 概念模式位于中间层。 它反映了设计师的全局逻辑要求,外部模式在最外层。 数据要求。

2.数据库系统的两个级别映射(有关详细信息,请参见教科书的第55页)

两个级别的映射保证了数据库系统中数据的独立性。

(1)概念模式图到内部模式。 该映射提供了概念模式中数据的全局逻辑结构与数据物理存储结构之间的相应关系;

(2)外部模式与概念模式的地图。 概念模式是全局模式,外部模式是用户的本地模式。 概念模式可以定义多个外部模式,每个外部模式都是概念模式的基本视图。

[测试点4]数据模型的基本概念

数据模型分为不同的应用程序级别::

概念数据模型:简称的概念模型是面临客观世界和以用户为导向的模型。 它不涉及特定的硬件环境和平台。 它也与特定的软件环境无关。 它是整个数据模型的基础。

逻辑数据模型:也称为数据模型,它是数据库的模型。 它分为分层模型,网格模型,关系模型和面向对象的模型。 其中,分层模型和网格模型共同称为非关联模型。 分层模型使用树结构来表示实体之间连接的模型。

物理数据模型:也称为物理模型,它是计算机物理的模型。

[测试点5] E -R模型

1. ER模型的基本概念

(1)实体:现实世界中的事物可以抽象成实体。 实体是概念世界中的基本单位。 它们是客观的和不同的事物。

(2)属性:现实世界中有一些特征,可以用属性表示。

(3)代码:唯一标识符实体的属性集称为代码。

(4)域:属性范围称为属性的域。

(5)联系人:现实世界中事物之间的关联称为连接。

两个物理集之间的连接实际上是物理集之间的功能关系。 这种功能关系可以具有以下内容:一个 - 一个连接,一个 - 一个或更多的连接,一个或更多连接,一个以及更多。

2. ER模型的图标方法

ER模型由ER图表示,ER图包含表示物理集,属性和连接的方法。

(1)实体的表示:使用矩形表示物理集,并在矩形中写入实体集的名称。

(2)属性的属性:使用椭圆形形状代表属性,在椭圆形形状中写入属性的名称。

(3)连接的接触:使用钻石表达连接,并以钻石形式写入联系人名称。

[测试点6]分层模型和网格模型

分层模型是一个面向根的方向树,是数据库系统中最早的数据模型。 Web模型对应于方向图。

分层模型和网格模型应相遇的条件

型号名称

满足条件

层次模型

(1)只有一个没有两个 - 差异节点的节点。 该节点称为根节点(2)除根以外的其他节点,只有一个父节点

网格型号

(1)允许一个以上父的节点(2)一个节点可以是一个以上的父

[测试点7]关系模型和相关概念

关系模式由两个维度表表示。 它由三个部分组成:数据结构,关系操纵和关系完整性约束。 在关系数据库中,该关系用于指示实体之间的关系。

关系:一个关系对应于两个维度表。 关系是两维手表,但两维手表不一定是一种关系。

大都会小组:桌子中的线是元组。

属性:表中的一个是一个属性,它为每个属性提供一个名称,即属性名称。

组件:元组中的属性值是不可分割的基本数据项。

域:属性的值范围。

两个维表中唯一的标识符组的最小属性值称为表的键或代码。 两个维度表中可能有几个健康状况,称为候选代码或表的候选人。 a key used as a user from all the keys of the two - table the main key or the main code. A set of in Table A is the key of a table B, which is the key or outer code with the value.

: data query, data , data , data .

allow three types of data , which are , , and user of . Among them, the and must meet the . Refer to the that do not allow to be to the meta -group that does not exist. The value in the main key that the of be empty, which is the most basic for .

【Test Point 8】

is an query . The of the is , and the are also . The , and are the three major of the . , , and .

Basic of the model: (1) (2) (3) (4) Query ( , , ), as well as , , , and .

Among the five basic of the , the , poor, , is a two -eye .

Let the R and s have the same mode

1. And: R and S are also a of meta - that to R or S..

2. : The R and S is a of meta - that to R but not S.

3. : Let's set R and S's to R and S, and the of R and S are a (R+S) meta -in group . A group group, a of the last S of S from a group of S.. The of new after the is R*S, and the is R+S.

4. : The of the that to R and S.

5. : One , cut a , some , and the order of .

6. : One , and to the to . That is, the group.

7. : Given the R (x, y) and s (y, z), where X, y, z are the group, y and s in R and s in R can have names, but must be from the same from the same as the same set.

8. : Also known as θ , it is a . Its is to the that meet from the of two to merge into a major . The and non - . The after the are in the front table. That is, more than the of in the .

9. : are (1) the two (2) The is the equal value of the .

[Test point 9] and

There are two in , data - and - .

The data - is to focus on and take into the needs; the - is to deal with and take into needs. Due to high in the , data has the core of the , so data - have .

The the life cycle , and the of the will be and into a stage of . They are: phase, stage, stage, stage.

A low -level mode can be into a of a of high -level mode . This is .

The is the of the user needs from the stage as an , that is, the model, it is the key to the of the .

The task of is to the E -R into a of data model.

The of the is the and of the index data on the . It on a given .

: , and hash .

:

(1) The of a is the core of , the of data and data .

(2) The of the .

(3) .

(4) The of the , the of the is the and of the index data.

(5) .

(6)

输入输出

There is the

整数j;

Float Y;

char name [50];

scanf ("%2d%f%s", & j, & y, name);

If you enter 55 566 from the , the value of Y is (566.0)

循环

#include
main()
{
int x =8;
for(;x>0;x--)
{
if(x%3)  8 5 4 2
{
printf(%d,x--);
continue;
}
printf(%d,--x);
}
}

功能

void f(int v,int w)
{
int t;
t=v;
v=w;
w=t;
}
main()
{
int c=1,y=3,z=2;
if(x>y)
f(x,y);
else if(y>z)
f(y,z);
else
f(x,z);
printf(“%d,%d,%dn”,x,y,z);
}

of

#include
main()
{
char s[]=”012xy8s34f4w2”;
int i,n=0;
for(i=0;s[i]!=0;i++)
 if(s[i]>=’0’ &&s[i]<=’9’) n++;
printf(“%dn”,n);
}

基本操作

#include
#include
main()
{
int *a,*b,*c;
a = b = c=(int *)malloc(sizeof(int));
*a = 1;*b=2,*c = 3;
a=b;
printf(“%d,%d,%dn”,*a,*b,*c);
}

For , int*p [3]; // the of [] is than*, P first with [] to form P [3], which shows that P is a array name, which is in front of it*in front of it**in front of it*in front of it**in front of it*in front of it* The each in the array p can only store

Array and

#include
main()
{
int x[3][2]={0},i;
for(i=0;i<3;i++)
 scanf(“%d”,x[i]);
printf(“%3d%3d%3dn”,x[0][0],x[0][1],x[1][0]);
} 
若运行时输入:2 4 6<回车>,则输出结果是(2 0 4)

point :

struct student
{
char name[10];
char sex;
int age;
float score;
};
Struct student s1,*ps,stu[3];
eg.
struct S
{
int a;
int b; 
}data[2]={10,100,20,200};
main()
{
sturct s p =data[1];
printf(“%dn”,(++p.a));
}

链接:

The to the type of the of the , such as

#include "stdio.h"
#include"stdlib.h"
struct link
{
 char data;
 struct link *next;
};
typedef struct link LINK;
LINK *create_list()
{
char ch;
LINK *h,*s,*r;
h = (LINK*)malloc(sizeof(LINK));
r = h;
printf("请输入一些字母(空格也被认为是字母,回车结束)");
ch = getchar();
while(ch !='n')
{
    s = (LINK*)malloc(sizeof(LINK));
    s->data=ch;
    printf("%c",ch);
    r->next=s;
    r = s;
    ch=getchar();
}
r->next = NULL;
return h;
}
void print_list(LINK *h)
{
LINK *p;
p = h->next;
if(p==NULL)
    printf("The List is NULLn");
else
while(p!= NULL)
{
    printf("%c",p->data);
    p=p->next;
}
printf("nn");
}
int add_node_at_front(LINK *head,char newData)
{
LINK *p;
p =(LINK *)malloc(sizeof(LINK));
p->data = newData;
if(head==NULL)
{
head = p;
p->next = NULL;
}
else
{
p->next = head;
head ->next = p;
}
return 1;
}
void del_node(LINK *head,char dataToDel)
{
LINK *p = head,*pPre=head;
if(p==NULL)
return;
printf("come to del_node,head->data is %c,deldata is %cn",head->data,dataToDel);
while(p!=NULL)
{
 if(p->data == dataToDel)
{
if(p==head)
{
 printf("come to del_node 1n");
    free(p);
    head = pPre=p=NULL;
 if(head == NULL)
        printf("head is null ");
 else
        printf("head is %d",head);
}
else
{
   pPre->next = p->next;
free(p);
p=NULL;
}
break;
}
pPre=p;
p = p->next;
}
}
LINK *find_node(LINK *head,char dataToFind)
{
LINK *p = head;
while(p!= NULL)
{
 if(p->data == dataToFind)
{
 return p;
}
p = p->next;
}
return NULL;
}
int modify_node(LINK *head,char oldData,char newData)
{
LINK *p = head;
p = find_node(head,oldData);
if(p != NULL)
{
    p->data = newData;
return 1;
}
return 0;
}
main()
{
 char c,cNew;
    LINK *head,*p;
    head = create_list();
    printf("%d",head);
    print_list(head);
    c = getchar();
    del_node(head,c);
    print_list(head); 
}

冒泡排序

Each sort of the on the far right.

例如:

87 12 56 45 78

87 and 12 : 12 87 56 45 78

87 and 56 : 56 87 45 78

87 and 45 : 45 87 78

87 and 78 : 78 87

At this point, the first sort was over, and each of the next sort was like this.

#include
void Print(int *num, int n)
{
int i;
for(i = 0; i < n; i++)
printf("%d ", num[i]);
puts("n");
return;
}
void Bubble_Sort(int *num, int n)
{
int i, j;
for(i = 0; i < n; i++)
{
for(j = 0; i + j < n - 1; j++)
{
if(num[j] > num[j + 1])
{
int temp = num[j];
num[j] = num[j + 1];
num[j + 1] = temp;
}
Print(num, n);
}
}
return;
}
int main()
{
int num[8] = {87, 12, 56, 45, 78};
Bubble_Sort(num, 5);
return 0;
}

Quick :

1. that we can sort an INT array, the in the array is int a [9] = {3,6,5,9,7,8,2,4}

2. the of rapid , we first some . First, set a to store a in the out of the array. , the first of our array is to say that TEMP = A [0], At the same time, two are set to point to the first and the last of the array.

3. The basic steps of the are:

1. The size of the rear bids of the array in order and the size of TEMP. If TEMPA [J], stop , and A [J] to A [i]

4. The basic steps of the are:

2. the size of the front of the array in turn and the size of TEMP. If TEMP> A [i], then I ++, until the first TEMP is

5.5

5. The steps are:

3. i is equal to J, and if not equal, cycle 1 or 2 steps until I equal to J, and a fast sort.

结尾

In order to help , relax, learn C /C ++ , share the I for , start from the zero , help put on the road of C ! Click below to get it, you can also learn to ~

 

标签:运算   考点   模块   字符   排序

文章来源:人力资源和社会保障

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.luzai.cnhttp://www.luzai.cn/html/266919.html