C语言完整版课件全套ppt教学教程最全整套电子讲义幻灯片(最新).ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《C语言完整版课件全套ppt教学教程最全整套电子讲义幻灯片(最新).ppt》由会员分享,可在线阅读,更多相关《C语言完整版课件全套ppt教学教程最全整套电子讲义幻灯片(最新).ppt(447页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C语言程序设计知识结构单元1 基本语法1.1 字符集、标识符和关键字1.2 常量和变量n直接常量的表示方法n符号常量的定义方法n变量的定义方法n变量的存储空间大小及变量的值n变量的作用域与存储类型1.3 基本数据类型n整型数据n实型数据n字符型数据n字符串常量n枚举型数据 字符型(字符型(charchar)整型(整型(short,int,long,unsignedshort,int,long,unsigned)单精度型(单精度型(floatfloat)实型实型 双精度型(双精度型(doubledouble)枚举类型(枚举类型(enumenum)数组类型(数组类型()构造类型构造类型 结构体类型
2、(结构体类型(structstruct)共用体类型(共用体类型(unionunion)指针类型(指针类型(*)空类型(空类型(voidvoid)基本类型基本类型数据类型数据类型1.4 运算符与表达式n算术运算符与算术表达式n关系运算符与关系表达式n逻辑运算符与逻辑表达式n赋值运算符与赋值表达式n逗号运算符与逗号表达式n条件运算符与条件表达式n求字节运算符n位运算符1.5 运算符的优先级、结合性和表达式的求值1.6 数据类型转换n自动转换n强制转换1.7 基本输入输出函数nscanf()与printf()ngetchar()与putchar()ngets()与puts()1.8 编译预处理n宏定
3、义 n文件包含n条件编译1.9 类型定义 typedef2 控制结构2.1 结构化程序的三种基本结构2.2 语句种类n表达式语句n说明语句n函数调用语句n空语句n复合语句n控制语句2.3 分支结构与分支语句nif语句的形式和执行流程n嵌套的if语句的形式和执行流程nswitchcase语句的形式和执行流程2.4 循环结构与循环语句nwhile语句的形式和执行流程ndowhile语句的形式和执行流程nfor语句的形式和执行流程n循环语句的嵌套2.5 非结构化控制语句nbreak语句ncontinue语句ngoto语句2.6 基本算法的实现n递推法n迭代法n穷举法n递归法n辗转相除法求最大公约数n
4、求素数(质数)n求水仙花数n输出九九乘法表n输出特殊图形(如等腰三角形、平行四边形等)3 函数3.1 标准函数与用户自定义函数3.2 函数的定义与调用n函数的定义形式n函数的调用形式n函数调用前的声明n实参、形参及参数传递n函数的返回值及其类型3.3 函数的嵌套调用与递归调用3.4 常用库函数的调用格式及其头文件4 数组4.1 数组的概念n数组及数组元素(下标变量)n数组的用途n数组元素的存储结构(便于寻址)4.2 一维数组n一维数组的定义和初始化方法n一维数组的逻辑结构和存储结构n一维数组元素的引用n一维数组的输入与输出4.3 二维数组n二维数组的定义和初始化方法n二维数组的逻辑结构和存储结
5、构n二维数组元素的引用n二维数组的输入与输出4.4 字符数组和字符串n一维字符数组的定义和初始化方法n一维字符数组的输入与输出n用字符数组实现字符串n字符串的输入输出方法4.5 常用算法的实现n冒泡法排序、选择法排序n顺序查找、折半查找n删除法n插入法n在一组数中求最大值和最小值n将数组元素逆置n输出杨辉三角形n求转置矩阵5 指针5.1 指针的概念和指针的定义n变量的地址和变量的值n指针和指针变量n指针的定义形式n多级指针n指针运算符和地址运算符5.2 指针的赋值和运算n指针的初始化和赋值n指针运算5.3 指针和函数n指针作函数的参数及参数的传递形式n指针函数的定义形式n指向函数的指针5.4
6、指针和数组n数组名是常量指针n一维数组元素的指针表示n二维数组元素的指针表示n指向数组元素的指针n指向一维数组的指针n指向含M个元素的一维数组的指针5.5 指针数组n指针数组的定义n用字符型指针数组实现字符串数组6 结构体和共用体6.1 结构体类型与结构体变量n结构体类型的用途n结构体类型的定义n结构体变量的定义n结构体变量的引用(成员运算符)6.2 结构体数组n结构体数组的定义n结构体数组的初始化和赋值6.3 结构体类型数据的指针n结构体变量的指针n结构体数组的指针6.4 结构体与函数n结构体指针和结构体变量作函数的参数n返回结构体类型数据的函数6.5 结构体位段6.6 共用体类型和共用体变
7、量n共用体类型和共用体变量的定义n共用体变量的引用6.7 枚举类型和枚举型变量n枚举类型的定义n枚举型变量与枚举元素7 文件操作7.1 文件的基本概念n文件、文件名、扩展名n流式文件n文件的分类n缓冲文件系统和非缓冲文件系统nFILE结构和FILE指针变量7.2 文件的打开与关闭n文件的打开与打开函数 fopen()n文件的关闭与关闭函数 fclose()7.3 文件的读写操作n读写一个字符的函数 fgetc()和fputc()n读写一个字符串的函数 fgets()和fputs()n读写一个数据字块的函数 fread()和fwrite()n文件的格式化读写函数 fscanf()和fprintf
8、()7.4 文件定位与随机读写n文件位置指针随机定位函数 fseek()n检测当前位置指针的位置函数 ftell()n文件位置指针复位函数 rewind()n检测文件是否结束的函数 feof()链表引用自身的结构和链表的概念引用自身的结构和链表的概念 结构中的某个成员项,为指向该结构类型自身的结构中的某个成员项,为指向该结构类型自身的指针,则称为引用自身的结构。指针,则称为引用自身的结构。structnodeintnum;structnode*next;指向自身的结构。指向自身的结构。链表的概念链表是一种动态存储分配结构,通过指针相连,数据可以不连续存放。如用数组存放数据时,必须事先定义固定的
9、长度(即元素的个数)。如果事先难以确定元素的个数,则必须把数组定义的足够大,显然这会造成内存的浪费。链表则没有这种缺点,它根据需要开辟内存单元。A1249head13561249B1475C1021DNULL135614751021链表(单向链表)链表(单向链表)链表有一个“头指针”变量,它存放一个地址,该地址指向一个元素。链表中每个元素称为“结点”,每个结点都应包含两个部分:用户需要用的实际数据和下一个结点的地址。最后一个结点不指向其他元素,它称为“表尾”,它的地址部分放一个“NULL”,链表到此结束。链表中各元素不是连续存放的。要找某一元素,必须要找到上一个元素,根据它所提供的下一元素的地
10、址才能找到下一个元素。如果不提供头指针,则整个链表都无法访问。这种链表的数据结构,必须利用指针变量才能实现,即一个结点中应包含一个指针变量,用它存放下一结点的地址。2、简单链表、简单链表例:建立一个简单的链表,由例:建立一个简单的链表,由3 3个学生数据的结点组成。个学生数据的结点组成。#include/*a7.c*/structstudentintnum;floatscore;structstudent*next;main()structstudenta,b,c,*head,*p;a.num=101;a.score=89.5;b.num=102;b.score=90;c.num=103;c.
11、score=56;head=&a;a.next=&b;b.next=&c;c.next=NULL;p=head;while(p!=NULL)printf(%d,%5.1fn,p-num,p-score);p=p-next;实例运行实例运行上例是比较简单的,所有结点都是在程序中定义的,不是临时开辟的,也不能用完后释放,这种链表称为“静态链表”。前面讲过,链表结构是动态生地分配存储的,即在需要时才开辟一个结点的存储单元 以便插入或追加节点,删除节点后需要释放节点占用的内存单元。C 语言提供了相应的函数。3.处理动态链表所需的函数 void*malloc(unsigned int size)void
12、*malloc(unsigned int size):在内存的动态存储区中分配一个长度为在内存的动态存储区中分配一个长度为sizesize的连的连续空间。成功,则返回一个续空间。成功,则返回一个voidvoid型的空指针,否则,返回型的空指针,否则,返回NULL.NULL.使用方法:使用方法:ptr=malloc(size);分配内存的字节数。分配内存的字节数。返回空类型的指针。返回空类型的指针。成功:返回内存的地址。成功:返回内存的地址。失败:返回失败:返回NULL。ptrvoid free(ptr)void free(ptr)作用:作用:释放释放ptrptr指向的内存空间。指向的内存空间。
13、(3)void*calloc(unsigned n,unsigned size)(3)void*calloc(unsigned n,unsigned size)在内存的动态区存储中分配个长度为在内存的动态区存储中分配个长度为sizesize的连续空间。函数返回分配域的起始地址;如果分配不成功,返回。的连续空间。函数返回分配域的起始地址;如果分配不成功,返回。4.建立动态链表例:写一函数建立一个有多名学生数据的单向动态链表。例:写一函数建立一个有多名学生数据的单向动态链表。(当学号输入为(当学号输入为0 0时,表示链表建立结束)时,表示链表建立结束)算法:算法:设设3 3个指针变量:个指针变量:
14、head,p1,p2,head,p1,p2,都是指向结构体类型数据都是指向结构体类型数据head:head:存放第存放第1 1个结点的地址,即头指针个结点的地址,即头指针p1:p1:指向当前新开辟的结点指向当前新开辟的结点p2:p2:指向前一个结点(即已建成的链表中的最后一个结点)指向前一个结点(即已建成的链表中的最后一个结点)所谓建立动态链表是指在程序执行过程中从无到所谓建立动态链表是指在程序执行过程中从无到有地建立起一个链表,即一个一个地开辟结点和输入有地建立起一个链表,即一个一个地开辟结点和输入各结点数据,并建立起前后相链的关系。各结点数据,并建立起前后相链的关系。结构体的定义:结构体的
15、定义:#include#defineLENsizeof(structstudent)structnodeintnum;structnode*next;建立链表的函数:建立链表的函数:structnode*creat()structnode*head,*last,*p;intnum;head=last=NULL;scanf(%d,&num);while(num0)p=(structnode*)malloc(sizeof(structnode);p-num=num;p-next=NULL;if(head=NULL)head=p;elselast-next=p;last=p;scanf(%d,&nu
16、m);returnhead;5.输出链表输出链表将链表中各结点的数据依次将链表中各结点的数据依次输出。首先要知道链表第一个结点输出。首先要知道链表第一个结点的地址,也就是要知道的地址,也就是要知道headhead的值。的值。然后设一个指针变量然后设一个指针变量p p,先指向第一,先指向第一个结点,输出个结点,输出p p所指的结点,然后使所指的结点,然后使p p后移一个结点,再输出,直到链表后移一个结点,再输出,直到链表的尾结点。的尾结点。voidoutput(structnode*head)structnode*p;p=head;while(p!=NULL)printf(%3d,p-num);
17、p=p-next;main()structnode*head;head=creat();output(head);getch();6.对链表的删除操作已有一个链表,希望删除其中某个结点。ABCDEABCDE原来链表原来链表将将C从链表从链表中删除中删除例:写一函数以删除动态链表中指定的结点。思路:从P指向的第一个结点开始,检查该结点中的num的值是否等于要删除的那个学号。如果是,就将该结点删除,不是,就将指针p后移一个结点,直到遇到表尾为止。设两个指针p1,p2,p1为当前结点,p2指向刚才检查过的结点。找到要删除的结点,又有两种情况:A.要删除的是第一个结点B.要删除的不是第一个结点head
18、=p1-nextp2-next=p1-next删除结点的函数:删除结点的函数:structstudent*del(structstudent*head,intnum)structstudent*p1,*p2;if(head=NULL)printf(nlistisnulln);p1=head;while(p1-num!=num&p1-next!=NULL)p2=p1;p1=p1-next;if(p1-num=num)if(p1=head)head=p1-next;elsep2-next=p1-next;printf(delete:%dn,num);elseprintf(%ldnotbeenfou
19、nd!,num);return(head);7.对链表的插入操作(在尾部追加节点)步骤:步骤:为新节点分配内存。为新节点分配内存。建立新节点的成员项。建立新节点的成员项。建立链接关系。建立链接关系。在链表最后插入一个结点:在链表最后插入一个结点:structstudent*Add(structnode*head)structstudent*p1,*p2,*p3;p1=head;if(head!=NULL)while(p1-next!=NULL)p1=p1-next;p2=(structnode*)malloc(sizeof(structnode);scanf(%d,&p2-num);if(he
20、ad=NULL)head=p2;elsep1-next=p2;p2-next=NULL;printf(AddSuccee.n);return(head);C 语 言 程 序 设 计主主讲:叶讲:叶斌斌E-mail:2023/3/42023/3/43737课程安排总学时:n56学时(理论32学时 实验24学时)教材:nC语言程序设计(第一版).叶斌,陈世强主编,北京:科学出版社,2012年6月参考教材:nC语言程序设计(C99版).陈良银,游洪跃,李旭伟主编.北京:清华大学出版社,2006 nC语言程序设计(第四版)谭浩强著.北京:清华大学出版社,2010nC语言程序设计教程(第2版).李丽娟主
21、编.北京:人民邮电出版社,2009 2023/3/42023/3/43838第1章 C语言及程序设计概述【学习目标】【学习目标】掌握程序、程序设计语言及程序设计方法等基本概掌握程序、程序设计语言及程序设计方法等基本概念;了解计算机求解问题的基本过程;了解念;了解计算机求解问题的基本过程;了解C语言的发语言的发展及特点;掌握展及特点;掌握C语言程序的基本结构以及语言程序的基本结构以及C语言的基语言的基本语法单位;掌握本语法单位;掌握C语言程序的开发过程与开发环境。语言程序的开发过程与开发环境。【重【重难难点】点】重点:程序设计语言与程序设计方法的基本概念,重点:程序设计语言与程序设计方法的基本概
22、念,C语言基本语法单位以及语言基本语法单位以及C语言程序的基本结构。语言程序的基本结构。难点:计算机求解问题的基本过程,难点:计算机求解问题的基本过程,C语言源程序语言源程序生成可执行程序的过程。生成可执行程序的过程。【教学安排】【教学安排】学时:学时:2学时学时2023/3/42023/3/439391.1 程序与程序设计语言1.1.1程序的概念程序的概念什么是什么是计算机程序计算机程序?计算机程序计算机程序是指可以被计算机或其他信息处理是指可以被计算机或其他信息处理装置连续执行的一条条指令的集合。装置连续执行的一条条指令的集合。程序程序是一组有序的指令(是能够完成特定任务是一组有序的指令(
23、是能够完成特定任务的指令序列)。的指令序列)。使用程序设计语言编写的用来使计算机完成一使用程序设计语言编写的用来使计算机完成一定任务的一系列命令的集合便构成定任务的一系列命令的集合便构成程序程序。编写程序的工作则称为编写程序的工作则称为程序设计程序设计。2023/3/42023/3/440401.1 程序设计语言与程序设计什么是什么是程序设计语言程序设计语言?为人和计算机之间都能识别和交流而制定的一种特为人和计算机之间都能识别和交流而制定的一种特定语言,这种特定的语言就是定语言,这种特定的语言就是程序设计语言程序设计语言。可以从不同的角度对程序设计语言进行分类可以从不同的角度对程序设计语言进行
24、分类:通用语言通用语言通用语言通用语言专用语言专用语言专用语言专用语言结构化语言结构化语言结构化语言结构化语言模块化语言模块化语言模块化语言模块化语言面向对象语言面向对象语言面向对象语言面向对象语言机器语言机器语言机器语言机器语言汇编语言汇编语言汇编语言汇编语言高级语言高级语言高级语言高级语言低级语言低级语言高级语言高级语言从应用范围分从应用范围分从应用范围分从应用范围分从程序设计方法分从程序设计方法分从程序设计方法分从程序设计方法分从与机器的联系程度分从与机器的联系程度分从与机器的联系程度分从与机器的联系程度分2023/3/42023/3/44141只有用机器语言编写的程序才能在计算机只有用
25、机器语言编写的程序才能在计算机上直接执行,用其他语言编写的源程序都需上直接执行,用其他语言编写的源程序都需要翻译后才能被计算机所理解并执行。用于要翻译后才能被计算机所理解并执行。用于语言翻译的工具称为语言翻译的工具称为语言处理程序语言处理程序或或翻译程翻译程序序,用不同的程序设计语言编写出来的,用不同的程序设计语言编写出来的源程源程序序,需要使用不同的语言处理程序来翻译。,需要使用不同的语言处理程序来翻译。通过语言处理程序翻译后的目标代码称为通过语言处理程序翻译后的目标代码称为目目标程序标程序。1.1 程序设计语言与程序设计2023/3/42023/3/44242高级语言源程序的翻译方式:高级
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 完整版 课件 全套 ppt 教学 教程 整套 电子 讲义 幻灯片 最新
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内