C语言程序设计 教学课件 ppt 作者 李晓东 庞岩梅 娄嘉鹏 第4章

上传人:E**** 文档编号:89381885 上传时间:2019-05-24 格式:PPT 页数:57 大小:1.07MB
返回 下载 相关 举报
C语言程序设计 教学课件 ppt 作者 李晓东 庞岩梅 娄嘉鹏 第4章_第1页
第1页 / 共57页
C语言程序设计 教学课件 ppt 作者 李晓东 庞岩梅 娄嘉鹏 第4章_第2页
第2页 / 共57页
C语言程序设计 教学课件 ppt 作者 李晓东 庞岩梅 娄嘉鹏 第4章_第3页
第3页 / 共57页
C语言程序设计 教学课件 ppt 作者 李晓东 庞岩梅 娄嘉鹏 第4章_第4页
第4页 / 共57页
C语言程序设计 教学课件 ppt 作者 李晓东 庞岩梅 娄嘉鹏 第4章_第5页
第5页 / 共57页
点击查看更多>>
资源描述

《C语言程序设计 教学课件 ppt 作者 李晓东 庞岩梅 娄嘉鹏 第4章》由会员分享,可在线阅读,更多相关《C语言程序设计 教学课件 ppt 作者 李晓东 庞岩梅 娄嘉鹏 第4章(57页珍藏版)》请在金锄头文库上搜索。

1、第4章 算法实现,1,4.1 常用的数据组织形式 4.2 由算法到代码 4.3 调试方法,2,4.1 常用的数据组织形式,4.1.1 数据类型扩展 4.1.2 数组及其使用 4.1.3 结构体及其使用 4.1.4 指针及其使用 4.1.5 链表及其使用 4.1.6 枚举类型 4.1.7 复合数据类型小结,4.1.1 数据类型扩展,现实世界中的信息是纷繁复杂的,这就意味着它们映射到计算机中后,数据的形式必然是多种多样的。 对这些数据的描述,仅仅依靠C语言中的基本类型是不够的。 一个语言必须支持数据类型的扩展机制,就跟搭积木一样,可以由简单的数据类型搭建任意复杂的数据类型。,4.1.1 数据类型扩

2、展,C语言同样具有这样的数据类型扩展机制 相同类型的多个数据可以通过数组组合成一个复合数据类型; 不同类型的多个数据可以通过结构组合成一个复合数据类型; 在内存中可以重叠存放的(即同一内存空间有时这个数据使用,有时那个数据使用)不同类型的多个数据可以通过联合组合成一个复合数据类型; 一个数据的引用成为一个指针类型。,4.1.2 数组及其使用,1. 数组的定义 (1)一维数组 一维数组的基本定义形式为: 类型 数组名下标界 例如: int array5; /表示定义了一个包含五个元素的整型数组,数组的名字是array,数组中每个元素类型都是int型的 long OfficePhone10; /表

3、示定义了一个包含十个元素的长整型数组,数组的名字是OfficePhone char name256; /表示定义了一个最多包含256个元素的字符数组,数组的名字是name,4.1.2 C语言的数组及其使用,(2) 二维数组 二维数组的基本定义形式为: 类型 数组名下标界1下标界2 如: char name10256;/表示定义了一个10行256列的字符数组,数组的名字是name,数组的每一个元素都是字符型。 (3) 多维数组 多维数组的基本定义形式为: 类型 数组名下标界1下标界2下标界n,4.1.2 数组及其使用,2.数组的引用 (1)一维数组 一维数组的使用方法: 数组名所用元素的下标值

4、需要注意的是,中括号中的下标值是从0开始编号的 如: n=array0; /表示将整型数组array中的第一个元素 的值赋值给整型变量n OfficePhone9=63470055; /表示为长整型数组OfficePhone的最后一个元素OfficePhone9赋值为63740055,4.1.2 数组及其使用,(2) 二维数组 一维数组的使用方法: 数组名所用元素的下标值1所用元素的下标值2 (3) 多维数组 一维数组的使用方法: 数组名所用元素的下标值1所用元素的下标值2所用元素的下标值n,4.1.2 数组及其使用,3. 数组的初始化 数组的初始化实质上是对数组各元素的赋初值,赋初值的方法,

5、总体来说有三种方式: 使用赋值语句将每个元素赋值 从键盘读入每个元素的值 在定义的时候就给数组元素赋值。,4.1.2 数组及其使用,4. 数组举例 例4.1 计算25,38,79,10,25,32,18,45,51,64这十个数的平均值。 例4.2 对“this is a secret”这句话进行加密,加密方法根据表4.1中的明密文转换表进行,将加密后的结果显示出来。 例4.3 将通讯录中的前十个电话号码进行加密,加密的方法是电话号码中每个数字分别变为其后第三个数字,如0变为3,1变为4,7变0,8变1,9变为2。,4.1.3 结构体及其使用,1. 结构体的定义 结构体的定义形式如下: str

6、uct 结构体名 成员1类型 成员1变量名; 成员2类型 成员2变量名; 成员n类型 成员n变量名; ;,4.1.3 结构体及其使用,如: struct List char name256; char phone12; ; /表示定义了一个结构体,这个结构体的名字是struct List,成员有两个,分别是长度为256的字符数组name和长度为12的字符数组phone。,4.1.3 结构体及其使用,2. 结构体变量的定义 结构体变量的定义方法: struct 结构体名 结构体变量名; 如: struct List list1,mylist; /这条语句声明了两个结构体类型struct List

7、 类型的变量,变量名分别为list1和mylist。,4.1.3 结构体及其使用,3. typedef的使用 每次在定义结构体类型的变量时都需要“struct”和“结构体类型名”这样两个成分,有没有办法能简略一点呢? 方法为: typedef struct 类型名 新类型名;,4.1.3 结构体及其使用,4. 结构体变量的使用 结构体变量的使用是需要用“点”号来分别引用各成员 如,list1.name,tmp.mobile,stu.ID等。 对结构体变量进行初始化,需要对该结构体变量的各成员分别进行初始化 具体有两类方法 在声明的时候就初始化:结构体变量名=成员1初始值, 成员2初始值, ,

8、成员n初始值; 在声明之后单独初始化,4.1.3 结构体及其使用,5. 结构体举例 例4.4 将通讯录中的十个英文或全拼姓名和相应的电话号码进行加密(假设都为小写字母且名字长度最长不超过256个字符),姓名的加密方法是每个字母变为其后继第三个字母,即,如果原来是a那么变成d,原来是x那么变成a,y变b,z变c,以此类推,数字的加密方法同前例。,4.1.4 指针及其使用,1. C语言指针的定义 指针的定义方式为: 类型 *指针变量名; 如: int *p;/表示定义了一个指向整型的指针类型,并声明了一个该类型的变量,变量的名字为p。 char *pt1,*pt2; /定义并声明了两个字符指针变量

9、(即,指向字符的指针,指针的值存放的是字符所在内存空间的地址)pt1和pt2。,4.1.4 指针及其使用,2. C语言指针的初始化 指针的值应该是一个地址,那么怎么能把地址赋给指针呢? C语言中有一个特殊的运算,4.1.4 指针及其使用,3. C语言指针的使用 如: int a,*s, *t; float *p,*q; a=3; s=,4.1.4 指针及其使用,C语言还有一个专用的运算符“*”(与定义指针变量时相同)运算符。使用它可以获得指针所指向的那个单元的内容。 如: int a=3,b,c,*p,*q, float f,*s; p= /将s指针所指向单元内容由原来的3.0修改为3.14,

10、即f变量的值就被修改了3.14,4.1.4 指针及其使用,4. 指针举例 例4.5 利用指针交换两个变量的值。,例子代码,#include int main() int a=3,b=5,x,*p,*q; printf(“交换前:a=%d,b=%dn“,a,b); p= ,4.1.5 链表及其使用,1. 链表的定义 链表的定义形式: struct 链表名 数据类型1 变量名1; 数据类型2 变量名2; 数据类型n 变量名n; struct 链表名 *指针名; ;,4.1.5 链表及其使用,如: struct LinkList char name256; char phone12; struct

11、LinkList *next; ; 上面的结构体定义了一个链表结构,名字为struct LinkList,包含三个成员,分别是字符数组型的成员name和phone,以及指向struct LinkList结构体型的指针成员next。,4.1.5 链表及其使用,2. 链表变量的声明 链表变量的声明方法为: 链表名 变量名 或者是:链表名 *变量名 后者是声明了一个指向链表的指针变量。,4.1.5 链表及其使用,如: struct LinkAddressList char name256; int age; char mobile12; char group10; struct LinkAddres

12、sList *next; ; struct LinkAddressList *head,*p,*s;,4.1.5 链表及其使用,3. 链表变量的初始化 链表型指针的初始化都会初始化为NULL,方法为: struct 链表名 *指针名=NULL; 如: struct LinkAddressList *s=NULL;,4.1.5 链表及其使用,4. 链表变量的使用 链表型指针使用的基本方法与普通指针的使用方法类似 为了方便,链表型指针会用到操作符“-”来访问指针所指向的结构体的各个成员。用法为: 指针名-成员名 如:p-age表示访问p指向的结构体的age成员。 使用举例: p-age=13; p

13、-next=NULL;,4.1.5 链表及其使用,5. 链表使用举例 例4.6 假设一个通讯录中每个人的信息有三种,分别是姓名、手机号码及所属组别。要求用户从键盘输入每个人的三项基本信息以便建立通讯录,当键盘输入的姓名为“OK”时,通讯录建立完成。此外,在通讯录建立完成之后对通讯录中所有隶属于“family”组的手机号码进行加密,手机号码的加密方法为手机号码中各数字除了第一位之外,其余位均变为该数字的后续第三个数字(6变9,7变0,8变1)。,4.1.6 枚举类型,C语言中还有一种非常有特色的数据类型枚举型。 现实世界中,许多数据只能取有限个值,如性别只能取男和女两个值,而星期几只能取星期一到

14、星期日这七个值。 对于这样的数据,C语言专门提供枚举类型来支持对它们的描述。,4.1.6 枚举类型,例如: enum weekdaymonday, tuesday, wednesday, thusday, friday, saturday, sunday day1; day1=monday; if(day1=saturday|day1=sunday) printf(“not workday”); else printf(“workday”);,4.1.7 复合数据类型小结,4.2 由算法到代码,4.2.1 顺序结构 4.2.2 选择结构 4.2.3 循环结构,4.2.1 顺序结构,对于顺序结构

15、,直接把算法的步骤正常映射为相应的代码按顺序写下来即可。 如: (1)给出提示; (2)接收输入; 可直接映射为两句顺序的代码: printf(“请输入:”); scanf(“%d”,4.2.2 选择结构,对于二选一的选择结构,可以映射为if语句或if else语句 对于多选一情况的选择结构,C语言有两种基本的代码结构 用多个二选一 用switch case语句 这些语句第二章已经分别介绍过,4.2.2 选择结构,例如: if(score=90) printf(“An”); else if(score=80) printf(“Bn”); else if(score=70) printf(“Cn

16、”); else if(score=60) printf(“Dn”); else printf(“En”); 若使用switch case语句应注意:case后只能跟常量,4.2.2 选择结构,举例:根据用户从键盘输入的百分制成绩,输出相应的五分制成绩。 核心代码如下: m=score/10 ; switch (m) case 10 : printf(“An”) ;break ; case 9 : printf(“An”) ;break ; case 8 : printf(“Bn”) ;break ; case 7 : printf(“Cn”) ;break ; case 6 : printf(“Dn”) ;break ; case 5 : printf(“En”) ;break ; case 4 : printf(“En”) ;brea

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号