导图社区 C程序设计
本导图汇总了C程序设计的知识点,包含了解C语言、算法、顺序程序设计、文件、建立数据类型、指针、函数、数组、循环结构程序设计。
编辑于2021-12-08 02:52:28C程序设计
了解C语言
关于程序
概念
程序就是一组计算机能识别和执行的指令
计算机语言的发展
机器语言
符号语言
即为汇编语言
高级语言
非结构化的语言
结构化语言
面向对象的语言
即我们学习的C++
程序设计的任务
问题分析
设计算法
编写程序
对源程序进行编辑、编译和连接
运行程序,分析结果
编写程序文档
源程序(.c)——目标程序(.obj)——可执行程序(.exe)
关于C语言
特点
语言简洁、紧凑,使用方便、灵活
运算符丰富
数据类型丰富
具有结构化的控制语句
语法限制不太严格,程序设计自由度大
C语言允许直接访问物理地址,能进行位操作, 能实现汇编语言的大部分功能,可以直接对硬件进行操作
用C语言编写的程序可移植性好
生成目标代码质量高,程序执行效率高。
结构
预处理指令
例如:#include<stdio.h>就是读取stdio.h头文件的内容
全局声明
在main函数外声明的变量成为全局变量
函数定义
函数是C语言主要组成部分
函数首部
函数体
声明部分
执行部分
函数结构
例如:void main():int max()等
注意事项
程序总是从main函数开始执行的
程序中要求计算机完成的操作是由函数中的C语句完成的
在每个数据声明和语句的最后必须有一个分号
C语言本身不提供输入输出语句
程序应当包含注释
运行步骤
上机输入和编辑源程序
对源程序进行编译,先用C编译系统提供的“预处理器”对程序中的预处理指令进行编译预处理
进行连接处理
运行可执行程序,得到运行结果
数制
十进制数,二进制数,八进制数,十六进制数
算法
算法+数据结构=程序,算法是程序的灵魂
特性
有穷性
一个算法应包含有限的操作步骤,而不能是无限的
确定性
算法中的每一个步骤都应当是确定的
有零个或多个输入
输入是指在执行算法时需要从外界取得必要的信息
有一个或多个输出
算法的目的是为了求解,而解就是输出
有效性
算法中的每一个步骤都应当能有效地执行,并得到确定的结果
表示方法
用自然语言表示算法
用流程图表示算法
要求:认清起止框,输入输出框,判断框,处理框,流程线,连接点,注释框
三种基本结构
顺序结构
选择结构
循环结构
当型循环结构
直到型循环结构
结构化程序设计方法
自顶向下
逐步细化
模块化设计
结构化编码
顺序程序设计
优先级:1、初等运算符([]、()、结构体成员.、->) 2、单目运算符(负号-、~取反、++、--、取值*、求址&、逻辑非!)、强制转化运算、长度运算符sizeof() 3、算术运算符(*/%高于+-)>左移、右移>关系运算符(>、>=、<、<=高于==、!=) 4、按位与&>异或^>或|>逻辑运算符(逻辑与&&>逻辑或||) 5、条件运算符(表达式1?表达式2:表达式3)>赋值运算符(=、%=、*=、/=、+=、-=、<<=、>>=、^=、&=、|=) 6、逗号运算符
数据类型
基本类型
如:常量
整形
基本整型 int(4字节)
长整型 long int(2字节)
短整型 short int(4字节)
无符号整形 unsigned
实形(浮点型)
单精度实形 float(4字节)
双精度实形 double(8字节)
长双精度实形 long double(8字节)
字符型 char(1字节)
枚举类型
构造类型
数组类型
结构体类型
共用体类型
指针类型
空类型
C语句
控制语句
if语句,for语句,while语句,continue,break,switch,return,goto
函数调用语句
表达式语句
空语句
复合语句
输入输出
数据
用scanf函数输入数据
用printf函数输出数据
字符
用getchar函数输入一个字符
用putchar函数输出一个字符
文件
概念
类型:文本文件(数据序列)和二进制文件(结构序列、数据序列)
存取方式:顺序存取、直接存取
打开与关闭
打开:fopen(文件名,文件使用方式);
常见方式:r只读;w写,会覆盖原有文件内容;r+读写;w+建立新文件去写,若指定文件已存在,则原有内容全部消失;wb+与w+相同,但可以由位置函数设置起始位置
注意:无论使用什么使用方式,打开文件出现错误都会返回NULL
关闭:fclose(文件指针)
完成操作,应关闭文件,否则会导致丢失 执行操作后,若成功则返回0,失败则返回非0
读写
文本文件:fread(buffer,size,count,fp);fwrite(buffer,size,count,fp); buffer:一个指针变量,用于接收数据的内存地址,大小至少是size*count字节;size:要读写的字节数;count:指定数据块的个数(每个数据块有size个字节);fp:文件类型指针
二进制文件:fscanf(文件指针,格式字符串,输入列表); fprintf(文件指针,格式字符串,输出列表); 用于文本文件
fgets(str,n,fp); fputs(str,fp); str:要输出的字符;fp:文件指针,字符串末尾的\0不输出
1、rewind(fp);指针重新返回到文件的开头 2、fseek(文件指针,位移量,起始点);重新定位(0文件开始;1文件当前位置;2文件末尾) 3、feof()判断是否指向文件尾部,若是,则为真,返回非0;否则为假,返回0. 4、ftell();获取文件当前位置; 5、fputc(ch,fp);把ch的字符写到fp中; ch=fgetc(fp);从fp中读取数据写入ch;
建立数据类型
typedef:typedef 类型名 标识符 用来说明一种新类型名
结构体类型: struct 结构体名 {成员列表};
方式:1、可以再声明结构体名时定义变量名;2、可以先声明结构体名再定义变量名;3、可以不声明结构体名直接定义变量名,但这样的结构体不能重复使用
成员引用:1、变量名.结构体成员名 2、指针变量名->结构体成员名 3、(*指针变量名).结构体成员名 如果是嵌套,则需要层层写出来
链表
指针
指向普通变量的指针变量和指向指针的指针变量
指向数组的指针
字符串指针
指向函数的指针
数据类型(*指针变量名)()
指针数组
函数
函数的定义
是C语言中模块化程序的最小单位
定义函数
指定函数的名称
指定函数的类型
指定函数的参数的名字和类型
指定函数应当完成什么操作,也就是函数是做什么的,即函数的功能
形参实参
形参
函数定义时的参数
实参
函数调用时的参数
变量的作用域和存储类型
局部变量
静态局部变量
动态局部变量
全局变量
外部变量
静态外部变量
数组
普通数组
一维数组
类型说明符 数组名[常量表达式](可以通过赋初值来定义大小,方括号中的表达式可以省略)
二维数组
类型说明符 数组名[常量表达式(行)][常量表达式(列)](同一维数组一样可以通过赋初值定义大小,行表达式可以省略,但列表达式不能省略)
字符数组
字符串处理函数 (调用前必须在程序前面 的命令行包含标准头文件 “string.h”)
puts()输出字符串
gets()输入字符串
strcpy(字符数组1,字符数组2)将2的内容复制到1
strcat(字符串1,字符串2)将2的内容连接到1后面
strlen(字符数组)计算长度
strcmp(字符数组1,字符数组2)比较ASCII值,以第一个不同处的值为结果,1大,则值大于0,相等则为0,1小则值小于0
循环结构程序设计
循环语句
while
形式:while(表达式)循环体
执行:表达式为非0时,执行语句,继续循环,为0时,退出循环
do……while
形式: do{ 循环体语句 }while(表达式)
执行:先执行语句,再判断,表达式为真时,则返回重新执行,为假时,循环结束
注意:1、do不能独立出现2、无论条件是否成立,都会先执行一次循环体语句
for
形式:for(表达式1;表达式2;表达式3)循环体语句
执行:先求1,再求2,2为真,则执行语句后再求3,继续循环;若2为假,则退出循环,不执行语句
注意:1、表达式1只在开始执行一次2、可以省略表达式,但是不能省略分号; 3、省略表达式2会进入死循环
循环嵌套
可以互相嵌套,但必须保证结构完整
结束语句
break
作用:提前结束循环
注意
只能出现在循环体和switch语句
continue
结束本次循环,继续下一次循环的判定
选择结构程序设计
表达式
关系表达式:由关系运算符连成的表达式,自动转化格式,0表示假,非0为真(>、>=、<、<=高于==、!=)
逻辑表达式(!>&&>||):逻辑运算符与运算对象(具体的值或合法表达式)组成。运算符不能连用,1真0假
语句
if
1. if(表达式) 语句1 2 .if(表达式) 语句1 else 语句2 3. if(表达式1)语句1 else if(表达式2) 语句2 else if(表达式3) 语句3
注意事项:1、多条语句应使用{}2、else采用就近原则3、可以嵌套
条件运算符
1.< 2.<= 3.> 4.>=
优先级相同(高)
5.== 6.!+
优先级相同(低)
switch(多分支)
形式:switch(表达式)(后面可以加:) { case 常量表达式1:语句1 case 常量表达式2:语句2 …… case 常量表达式n:语句n default:语句+1 }
注意:1、case语句标号后的语句可以不写2、case语句标号的的值不能重复 3、default可以出现在语句体中任意位置,也可以没有