导图社区 C语言程序设计思维导图
干货!一图看懂C语言的基础知识!本图依照书本制作,内容涵盖C语言概述、数据类型、运算符与表达式、选择结构程序设计等八个章节的重点内容,帮助你梳理知识,精准复习,把握要点,提高成绩!
编辑于2019-09-12 07:23:46C语言程序设计
第一章(C语言概述)
程序设计语言发展过程
程序的概念
计算机语言编写的命令序列
程序的分类
机器语言(第一代)
特点
由0和1构成
面向计算机CPU,可被直接识别执行
不同CPU识别语言不同
优缺点
优点
不需要另外的翻译软件,占用空间小,执行速度快
缺点
难以理解编写修改移植
汇编语言(第二代)
用助记符和符号地址代替机器指令,需要另外的翻译软件
优缺点
优点
执行效率高,学习记忆难度下降
缺点
面向计算机硬件系统,通用性差,较难掌握
高级语言
定义
由表示不同意义的英文单词和数学符号按照一定的逻辑关系及及严格的语法规则构成
分类
面向过程的高级语言(第三代)
做什么怎么做
面向对象的高级语言(第四代)
做什么
特点
接近自然语言,便于学习记忆,通用性较强,需要另外的语言处理程序
C语言简介
特点
简洁紧凑
32个关键字,9种控制语句,一般小写
数据类型齐全
整型,实型,字符型,数组型等
运算符丰富
34种运算符,把括号和赋值等都作为运算符
是结构化语言
语法限制不太严格,程序设计自由度大
可直接对硬件进行操作
可移植性好,生成代码质量高,程序执行效率高
C语言程序结构
由一个或若干个函数组成
有且仅有一个函数名为main的主函数
程序由主函数开始执行,结束于主函数
被调用的函数可以是系统提供的库函数(将相应头文件包含到程序中),也可以是用户自定义的子函数(调用之前必须声明)
每一个函数由两部分组成
函数首部
函数第一行,包括函数类型,函数名,函数参数类型,函数参数名
函数体
说明部分
执行部分
由若干C语句组成
多种类型C语句
注释,声明,赋值,返回
必须以分号作为语句结束符
由一些基本字符组成
区分大小写字母
程序一般用小写字母
对输入输出实行函数化
本身无输入输出语句,调用scanf()和printf()
运行步骤及集成开发环境
输入和编辑源程序
形成代码文件,扩展名为“.c”
编译程序
连接程序
运行程序
第二章(数据类型、运算符与表达式)
数据类型概述(先定义类型再使用)
数据类型特征
表示形式不同
合法的取值范围不同
所占字节的数量不同
可参与的计算不同
数据类型分类
基本类型
整型
基本整型int
短整型short int
长整型long int
字符型char
实型
单精度型float
双精度型double
枚举类型enum
空举类型void
派生类型
数组类型
结构体类型struct
共用体类型union
指针类型
函数类型
基本类型数据按取值是否可以改变
常量(表示形式决定了大小和类型,不经定义直接引用)
符号常量
标识符(标识变量名、符号常量名、函数名、数组名、类型名、文件名的有效字符序列)
26个英文字母
数字0~9
下划线
符号常量(即一个标识符来表示一个常量)
使用规则
必须先定义
习惯用大写字母
一般形式
#define 标识符 常量
功能
把该标识符定义为其后的常量值
整型常量(整常数)
表示方法
十进制形式
首位不能为0
八进制形式
必须以数字0开头,%0输出形式
十六进制形式
必须以数字0加上字母x开头
在计算机内部的存放
三种进制都要转换成二进制编码来存放
不同编译系统在内存中为一个整型数据分配的字节数是不同的
整型常量属于数值型数据,在二进制编码的基础上以补码形式存储
正数的补码和原码相同
负数的补码是将该负数的绝对值的二进制形式按位取反再加一
实型常量(即实数,带有小数部分的数据,也叫浮点数)
表示方法
十进制小数形式
数的符号
“+”可以忽略
小数点(必须有)
“23.”“.55”是正确形式
数字
指数形式
尾数
字母E或e
指数
在内存中的存放形式
实型数据以指数形式存储
尾数、指数部分所占字节由编译系统自己决定,尾数指数转换成对应的补码
尾数部分所占字节数愈多,精度愈高
指数部分所占字节数愈多,表示的数值范围愈大
字符常量
定义
用单引号括起来的一个字符
转义字符
作用
解决不可印刷字符的输入问题
形式
以“\”开头,后跟字母(不同于字符原有的意义)
常用转义字符:课本16页
说明
只能是一个字符
大小写不同者不相等
只能用单引号括起来
单引号是定界符,不属于字符型数据
字符可以是字符集中的任意字符
数字被单引号括起来被定义为字符型后就不参与数值运算,就成了字符常量
存放形式:一个字节存放一个字符,字符以ASCII码的二进制形式存放(与整数的存储形式很相似,与整型数据通用)
字符串常量
定义
C语言中,用一对双引号括起来的字符序列
说明
字符串常量由一或多个字符构成,可以是一个字符
所占字节数等于字符个数加一,增加的字节中存放一个字符'\0',它是ASCII码值为0的空操作符,无动作,不显示,仅仅做字符串结束标志
变量
概念及应用
概念
程序执行过程中值可以改变的量
一个变量必有一个名称,用标识符来表示
使用之前先定义数据类型(变量名不能表示数据类型)
命名
必须满足C语言中标识符的命名规则
见名知意
大小写不同则不同
变量名长度最好不超过8个字符
定义
一般格式
对变量的定义放在函数体的开头部分
类型说明符 变量名表;
注意
类型说明符必须是C语言中存在的数据类型
变量名表是以逗号相间隔的、用标识符代表的变量名
变量一经定义,系统就为变量分配内存单元
变量名代表内存单元的地址
变量值是内存单元中的数据
整型变量
分类
基本整型:int
短整型:short、short int
长整型:long、long int
另外情形(充分利用存储空间,引入无符号类型)
分类
整型变量
有符号型
有符号基本整型(signed)
有符号短整型(signed)short(int)
有符号长整型(signed)long(int)
无符号型
无符号基本整型unsigned int
无符号短整型unsigned short(int)
无符号长整型unsigned long(int)
无具体说明,默认为有符号型
整型数据的溢出
实型变量
分类
单精度型:float
双精度型:double
定义的一般形式:float或double 变量名列表;
精度与舍入误差:课本21页
字符型变量
一般形式
char 变量名列表;
作用
存放字符常量,一个字符变量只能存放一个字符
一个字符变量占一个字节,一个字节中存储一个字符,只能存放0到255之间的数
对于字符数据整型数据通用性的理解:课本23页
算术运算符和算术表达式
算术运算符
种类
+、-、*、/、%
说明
两整数相除结果取商的整数部分
%要求参与运算对象为整型或字符型数据,结果符号与被除数相同
+、-、*、/只要有一个运算对象是实型数据,结果也为实型数据
优先级与结合性
优先级:先乘除和求余,后加减
结合性:同级运算,自左向右
自增、自减运算符(课本26页)
++i、--i
i++、i--
注意点
仅一个参与运算的对象
-(i++)课本27页
只对变量有效,对常量和表达式无效
作用
循环
用于指针变量中,使指针指向下一个地址
算术表达式
用C语言允许的算术运算符将各种运算对象连接起来且符合一定的语法规则的式子
赋值运算符和赋值表达式
赋值运算符
作用:将赋值号右边的常量或表达式的值赋给赋值号左边的变量
性质:优先级较低,低于算数运算符,右结合型(自右向左):x=y=9,先算y=9
注意:赋值号左边必须为变量而非表达式
赋值表达式及其值
定义:由赋值运算符将一个变量和一个表达式连接起来的式子
一般形式:<变量名><赋值运算符><表达式>,例x=8
复合赋值运算符
概念:“=”前面加上其他运算符
分类
算术符合运算符:+=、-=、*=、/=、%=
有关位运算:<<=、>>=、&=、^=、|=
逗号运算符和逗号表达式
一般形式:表达式1,表达式2
规则:先求表达式1,再求表达式2,以表达式2的值作为整个逗号表达式的值
特点:优先级最低的运算符,小心括号的存在,有时逗号做间隔符
数据类型转换(针对不同类型数据之间的换算)
自动转换
特点:由编译系统自动完成
规则
按数据长度增加的方向进行,以保证精度不降低
转换方向:int、unsigned、long、double
单精度参与双精度运算,必先转换为双精度
char、short型参与运算,必先转换为int型
必须进行的转换,即必定转换
赋值表达式中数据类型的转换:以左边变量类型为准,先转换再赋值,右比左长有丢失
强制转换
概念:通过类型转换运算符实现
一般形式
(类型说明符)(表达式)
示例
(int)x不等于int x
(int)(x+3)不等于int x+3
特点:得到一个转换后的表达式的值,不改变变量原来的类型
运算符(课本24、25页总结)
顺序结构程序设计
结构化程序设计方法
自顶向下、逐步求精、模块化
程序的结构
三种基本机构
顺序结构
选择结构
循环结构
三种基本结构的特征
一入一出,必到有完
C语句概述
通过语句将数据及对数据的处理要求表达出来
分类
简单语句
表达式语句:表达式;(表达式+;=语句 语句不可以做为一个整体出现在表达式中)
函数调用语句:函数名(参数表);例:y=fabs(x);
空语句:;
特点:仅由分号构成,编译时不产生任何指令,执行时不进行任何操作
应用
起到延迟的作用
可以为模块化程序中未实现的函数预留位置
复合语句:{一条或多条语句}
各条子语句以分号结尾,大括号外不加分号
控制语句
结构化语句
if、switch
选择结构语句
while、do-while、for
循环结构语句
非结构化语句
break
continue
return
goto
其他语句
程序的注释
作用:对程序或程序行的说明,便于阅读
特点:计算机不执行
注释符分类
/*注释文本*/
//注释文本
地位:必要的注释是程序的重要组成部分
注释分类
功能性注释:注释程序、函数及语句块的功能
说明性注释:注释变量或单个语句
程序注释原则
一个程序至少一条注释语句
对主要变量及重要语句块加注释说明其功能
数据的输入和输出
对于不确定的数据,通常使用输入函数获得数据
程序中至少一个输出语句
输入和输出的实现
通过C标准库函数的函数实现,见课本41页
使用标准库函数时,要用预编译命令将有关的头文件包括到用户文件中
使用格式
#include"stdio.h"
#include<stdio.h>
字符数据输入和输出函数(只能实现单个字符的输入和输出)
C语言中,专门用于字符数据输入和输出的函数是:getchar()和putchar()
字符输入函数getchar()
一般形式
getchar()
功能
从键盘输入一个字符
特点
没有参数
程序执行到该函数,程序暂停,光标在控制台程序窗口闪动,从键盘输入数据并回车,程序继续执行
把getchar()函数的值保存在字符变量中,如:ch=getchar();
字符输出函数putchar()
一般形式
putchar(参数)
说明
参数可以是数值、字符常量或变量、及算术或字符表达式
功能
计算参数的值并取整,以字符形式输出到屏幕上
输出格式及代替格式
输出格式
putchar(参数);putchar(’\n');
代替格式
putchar(getchar());
printf("%c",getchar());
格式输入和输出函数
格式输入函数scanf()
作用
按用户指定的格式从键盘把数据输入到指定的变量中
变量值不确定时,通过该函数为变量赋值
一般形式
注意
输入数据的格式要和控制字符串的格式一致
地址表列中,注意加&
不允许规定精度,格式控制串中不可以出现.2f类的
格式控制字符串加双引号
scanf(格式控制字符串,地址表列);
格式控制字符串
由%和格式字符组成
地址表列
由取地址符&和变量名组成
变量的值不等于变量的地址
a=57,a是变量名,57是变量值,&a是变量a的地址
&a表示变量a的地址
格式说明的一般形式
%附加符 输入宽度 长度 格式字符
格式字符(格式符、类型字符)
作用
表示输入输出数据的类型
常用格式字符表见课本44页
注意:整型与字符型不再通用,分别以自己的格式输入
附加符
见课本44页
注意事项
格式说明中可以插入普通字符等非格式字符
格式符可以没有间隔,除去%c外其余输入数据时用空格或回车键作为间隔
使用%c输入一个字符时,空格字符和转义字符都必须作为有效字符输入
格式说明符中,尽量不要指定宽度
输入和输出数据类型不一致时,编译可过,结果难定对错
子主题
格式输出函数printf()
作用:按用户指定的格式,把数据显示到屏幕上
一般形式
printf(格式控制字符串,输出表列)
格式说明的一般形式
%附加符 输出最小宽度 .精度 长度 格式字符
整型与字符型在输出时可以相互转换,课本47页
附加符
输出最小宽度m
实际位数多于定义宽度,按实际位数输出
少于,则填空格
精度格式符(小数点开头,后跟十进制整数)
输出数字则表示小数位数
输出字符串则表示字符个数
长度附加符为l
长整型%ld
双精度%lf
选择结构程序设计
关系运算符和关系表达式
关系运算符及其优先级和结合性
关系运算符
六种
优先级
<、≤、>、≥优先级相同,较高
==、!=优先级相同,较低
结合性
同级自左向右
关系表达式
一般形式
表达式1 关系运算符 表达式2
关系表达式的值
真1
假0
逻辑值的数值特性
任何非0数据为真,0为假
C语言的逻辑值按数值处理,真1假0
算术表达式可以作为选择结构的条件表达式(结果非0为真,0为假)
结论
关系表达式具有数值特性,可以参与算术运算
算术表达式具有逻辑特性,可以作为选择结构的条件表达式
使用关系运算符应注意的问题
优先级:算术运算符>关系运算符>赋值运算符
=是赋值,==是要求判断左右是否相等
判断实型变量a的值是否为0,应写成a<1e-6
关系运算符的两端又可以是一个关系表达式
逻辑运算符和逻辑表达式
逻辑运算符及其优先级和结合性
逻辑运算符
书写形式
逻辑运算法则
优先级
非与或
结合性
非,自右向左
与和或,自左向右
逻辑表达式
用逻辑运算符将算术、关系、逻辑表达式连接起来的式子
使用逻辑运算符应注意的问题
逻辑运算的短路特性
能确定即停止
逻辑表达式使用特例
a>b>c必须写成a>b&&b>c
if语句
三种基本形式
if-else双分支结构
一般形式及语义
表达式的合法范围
if单分支结构
嵌套多分支结构
if与else的配对原则
条件运算符和条件表达式
条件运算符
使用场景:只执行单个赋值语句
功能:使程序简洁,提高效率
?和:(注意它们不是分开的,C语言中唯一的三目运算符,即有三个参与运算的量)
结合方向:自右向左
条件表达式和求值规则
一般形式
求值规则
具有特殊功能的条件表达式:课本75面
适用范围:特殊的双分支情况
注意的问题
符号整体性
表达式的值的类型
为表达式中级别最高的数据类型
运算优先级
低于关系、算术运算,高于赋值运算
嵌套情况:自右向左
switch语句(开关语句)
一般形式及运行说明
注意事项
关于表达式
对结果取整
关于case
后面至少一个空格
常量必须为整数或结果为整数的表达式
不得有变量
关于{}
关于子句先后顺序
关于执行语句共用性
关于嵌套
循环结构程序设计
三种循环结构语句(循环体语句可以是空语句)
条件循环(循环次数未知)
while
一般形式
循环体及循环控制变量
do-while
一般形式(while(表达式)后面必须加分号)
循环次数至少为一次
计数循环
for
一般形式
括号中的表达式可以省略,但分号不可以省略,表达式显现于其他地方
括号左右端表达式可以是逗号表达式,中间表达式可以是数值表达式或字符表达式
break语句和continue语句
C语言中,三种循环结束方式
正常结束
非正常结束
break、continue
break
continue
形式、功能、使用范围的对比
循环嵌套
注意事项
循环体的包含与交叉
内外层的转向与转入
并列与嵌套的变量名
总次数计算
综合程序设计
穷举法
递推法
迭代法
数组
数组的引入
数组的概念及归属
分类
按组织的形式(下标个数)
按数组内数据的类型
功能
认识
共个性
数组元素
数组名
下标
说明方法
一维数组
定义
一般形式
功能
说明
引用
一般形式
说明
下标自动取整
下标做循环控制变量
下标越界不报错
数组元素互相赋值
存储
初始化
定义
一般形式
说明
多维数组
定义
一般形式
功能
说明
数组元素引用
一般形式
输入输出
存储
初始化
一般形式
特殊说明
字符数组
定义与初始化
定义区分及一般形式
存储特点
初始化
用字符型数据初始化
一般形式
变形
省略数组长度,不省略'\0'
省略数组长度,且省略'\0'
不是字符串,是字符数组
用字符串常量初始化
一般形式
变形之省略数组长度
输入和输出
针对单个(%c)
针对整体(%s)
scanf函数
对比注意
&
分隔符
字符串输入输出专用函数(数组中可以整体输入输出的只有字符串)
gets()
puts()
格式、功能、注意点
字符串处理函数(使用前加入预处理命令)
测长(可控制结束)
连接
复制及扩展格式
比较
小大转
小转大
大转小
格式、功能、说明
函数
函数引入
简述
特点
地位
本质
应用
两个理解、两个看法
两个问题情况
函数定义
需要定义的方面
从定义角度分类、区别、注意点
一般形式
说明
函数首部
函数体
return语句的作用、注意点(一致性、无返回值情况)、一般形式
构成
函数调用
前言
对于调用的理解
方法
无参函数的调用
加()
带参函数的调用
对号入座给出实参表,调用时无需类型声明
函数的调用方式(按函数调用在程序中出现的形式和位置来分)
函数语句
函数表达式
函数实参
调用的一般形式
数据传递
形参与实参的区别
单向值传递
过程
过程描述
注意点
确定性
兼容性
对应性
单向性
一致性
返回值
通过return语句返回,0或1个返回值
return语句注意点
单个return
立止性
有无void
决定性
函数声明
形式
一般形式
两个注意点
位置
两个位置及区别
注意点、区别点表格
前言理解
函数的嵌套调用和递归调用
嵌套
不允许有嵌套的函数定义
递归
数组作为函数参数
变量的作用域及存储类别
多文件程序
switch语句与多分支if语句的比较
三大组成部分
示例
25.6e-5,25.6是尾数部分,-5是指数部分,字母E可以大写或小写
规则
字母前必须有数字,后必须为整数
对应关系
数学上的指数表示形式:±尾数×10(±n次方)
C语言中的指数表示形式:±尾数E(e)±指数(n)
规范化表示
小数点左边有且只有一位非0数字
三大组成部分