C语言完整版课件全套ppt教学教程最全整套电子讲义幻灯片(最新).ppt
《C语言完整版课件全套ppt教学教程最全整套电子讲义幻灯片(最新).ppt》由会员分享,可在线阅读,更多相关《C语言完整版课件全套ppt教学教程最全整套电子讲义幻灯片(最新).ppt(447页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C语言程序设计,知识结构单元,1 基本语法,1.1 字符集、标识符和关键字 1.2 常量和变量 直接常量的表示方法 符号常量的定义方法 变量的定义方法 变量的存储空间大小及变量的值 变量的作用域与存储类型 1.3 基本数据类型 整型数据 实型数据,字符型数据 字符串常量 枚举型数据,1.4 运算符与表达式 算术运算符与算术表达式 关系运算符与关系表达式 逻辑运算符与逻辑表达式 赋值运算符与赋值表达式 逗号运算符与逗号表达式 条件运算符与条件表达式 求字节运算符 位运算符 1.5 运算符的优先级、结合性和表达式的求值 1.6 数据类型转换,自动转换 强制转换 1.7 基本输入输出函数 scanf
2、( )与printf( ) getchar( )与putchar( ) gets( )与puts( ) 1.8 编译预处理 宏定义 文件包含 条件编译 1.9 类型定义 typedef,2 控制结构,2.1 结构化程序的三种基本结构 2.2 语句种类 表达式语句 说明语句 函数调用语句 空语句 复合语句 控制语句 2.3 分支结构与分支语句,if语句的形式和执行流程 嵌套的if语句的形式和执行流程 switchcase语句的形式和执行流程 2.4 循环结构与循环语句 while语句的形式和执行流程 dowhile语句的形式和执行流程 for语句的形式和执行流程 循环语句的嵌套 2.5 非结构化
3、控制语句 break语句 continue语句 goto语句,2.6 基本算法的实现 递推法 迭代法 穷举法 递归法 辗转相除法求最大公约数 求素数(质数) 求水仙花数 输出九九乘法表 输出特殊图形(如等腰三角形、平行四边形等),3 函数,3.1 标准函数与用户自定义函数 3.2 函数的定义与调用 函数的定义形式 函数的调用形式 函数调用前的声明 实参、形参及参数传递 函数的返回值及其类型 3.3 函数的嵌套调用与递归调用 3.4 常用库函数的调用格式及其头文件,4 数组,4.1 数组的概念 数组及数组元素(下标变量) 数组的用途 数组元素的存储结构(便于寻址) 4.2 一维数组 一维数组的定
4、义和初始化方法 一维数组的逻辑结构和存储结构 一维数组元素的引用 一维数组的输入与输出,4.3 二维数组 二维数组的定义和初始化方法 二维数组的逻辑结构和存储结构 二维数组元素的引用 二维数组的输入与输出 4.4 字符数组和字符串 一维字符数组的定义和初始化方法 一维字符数组的输入与输出 用字符数组实现字符串 字符串的输入输出方法,4.5 常用算法的实现 冒泡法排序、选择法排序 顺序查找、折半查找 删除法 插入法 在一组数中求最大值和最小值 将数组元素逆置 输出杨辉三角形 求转置矩阵,5 指针,5.1 指针的概念和指针的定义 变量的地址和变量的值 指针和指针变量 指针的定义形式 多级指针 指针
5、运算符和地址运算符 5.2 指针的赋值和运算 指针的初始化和赋值 指针运算,5.3 指针和函数 指针作函数的参数及参数的传递形式 指针函数的定义形式 指向函数的指针 5.4 指针和数组 数组名是常量指针 一维数组元素的指针表示 二维数组元素的指针表示 指向数组元素的指针 指向一维数组的指针 指向含M个元素的一维数组的指针,5.5 指针数组 指针数组的定义 用字符型指针数组实现字符串数组,6 结构体和共用体,6.1 结构体类型与结构体变量 结构体类型的用途 结构体类型的定义 结构体变量的定义 结构体变量的引用(成员运算符) 6.2 结构体数组 结构体数组的定义 结构体数组的初始化和赋值 6.3
6、结构体类型数据的指针,结构体变量的指针 结构体数组的指针 6.4 结构体与函数 结构体指针和结构体变量作函数的参数 返回结构体类型数据的函数 6.5 结构体位段 6.6 共用体类型和共用体变量 共用体类型和共用体变量的定义 共用体变量的引用 6.7 枚举类型和枚举型变量 枚举类型的定义 枚举型变量与枚举元素,7 文件操作,7.1 文件的基本概念 文件、文件名、扩展名 流式文件 文件的分类 缓冲文件系统和非缓冲文件系统 FILE结构和FILE指针变量 7.2 文件的打开与关闭 文件的打开与打开函数 fopen( ) 文件的关闭与关闭函数 fclose( ),7.3 文件的读写操作 读写一个字符的
7、函数 fgetc( )和fputc( ) 读写一个字符串的函数 fgets( )和fputs( ) 读写一个数据字块的函数 fread( )和fwrite( ) 文件的格式化读写函数 fscanf( )和fprintf( ) 7.4 文件定位与随机读写 文件位置指针随机定位函数 fseek( ) 检测当前位置指针的位置函数 ftell( ) 文件位置指针复位函数 rewind( ) 检测文件是否结束的函数 feof( ),链表,引用自身的结构和链表的概念,结构中的某个成员项,为指向该结构类型自身的指针,则称为引用自身的结构。,struct node int num ; struct node
8、*next ; ;,指向自身的结构。,链表的概念 链表是一种动态存储分配结构,通过指针相连,数据可以不连续存放。 如用数组存放数据时,必须事先定义固定的长度(即元素的个数)。如果事先难以确定元素的个数,则必须把数组定义的足够大,显然这会造成内存的浪费。链表则没有这种缺点,它根据需要开辟内存单元。,链表(单向链表),链表有一个“头指针”变量,它存放一个地址,该地址指向一个元素。链表中每个元素称为“结点”,每个结点都应包含两个部分:用户需要用的实际数据和下一个结点的地址。最后一个结点不指向其他元素,它称为“表尾”,它的地址部分放一个“NULL”,链表到此结束。 链表中各元素不是连续存放的。要找某一
9、元素,必须要找到上一个元素,根据它所提供的下一元素的地址才能找到下一个元素。如果不提供头指针,则整个链表都无法访问。 这种链表的数据结构,必须利用指针变量才能实现,即一个结点中应包含一个指针变量,用它存放下一结点的地址。,2、简单链表 例:建立一个简单的链表,由3个学生数据的结点组成。 #include /*a7.c*/ struct student int num ; float score ; struct student *next ; ; main() struct student a,b,c,*head,*p; a.num=101; a.score=89.5; b.num=102;
10、b.score=90; c.num=103; c.score=56; head= ,实例运行,上例是比较简单的,所有结点都是在程序中定义的,不是临时开辟的,也不能用完后释放,这种链表称为“静态链表”。 前面讲过,链表结构是动态生地分配存储的,即在需要时才开辟一个结点的存储单元 以便插入或追加节点,删除节点后需要释放节点占用的内存单元。C 语言提供了相应的函数。,3.处理动态链表所需的函数, void *malloc(unsigned int size) :在内存的动态存储区中分配一个长度为size的连续空间。成功,则返回一个void型的空指针,否则,返回NULL.,使用方法: ptr=mall
11、oc(size);,分配内存的字节数。,返回空类型的指针。 成功:返回内存的地址。 失败:返回NULL。,ptr,void free(ptr) 作用: 释放ptr指向的内存空间。,(3)void *calloc(unsigned n,unsigned size) 在内存的动态区存储中分配个长度为size的连续空间。函数返回分配域的起始地址;如果分配不成功,返回。,4.建立动态链表,例:写一函数建立一个有多名学生数据的单向动态链表。(当学号输入为0时,表示链表建立结束) 算法: 设3个指针变量:head,p1,p2,都是指向结构体类型数据 head:存放第1个结点的地址,即头指针 p1:指向当前
12、新开辟的结点 p2:指向前一个结点(即已建成的链表中的最后一个结点),所谓建立动态链表是指在程序执行过程中从无到有地建立起一个链表,即一个一个地开辟结点和输入各结点数据,并建立起前后相链的关系。,结构体的定义: #include #define LEN sizeof(struct student) struct node int num; struct node *next; ;,建立链表的函数: struct node *creat() struct node *head,*last,*p; int num; head=last=NULL; scanf(%d, ,5.输出链表,将链表中各结点
13、的数据依次输出。首先要知道链表第一个结点的地址,也就是要知道head的值。然后设一个指针变量p,先指向第一个结点,输出p所指的结点,然后使p后移一个结点,再输出,直到链表的尾结点。,void output(struct node *head) struct node *p; p=head; while (p!=NULL) printf(%3d,p-num); p=p-next; ,main() struct node *head; head=creat(); output(head); getch(); ,6.对链表的删除操作,已有一个链表,希望删除其中某个结点。,A,B,C,D,E,A,B,
14、C,D,E,原来链表,将C从链表中删除,例:写一函数以删除动态链表中指定的结点。 思路: 从P指向的第一个结点开始,检查该结点中的num的值是否等于要删除的那个学号。如果是,就将该结点删除,不是,就将指针p后移一个结点,直到遇到表尾为止。 设两个指针p1,p2,p1为当前结点,p2指向刚才检查过的结点。 找到要删除的结点,又有两种情况: A.要删除的是第一个结点 B.要删除的不是第一个结点,head=p1-next,p2-next=p1-next,删除结点的函数: struct student *del (struct student *head,int num) struct student
15、 *p1,*p2; if (head=NULL) printf (nlist is nulln); p1=head; while (p1-num!=num ,7.对链表的插入操作(在尾部追加节点),步骤: 为新节点分配内存。 建立新节点的成员项。 建立链接关系。,在链表最后插入一个结点: struct student *Add(struct node *head) struct student *p1, *p2,*p3; p1=head; if(head!=NULL) while(p1-next!=NULL) p1=p1-next; p2=(struct node*)malloc(sizeof
16、(struct node); scanf(%d, ,C 语 言 程 序 设 计,主 讲:叶 斌 E-mail: ,2021/7/16,37,课程安排,总学时: 56学时(理论32学时 实验24学时) 教材: C语言程序设计 (第一版). 叶斌,陈世强主编,北京:科学出版社,2012年6月 参考教材: C语言程序设计(C99版) .陈良银, 游洪跃, 李旭伟主编. 北京: 清华大学出版社, 2006 C语言程序设计(第四版)谭浩强著.北京:清华大学出版社,2010 C语言程序设计教程(第2版).李丽娟主编.北京: 人民邮电出版社, 2009,2021/7/16,38,第1章 C语言及程序设计概述
17、,【学习目标】 掌握程序、程序设计语言及程序设计方法等基本概念;了解计算机求解问题的基本过程;了解C语言的发展及特点;掌握C语言程序的基本结构以及C语言的基本语法单位;掌握C语言程序的开发过程与开发环境。 【重 难 点】 重点:程序设计语言与程序设计方法的基本概念,C语言基本语法单位以及C语言程序的基本结构。 难点:计算机求解问题的基本过程,C语言源程序生成可执行程序的过程。 【教学安排】 学时:2学时,2021/7/16,39,1.1 程序与程序设计语言,1.1.1 程序的概念 什么是计算机程序? 计算机程序是指可以被计算机或其他信息处理装置连续执行的一条条指令的集合。 程序是一组有序的指令
18、(是能够完成特定任务的指令序列)。 使用程序设计语言编写的用来使计算机完成一定任务的一系列命令的集合便构成程序。 编写程序的工作则称为程序设计。,2021/7/16,40,1.1 程序设计语言与程序设计,什么是程序设计语言? 为人和计算机之间都能识别和交流而制定的一种特定语言,这种特定的语言就是程序设计语言。 可以从不同的角度对程序设计语言进行分类:,低级语言,高级语言,从应用范围分,从程序设计方法分,从与机器的联系程度分,2021/7/16,41,只有用机器语言编写的程序才能在计算机上直接执行,用其他语言编写的源程序都需要翻译后才能被计算机所理解并执行。用于语言翻译的工具称为语言处理程序或翻
19、译程序,用不同的程序设计语言编写出来的源程序,需要使用不同的语言处理程序来翻译。通过语言处理程序翻译后的目标代码称为目标程序。,1.1 程序设计语言与程序设计,2021/7/16,42,高级语言源程序的翻译方式: 解释方式解释程序,编译方式编译程序,1.1 程序设计语言与程序设计,2021/7/16,43,1.1 程序与程序设计语言,1.1.2 程序设计语言的发展 人们常把编写程序的过程称为程序设计。在进行程序设计时离不开程序设计语言。程序设计语言的种类很多,从其发展历史以及功能情况来划分可以大致划分成五个阶段: 1、机器语言: 计算机可以直接识别和执行的二进制语言。 如: 加法指令: 1 0
20、 0 0 0 0 0 0 减法指令: 1 0 0 1 0 0 0 0 特点:计算机可以直接识别和执行,效率高,节省内存;但难以阅读和记忆。,2021/7/16,44,1.1 程序与程序设计语言,2、汇编语言: 用“助记符”来表示机器指令。 如: ADD A, B SUB A, B 计算机不能直接识别和执行用汇编语言编写的源程序,它必须经过一个叫汇编程序的系统软件翻译成机器语言程序(即目标程序)后才能执行。 3、算法语言: 即高级语言,不依赖于机器,降低了编程的难度。 如:C、PASCAL、FORTRAN等,用+和-来 表示加减运算。 计算机也不能直接执行算法语言描述的源程序,必须先经过编译程序
21、或解释程序翻译成目标程序后,才能由计算机执行。,2021/7/16,45,1.1 程序与程序设计语言,4、面向任务的程序设计语言: 是非过程化的语言,不需要知道问题是如何求解的。 例如:要从某学生表SS用数据库(SQL)查询语言获取表中记录的信息,采用SELECT语句,描述如下: SELECT SSNO,SSNAME,SSAGE,SSSEX FROM SS 5、面向对象的程序设计语言: 认为系统是由许多对象组成的,对象通过消息相互 联系和相互作用,从而完成系统的功能。如C+, 设计的程序更易懂, 更适合更大规模的程序开发。,2021/7/16,46,1.1 程序与程序设计语言,1、C语言的发展
22、概况 起源于1968年发表的CPL语言 。 语言是美国电话电报公司(AT /*05*/ 程序运行时,在屏幕上显示一行英文:Hello World! 。,说明: (1)main是主函数的函数名,表示这是一个主函数。 (2)函数调用语句,printf函数的功能是把要输出的内容送到显示器去显示。 (3)printf函数是一个由系统定义的标准函数,可在程序中直接调用。 (4) #include是编译预处理命令,其作用是将某个已经存在的文件包含到程序中。,2021/7/16,60,1.3 C语言程序的基本结构,1.3.1 C程序的结构特点 ()一个语言源程序可以由一个或多个源文件组成。 ()每个源文件可
23、由一个或多个函数组成,关于函数的内容将在以后第四章介绍。 ()函数是语言程序的基本单位。一个源程序不论由多少个文件组成,都有一个且只能有一个main函数,即主函数。main()函数的作用,相当于其它高级语言中的主程序;其它函数的作用,相当于子程序。 ()C语言程序总是从main()函数开始执行。一个语言程序,总是从main()函数开始执行,而不论其在程序中的位置。当主函数执行完毕时,亦即程序执行完毕。,2021/7/16,61,1.3 C语言程序的基本结构,1.3.1 C程序的结构特点 ()源程序中可以有预处理命令(include 命令仅为其中的一种),预处理命令通常应放在源文件或源程序的最前
24、面。 ()每一个说明,每一个语句都必须以分号结尾。但预处理命令,函数头和花括号“”之后不能加分号。 ()标识符,关键字之间必须至少加一个空格以示间隔。若已有明显的间隔符,也可不再加空格来间隔。,2021/7/16,62,1.3 C语言程序的基本结构,()所有语句都必须以分号“;”结束,函数的最后一个语句也不例外。 ()程序行的书写格式自由,既允许一行内写几条语句,也允许一条语句分写在几行上。如果某条语句很长,一般需要将其分写在几行上。 ()允许使用注释。C语言的注释格式为: /* */,1.3.2 源程序书写格式,2021/7/16,63,1.4 C语言的基本语法单位,1.4.1 语言的字符集
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 完整版 课件 全套 ppt 教学 教程 整套 电子 讲义 幻灯片 最新
限制150内