TreeMind树图在线AI思维导图
当前位置:树图思维导图模板IT互联网互联网干货C语言程序设计总结思维导图

C语言程序设计总结思维导图

  收藏
  分享
免费下载
免费使用文件
U721564417 浏览量:232022-12-20 16:27:36
已被使用4次
查看详情C语言程序设计总结思维导图

树图思维导图提供 C语言程序设计总结 在线思维导图免费制作,点击“编辑”按钮,可对 C语言程序设计总结  进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:aadded4449ed047738639080ad881607

思维导图大纲

C语言程序设计总结思维导图模板大纲

第一章 程序设计和C语言

1.1什么是计算机程序

1.2什么是计算机语言

1.3C语言的发展及其特点

特点

语言简洁、紧凑,使用方便灵活

运算符丰富

数据类型丰富

具有结构化的控制语句

语言限制不太严格,程序设计自由度大

C语言允许直接访问物理地址,能进行位操作,能实现汇编语言的大部分功能,可以对硬件进行操作

用C语言编写的程序可移植性好

生成目标代码质量高,程序执行效率高

1.4最简单的C语言程序

1.4.1最简单的C语言程序举例

1.4.2C语言程序的结构

一个程序由一个或多个源程序文件组成

预处理指令

全局声明

函数定义

函数是C程序的主要组成部分

一个函数包括两个部分

函数首部

函数体

声明部分

执行部分

程序总是从main函数开始执行的

程序中要求计算机完成的操作是由函数中的C语句完成的

在每个数据声明和语句的最后必须有一个分号

C语言本身不提供输入输出语句

程序应当包含注释

1.5运行C程序的步骤与方法

步骤

上机输入和编辑源程序

对源程序进行编译,先用C编译系统提供的“预处理器”对程序中的预处理指令进行编译预处理

进行连接处理

运行可执行程序,得到运行结果

方法

一个程序从编写到运行得到预期结果,并不是一次就能成功,往往要经过多次反复。编写好的程序并不一定能保证正确无误,除了用人工方式检查外,还须借助编译系统来检查有无语法错误

为了编译、连接、运行C程序,必须要有相应的编译系统

在Windows环境下,用Visual Studio2010比较方便

不应当只会使用一种编译系统,无论用哪一种编译系统,都应当能举一反三,在需要时会用其他编译系统进行工作

1.6程序设计的任务

问题分析

设计算法

编写程序

对源程序进行编辑、编译和连接

运行程序,分析结果

编写程序文档

第二章 算法——程序的灵魂

2.1程序=算法+数据结构

数据结构:对数据的描述。在程序中要指定用到哪些数据,以及这些数据的类型和数据的组织形式

算法:对操作的描述。要求计算机进行操作的步骤

2.2什么是算法

数值运算算法

数值分析方法

非数值运算算法

排序算法

查找搜索算法

2.3最简单的算法举例

2.4算法的特性

有穷性

确定性

有零个或多个输入

有一个或多个输出

有效性

2.5怎样表示一个算法

2.5.1用自然语言表示算法

优点:通俗易懂

缺点

文字过长,容易出现歧义

表示的含义往往不大严格

描述包含分支和循环的算法不大方便

2.5.2用流程图表示算法

直观形象,易于理解

2.5.3三种基本结构和改进的流程图

传统流程图的弊端

用流程线指出各框的执行顺序,对流程线的使用没有严格限制。因此,使用者可以不受限制的使流程随意的转来转去,使流程图变得毫无规律,阅读时需要花很大精力去追踪流程,使人难以理解算法的逻辑。

难以阅读,也难以修改,从而使算法的可靠性和可维护性难以保证。

三种基本结构

顺序结构

选择结构

循环结构

当型(while型)循环结构

直到型(until型)循环结构

2.5.4用N-S流程图表示算法

比文字描述直观、形象、易于理解

比传统流程图紧凑易化

2.5.5用伪代码表示算法

用介于自然语言和计算机语言之间的文字和符号来描述算法

不用图形符号,因此书写方便,格式紧凑,修改方便,容易看懂,也便于向计算机语言算法过度

用伪代码写算法并无固定的、严格的语法规则,可以用英文,也可以用中英文混用。只要把意思表达清楚,便于书写和阅读即可,书写的格式要写成清晰易读的形式

2.5.6用计算机语言表示算法

设计算法

用不同的方法来表示操作的步骤

实现算法

笔算,算盘,或计算机

2.6结构化程序设计方法

第三章 最简单的C程序设计——顺序程序设计

3.1顺序程序设计举例

3.2数据的表现形式及其运算

3.2.1常量和变量

常量

整型常量

实型常量

十进制小数形式,由数字和小数点组成

指数形式

字符常量

普通字符

转义字符

字符串常量

符号常量:一个符号名代表一个常量

含义清楚

在需要改变程序中多处用到的同一个常量时,能做到了“一改全改”

变量

先定义,后使用

常变量

标识符

在计算机高级语言中,用来对变量、符号常量名、函数、数组、类型等命名的有效字符序列

3.2.2数据类型

基本类型

整型

基本整型

短整型

长整型

双长整型

字符型

布尔型

浮点型

单精度浮点型

双精度浮点型

复数浮点型

枚举类型

派生类型

指针类型

数组类型

结构体类型

共用体类型

函数类型

3.2.3整型数据

整型数据的分类

基本整型(int型)

短整型(short int)

长整型(long int)

双长整型(long long int)

整型变量的符号属性

3.2.4字符型数据

字符与字符代码

字符变量

3.2.5浮点型数据

float型(单精度浮点型)

double型(双精度浮点型)

long double型(长双精度)型

3.2.6怎样确定常量的类型

整型常量

浮点型常量

3.3运算符和表达式

3.3.1C运算符

算术运算符

关系运算符

逻辑运算符

位运算符

赋值运算符

条件运算符

逗号运算符

指针运算符

求字节数运算符

强制类型转换运算符

成员运算符

下标运算符

其他(如函数调用运算符)

3.3.2基本的算术运算符

3.3.3自增(++)、自减(--)运算符

3.3.4算术表达式和运算符的优先级与结合性

3.3.5不同类型数据间的混合运算

3.3.6强制类型转换运算符

3.4C语句

3.4.1C语句的作用和分类

分类

控制语句

if()···else条件语句

for()循环语句

while()···循环语句

do···while()循环语句

continue结束本次循环语句

break中止执行switch或循环语句

switch多分支选择语句

return从函数返回语句

goto转向语句,在结构化程序中基本不用goto语句

函数调用语句

表达式语句

空语句

复合语句

3.4.2最基本的语句—赋值语句

赋值运算符

复合的赋值运算符

赋值表达式

赋值过程中的类型转换

将浮点型数据赋值给整型变量时,先对浮点数取证,即舍弃小数部分,然后赋予整型变量

将整型数据赋给单、双精度变量时,数值不变,但以浮点数形式存储到变量中

将一个double型数据赋给float变量时,先将双精度数转换为单精度,即只取6~7位有效数字,存储到float型变量的4个字节中

字符型数据赋给整型变量时,将字符的ASCII代码赋给整型变量

将一个占字节多的整型数据赋给一个占字节少的整型变量或字符变量时,只将其低字节原封不动的送到被赋值的变量(即发生"截断“)

赋值表达式和赋值语句

变量赋初值

3.5数据的输入和输出

3.5.1输入输出举例

3.5.2有关数据输入输出的概念

所谓输入输出是以计算机主机为主体而言的

C语言本身不提供输入输出的语句,输入和输出操作是由C标准函数库中的函数来实现的

在程序文件的开头用预处理命令#include把有关头文件放在本程序中

3.5.3用printf函数输出数据

printf函数的一般格式

格式控制

格式声明

普通字符

输出列表

格式字符

d格式符

c格式符

s格式符

f格式符

基本型用%f

指定数据宽度和小数位数,用%m.

输出的数据向左对齐,用%-m.

e格式符

其他格式符

i格式符

o格式符

x格式符

u格式符

g格式符

3.5.4用scanf函数输入数据

一般形式:scanf

scanf函数的格式声明

使用scanf函数时应该注意的问题

scanf函数中的格式控制后面应当是变量地址,而不是变量名

如果在格式控制字符串中除了格式声明意外还有其他字符,则在输入数据时在对应得位置上应输入与这些字符相同的字符

用%c格式声明输入字符时,空格字符和转义字符中的字符都作为有效字符输入

在输入数值数据时,如输入空格,回车、Tab键或遇非法字符(不属于数值的字符),认为该数据结束

3.5.5字符输入输出函数

用putchar函数输入一个字符

用getchar函数输入一个字符

第四章 选择结构程序设计

4.1选择结构和条件判断

4.2用if语句实现选择结构

4.2.1用if语句处理选择结构举例

4.2.2if语句的一般形式

没有else子句部分

有else子句部分

在else部分又嵌套了多层的if语句

4.3关系运算符和关系表达式

4.3.1关系运算符及其优先次序

<,>=,>,>=的优先级别相同,高于==,!=

关系运算符的优先级低于算术运算符

关系运算符优先级高于赋值运算符

4.3.2关系表达式

用关系运算符将两个数值或数值表达式连接起来的式子

4.4逻辑运算符和逻辑表达式

4.4.1逻辑运算符及其优先次序

4.4.2逻辑表达式

4.5条件运算符和条件表达式

表达式

?

:



4.6选择结构的嵌套

if()if()else

elseif()else

4.7用switch语句实现多分支选择结构

4.8选择结构程序综合举例

第五章 循环结构程序设计

5.1为什么需要循环控制

5.2用while语句实现循环

只要当循环条件表达式为真(即给定的条件成立)就执行循环体语句

5.3用do···while语句实现循环

先执行循环体,然后在检查条件是否成立,若成立,在执行循环体

特点:先无条件的执行循环体,然后判断循环条件是否成立

5.4用for语句实现循环

设置初始条件,只执行一次

是循环条件表达式,用来判断是否继续循环

作为循环的调整,例如使循环变量增值,它是在执行完循环体后才进行的

5.5循环的嵌套

5.6几种循环的比较

5.7改变循环执行的状态

5.7.1用break语句提前终止循环

作用是使流程跳到循环体外,接着执行循环体下面的语句

break语句只能用于循环语句和switch语句中,而不能单独使用

5.7.2用continue语句提前结束本次循环

5.7.3break语句和continue语句的区别

continue语句只结束本次循环,而不是终止整个循环的执行

break语句则是结束整个循环过程,不再判断执行循环的条件是否成立

5.8循环程序举例

第六章 利用数组处理批量数据

6.1怎样定义和引用一维数组

6.1.1怎样定义一维数组

由哪些数据组成的数组,数组中有多少元素,属于哪个类型数据。否则计算机不会自动把一批数据作为数组处理

6.1.2怎样引用一维数组元素

在定义数组并对其各元素赋值后,就可以引用数组中的元素

6.1.3一维数组的初始化

为了使程序简洁,常在定义数组的同时给个数组元素赋值。

可以用“初始化列表”方法实现数组的初始化

6.1.4一维数组程序举例

6.2怎样定义和引用二维数组

6.2.1怎样定义二维数组

类型说明符 数组名[常量表达式][常量表达式]

6.2.2怎样引用二维数组元素

数组名[下标][下标]

6.2.3二维数组的初始化

分行给二维数组赋初值

可以将所有数据写在一个花括号内,按数组元素在内存中的排列顺序对各元素赋初值

可以对部分元素赋初值

如果对全部元素都赋初值,则定义数组时对第一维的长度可以不指定,但第2维的长度不能省

6.2.4二维数组程序举例

6.3字符数组

6.3.1怎样定义字符数组

用来存放字符数据的数组是字符数组

6.3.2字符数组的初始化

对字符数组初始化,最容易理解的方式是用“初始化列表”,把各个字符依次赋给数组中的各元素

6.3.3怎样引用字符数组中的元素

可以引用字符数组中的一个元素,得到一个字符

6.3.4字符串和字符串结束标志

6.3.5字符数组的输入输出

逐个字符输入输出

将整个字符串一次输入输出

6.3.6使用字符串处理函数

puts函数——输出字符串的函数

get函数——输出字符串的函数

strcat函数——字符串连接函数

strcpy和strncpy函数——字符串复制函数

strcmp函数——字符串比较函数

strlen函数——测字符串长度的函数

strlwr函数——转换为小写的函数

strupr函数——转换为大写的函数

6.3.7字符数组应用举例

第七章 用函数实现模块化程序设计

7.1为什么要用函数

7.2怎样定义函数

7.2.1为什么要定义函数

指定函数的名字,以便以后按名调用

指定函数类型,即函数返回值的类型

指定函数的参数的名字和类型,以便在调用函数时向它们传递数据

指定函数应当完成什么操作,也就是函数是做什么的,即函数的功能

7.2.2定义函数的方法

定义无参函数

定义有参函数

定义空函数

7.3调用函数

7.3.1函数调用的形式

函数调用语句

函数表达式

函数参数

7.3.2函数调用时的数据传递

形式参数和实际参数

实参和形参间的数据传递

7.3.3函数调用的过程

7.3.4函数的返回值

函数的返回值是通过函数中的return语句获得的

函数值的类型

在定义函数时指定的函数类型一般应该和return语句中的表达式类型一致

7.4对被调用函数的声明和函数原型

首先被调用的函数必须是已经定义的函数

如果使用库函数,应该在本文件开头用#include指令将调用有关库函数时所需用到的信息“包含”到本文件夹

如果使用用户自己定义的函数,,而该函数的位置在调用它的函数的后面,应该在主调函数中对被调用的函数作声明

7.5函数的嵌套调用

7.6函数的递归调用

7.7数组作为函数参数

7.7.1数组元素作函数实参

从实参传到形参,单向传递

7.7.2一维数组名作函数参数

除了可以用数组元素作为函数参数外,还可以用数组名作函数参数

7.7.3多维数组名作函数参数

多维数组元素可以做函数参数

可以用多维数组名作为函数的实参和形参,在被调用函数中对形参数组定义时可以指定每一维的大小,也可以省略第一维的大小说明

7.8局部变量和全局变量

7.8.1局部变量

在函数的开头定义

在函数内的复合语句内定义

在函数的外部定义

7.8.2全局变量

7.9变量的存储方式和生存期

7.9.1动态存储方式与静态存储方式

7.9.2局部变量的存储类别

自动变量(auto变量)

静态局部变量(static局部变量)

寄存器变量

7.9.3全局变量的存储类别

在一个文件内扩展外部变量作用域

将外部变量的作用域扩展到其他文件

将外部变量的作用域限制在本文件中

7.9.4存储类别小结

按作用域角度分

局部变量

自动变量,即动态局部变量

静态局部变量

寄存器变量

全局变量

静态外部变量

外部变量

按变量的生存期分

动态存储

自动变量

寄存器变量

形式参数

静态存储

静态局部变量

静态外部变量

外部变量

按变量值存放的位置分

内存中静态存储区

静态局部变量

静态外部变量

外部变量

内存中动态存储区

自动变量和形式参数

CPU中的寄存器

寄存器变量

7.10关于变量的声明和定义

7.11内部函数和外部函数

7.11.1内部函数

一个函数只能被本文件中其他函数所调用

又称为静态函数

7.11.2外部函数

在定义函数时,在函数首部的最左端加关键字

第八章 善于利用指针

8.1指针是什么

通过它能找到以它为地址的内存单元

8.2指针变量

8.2.1使用指针变量的例子

8.2.2怎样定义指针变量

类型名*指针变量名

8.2.3怎样引用指针变量

给指针变量赋值

引用指针变量指向的变量

引用指针变量的值

8.2.4指针变量作为函数参数

将一个变量的地址传送到另一个函数中

8.3通过指针引用数组

8.3.1数组元素的指针

所谓数组元素的指针就是数组元素的地址

引用数组元素可以用下标法也可以用指针法

8.3.2在引用数组元素时指针的运算

8.3.3通过指针引用数组元素

指针法

下标法

8.3.4用数组名作函数参数

在函数调用进行虚实结合后,形参的值就是实参数组首元素的地址。在函数执行的期间,它可以在被赋值

8.3.5通过指针引用多维数组

多维数组元素的地址

指向多维元素的指针变量

指向数组元素的指针变量

指向由m个元素组成的一维数组的指针变量

用指向数组的指针作函数参数

8.4通过指针引用字符串

8.4.1字符串的引用方式

用字符数组存放一个字符串,可以通过数组名和下标引用字符串中的一个字符,也可以通过数组名和格式声明“%s”输出该字符串

用字符串指针变量指向一个字符串常量,通过字符指针变量引用字符串常量

8.4.2字符指针作函数参数

函数的形参和实参可以分别用字符数组名或者字符指针变量

用字符数组名作为函数参数

用字符型指针变量作实参

用字符指针变量作形参和实参

8.4.3使用字符指针变量和字符数组的比较

字符数组由若干个元素组成,每个元素中放一个字符,而字符指针变量中存放的是地址,绝不是将字符串放到字符指针的变量中

赋值方式。可以对字符指针变量赋值,但不能对数组名赋值

存储单元的内容

指针变量的值是可以改变的,而字符数组名代表一个固定的值,不能改变

字符数组中各元素的值是可以改变的,但字符指针变量指向的字符串常量中的内容是不可以被取代的

引用数组元素

用指针变量指向一个格式字符串,可以用它代替printf函数中的格式字符串

8.5指向函数的指针

8.5.1什么是函数的指针

函数名就是函数的指针,它代表函数的起始地址

8.5.2用函数指针变量调用函数

通用函数名调用函数

通过指针变量调用它所指向的函数

8.5.3怎样定义和使用指针函数的指针变量

类型名(*指针变量名)(函数参数表列)

8.5.4用指向函数的指针作函数参数

8.6返回指针值的函数

类型名*函数名(参数表列)

8.7指针数组和多重数组

8.7.1什么是指针数组

一个数组,若其元素均为指针类型的数据,称为指针数组

类型名*数组名[数组长度];

8.7.2指向指针数据的指针变量

8.7.3指针数组作main函数的形参

参数1 参数2···参数n

8.8动态内存分配与指向它的指针变量

8.8.1什么是内存的动态分配

8.8.2怎样建立内存的动态分配

用malloc函数开辟动态存储区

用calloc函数开辟动态存储区

用realloc函数重新分配动态存储区

用free函数释放动态存储区

8.8.3void指针类型

子主题 1

8.9有关指针的小结

第九章 用户自己建立数据类型

9.1定义和使用结构体变量

9.1.1自己建立结构体类型

9.1.2定义结构体类型变量

先声明结构体类型,在定义该类型的变量

在声明类型的同时定义变量

不指定类型名而直接定义结构体类型变量

9.1.3结构体变量的初始化和引用

结构体变量名.成员名

9.2使用结构体数组

9.2.1定义结构体数组

struct结构体名

{成员表列} 数组名[数组长度]

先声明一个结构体类型,然后再用此类型定义结构体数组

结构体类型 数组名[数组长度]

={初值表列}

9.2.2结构体数组的应用举例

9.3结构体指针

9.3.1指向结构体变量的指针

指向结构体对象的指针变量既可以指向结构体变量,又可以指向结构体数组中的元素。指针变量的基类型必须与结构体变量的类型相同

9.3.2指向结构体数组的指针

9.3.3用结构体变量和结构体变量的指针作函数参数

9.4用指针处理链表

9.4.1什么是链表

一种常见的重要的数据结构

9.4.2建立简单的静态链表

9.4.3建立动态链表

在程序执行过程中从无到有的建立起一个链表,即一个一个的开辟结点和输入各结点的数据,并建立起前后相链的关系

9.4.4输出链表

9.5共用体类型

9.5.1什么是共用体类型

union 共用体名 { 成员列表} 变量列表

9.5.2引用共用体变量的方式

只有先定义了共用体变量才能引用它,但应注意,不能引用共用体变量,而只能引用共用体变量中的成员

9.5.3共用体类型数据的特点

9.6使用枚举类型

9.7用typedef声明新类型名

简单的用一个新的类型名代替原有的类型名

命名一个简单的类型名代替复杂的类型表示方法

第十章 对文件的输入输出

10.1C文件有关的基本知识

10.1.1什么是文件

程序文件

数据文件

10.1.2文件名

文件路径

文件名主干

文件后缀

10.1.3文件的分类

ASCII文件

二进制文件

10.1.4文件缓冲区

每一个文件在内存中只有一个缓冲区,再向文件输出数据时,它就作为输出缓冲区,再从文件输入数据时,它就作为输入缓冲区

10.1.5文件类型指针

通过文件指针变量能够找到与它关联的文件

10.2打开与关闭文件

10.2.1用fopen函数打开数据文件

fopen(文件名,使用文件方式)

10.2.2用fclose函数关闭数据文件

fclose(文件指针)

10.3顺序读写数据文件

10.3.1怎样向文件读写字符

10.3.2怎样向文件读写一个字符串

10.3.3用格式化的方式读写文本文件

fprintf(文件指针,格式字符串,输出表列)

fscanf(文件指针,格式字符串,输入表列)

10.3.4用二进制方式向文件读写一组数据

fread(buffer,size,count,fp)

fwrite(buffer,size,count,fp)

10.4随机读写数据文件

10.4.1文件位置标记及其定位

文件位置标记

文件位置标志的定位

用rewind函数使文件位置标记指向文件开头

用fseek函数改变文件位置标记

用ftell函数测定文件位置标记的当前位置

10.4.2随机读写

10.5文件读写的出错检测

ferror函数

子主题 2

相关思维导图模板

胡壮麟语言学第一章思维导图

树图思维导图提供 胡壮麟语言学第一章 在线思维导图免费制作,点击“编辑”按钮,可对 胡壮麟语言学第一章  进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:5142c798bac4d4a2aea3671866e5e0ff

AIGC与小学学科学习能力提升思维导图

树图思维导图提供 AIGC与小学学科学习能力提升 在线思维导图免费制作,点击“编辑”按钮,可对 AIGC与小学学科学习能力提升  进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:c0402a5c2e69014fbfcd74b2f4d18152