C语言程序设计 教学课件 ppt 作者 许薇 武青海 C语言第十三章

上传人:E**** 文档编号:89370278 上传时间:2019-05-24 格式:PPT 页数:16 大小:178.50KB
返回 下载 相关 举报
C语言程序设计 教学课件 ppt 作者  许薇 武青海 C语言第十三章_第1页
第1页 / 共16页
C语言程序设计 教学课件 ppt 作者  许薇 武青海 C语言第十三章_第2页
第2页 / 共16页
C语言程序设计 教学课件 ppt 作者  许薇 武青海 C语言第十三章_第3页
第3页 / 共16页
C语言程序设计 教学课件 ppt 作者  许薇 武青海 C语言第十三章_第4页
第4页 / 共16页
C语言程序设计 教学课件 ppt 作者  许薇 武青海 C语言第十三章_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《C语言程序设计 教学课件 ppt 作者 许薇 武青海 C语言第十三章》由会员分享,可在线阅读,更多相关《C语言程序设计 教学课件 ppt 作者 许薇 武青海 C语言第十三章(16页珍藏版)》请在金锄头文库上搜索。

1、第十三章 综合程序设计,信息工程学院,本章通过一系列的具体实例,介绍C语言相关的主要技术在程序设计中的应用。对本书的知识点进行一综合复习和应用,同时通过在解决特定问题方面的应用,让读者认识到借助于C语言解决实际问题一般处理流程。,综合程序设计,本章导读 掌握C语言数组方面的应用 掌握C语言指针方面的应用 掌握C语言结构体方面的应用 掌握C语言共用体方面的应用 掌握C语言位运算方面的应用 掌握C语言程序设计的模块化设计思想及应用,13.1 程序举例,13.1.1 数组应用举例 用冒泡法对10个数从小到大排序。 分析:其程序流程如图所示:,冒泡法排序的流程图,源程序如下: #include mai

2、n() int a11,i,j,t; printf(“Input 10 numbers:n“); for(i=1;iai+1) t=ai; ai=ai+1; ai+1=t; printf(“The sorted numbers:n“); for(i=1;i11;i+) printf(“%d “,ai); ,程序运行结果为: Input 10 numbers: 4 2 5 7 1 6 9 0 8 3 The sorted numbers: 0 1 2 3 4 5 6 7 8 9,13.1.2 指针应用举例,函数指针作函数参数: 函数的参数不仅可以是整型量、字符型量,同样指向函数的指针也可以作为函

3、数的参数。 【例】 函数sin、cos、tan分别用于计算浮点数的正弦、余弦、正切值,函数 execute则是可完成这些计算的通用函数。,源程序 #include main() double execute (); double (*function3)(); double x,y; int i,n; function0=sin; function1=cos; function2=tan; printf(“输入x:“); scanf(“%lf“, ,double execute(double x, double (*func)() double y; y=(*func)(x); return

4、y; 程序运行结果: 输入x:0.5 0-计算x的正弦,1-计算x的余弦、2-计算x的正切值:请选择输入(0-2):2 计算结果为:0.54630,13.1.3 结构体应用举例,【例】建立有n个student类型结点的链表,n的值从键盘输入,再输出链表。 #define NULL 0 #define LEN sizeof(struct student) #include struct student /*定义结点*/ int num; float score; struct student *next; ; void main() int n; struct student *head; st

5、ruct student create(int n); void print(struct student *head); printf(“please input nn“); scanf(“%d“, ,/*create(int n)函数: 创建一个具有头结点的单链表*/ /*形参n值:创建链表的结点数*/ /*返回值:返回单链表的头指针*/ struct student *create(int n) int i; struct student *head=NULL, *p1, *p2; head=p2=(struct student * ) malloc(LEN); /*申请新结点的空间*/

6、 scanf(“%d%f“, ,/* void print(struct student *head)为链表输出函数*/ /*形参head为要输出链表的头指针*/ void print(struct student *head) struct student *p; p=head; while(p!=NULL) printf(“%d,%6.1fn“,p-num,p-score); p=p-next; /*移动指针*/ ,【例】将一个整数按字节输出。 main() union int i; char ch2; x; x.i=24897; printf(“i=%on“,x.i); printf(“

7、ch0=%o,ch1=%on ch0=%c,ch1=%cn“, x.ch0,x.ch1,x.ch0,x.ch1); ,13.1.4 共用体应用举例,运行结果: i=60501 ch0=101,ch1=141 ch0=A,ch1=a,13.1.5 位运算应用举例,【例】输入一个整数,判断这个数中有几个二进制位1?例如输入67,输出结果应该为3。因为67的相应二进制数为00000000 01000011(0043H),有3个1出现。 分析:要判断是不是1,只需要判断该位与1与以后是不是1就可以知道。一个整数,判断16次即可。程序代码如下: main() int num,k; int count=0

8、; /* 记录1的个数 */ scanf(“%d“, ,13.2 综合设计,【例】项目:通讯录管理系统 问题提出: 编写一个通讯录管理程序,要求通讯录中包括姓名、住址、邮箱和联系电话,程序中可以对通讯录进行插入、删除、显示、查找、修改等操作,并可将结构保存到文件中。 功能要求: 1.数据包括:人名、住址、电话号码和E-mail地址 2.可对记录中的姓名和电话号码进行修改 3.可增加或删除记录 4.可显示所有保存的记录 5.可按人名或电话号码进行查询 设计思路:主函数运行后,首先从键盘输入通讯录文件名,然后调用自定义的load函数从该文件中读出数据生成通讯录单链表,由于生成的队列式单链表,为了连

9、入新结点方便定义全局指针变量tail,该变量指向通讯录链表的尾结点。如果文件不存在,则生成一个空的通讯录链表,load函数返回值为通讯录链表的头指针值。然后显示菜单并提示用户选择相应的菜单项。菜单中有7个菜单项,分别为:插入通讯成员、删除通讯成员、查询通讯成员、保存通讯文件、显示通讯成员、修改成员资料、退出本次操作。之后由一个Case语句完成选择后跳入各个子函数插入通讯成员、删除通讯成员、查询通讯成员、保存通讯文件、显示通讯成员、修改成员资料这六项分别定义相关函数,其中几个简单说明:,void insert(add_list *head); 执行insert函数将会在通讯录链表的尾部连入一条新

10、的通讯记录。由于用户在使用此程序时,可能输入一个并不存在的通讯录文件,如果发生此种情况,程序以开始生成的通讯录链表就会是个空链表;如果往一个空链表中插入一条新的记录将会使链表头指针值产生改变,那么 insert 函数就必须返回变动后的链表头指针值。所以将 insert函数的参数定义成add_list *类型,调用时实参应该写成&head。在insert函数中*head表示链表的头指针,而head是指向链表头指针的指针变量。 int Delete(add_list *head); Delete 函数执行的功能是;按照姓名删除通讯记录,并已经考虑到可能存在同名同姓的情况。delete 函数中也可能

11、存在删除链表第一个指针的情况,所以和insert函数类似的是,它的形参同样定义成add_list *类型。delete函数返回值为int类型,返回0表示删除操作失败,如用户输入的要删除的人姓名不存在。返回1表示成功完成删除操作。 int search(add_list *head) search函数完成按照姓名查询通讯记录的操作,可查询所有同名同姓的记录。 void rework(char *filename) rework函数完成按照姓名搜索后进行通讯记录各部分内容的修改,其中还调用两个子函数int compare(char *s1,char *s2)、 void sub(char *s1,char *s2,int pos,int len)对字符串进行比较,以及包含关系的判断,最后将修改的内容保存到文件中。 有关程序实现和解释,请仔细阅读教材对应程序和注释。,本章小结,本章通过一系列的具体实例,介绍C语言相关的主要技术在程序设计中的应用。对本书的知识点进行一综合复习和应用,同时通过在解决特定问题方面的应用,让读者认识到借助于C语言解决实际问题一般处理流程。,

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

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

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