资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,#,济宁学院计算机科学系,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,#,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,#,济宁学院计算机科学系,第,7,章,功能,定制,能手,-,函数,第7章 功能定制能手-函数,1,第,7,章,功能,定制,能手,-,函数,7.1,、函数的概念,7.2,、函数的定义及,return,语句,7.3,、函数的,调用和,函数之间,数 据,的传递,7.4,、函数的程序举例,第7章 功能定制能手-函数7.1、函数的概念,2,7.1,函数的概念,问题:能不能把所有的代码全部写,main,函数中?,7.1函数的概念问题:能不能把所有的代码全部写main函数中,3,问题:能不能把所有的代码全部写,main,函数中?,把所有代码都写在,main,函数中,就会使主函数变得庞杂、头绪不清,阅读和维护变得困难,有时程序中要多次实现某一功能,就需要多次重复编写实现此功能的程序代码,,,这使程序冗长,不精炼,问题:能不能把所有的代码全部写main函数中?,4,解决的方法:用,模块化程序设计的思路,事先编好一批实现各种不同功能的函数,;,把它们保存在函数库中,,,需要时,直接用;,采用,“组装”的办法简化程序设计的,过程,。,解决的方法:用模块化程序设计的思路,5,函数:一个完成特定功能的独立程序模块。,在设计一个较大的程序时,往往把它分为若干个程序模块,每一个模块包括一个或多个函数,每个函数实现一个特定的功能,。,程序可由一个主函数和若干个其他函数构成,,,主函数调用其他函数,其他函数也可以互相调用,。,函数:一个完成特定功能的独立程序模块。,6,main,a,b,c,f,g,h,d,e,i,e,mainabcfghdeie,7,例,7.1,输出以下的结果,用函数调用实现。,*,How do you do!,*,例7.1 输出以下的结果,用函数调用实现。,8,解题思路:,在输出的文字上下分别有一行“,*,”号,显然不必重复写这段代码,用一个函数,print_star,来实现输出一行“,*,”号的功能。,再写一个,print_message,函数来输出中间一行文字信息,用主函数分别调用这两个函数,解题思路:,9,#include,int main(),void,print_star,();,void,print_message,();,print_star,();,print_message,();,print_star,();,return 0;,void print_star(),printf(“*n”);,void print_message(),printf(“How do you do!n”);,输出,16,个,*,输出一行文字,#include void print_s,10,#include,int main(),void,print_star,();,void,print_message,();,print_star,();,print_message,();,print_star,();,return 0;,void print_star(),printf(“*n”);,void print_message(),printf(“How do you do!n”);,声明函数,定义函数,#include void print_s,11,#include,int main(),void,print_star,();,void,print_message,();,print_star,();,print_message,();,print_star,();,return 0;,void print_star(),printf(“*n”);,void print_message(),printf(“How do you do!n”);,#include void print_s,12,#include,int main(),void,print_star,();,void,print_message,();,print_star,();,print_message,();,print_star,();,return 0;,void print_star(),printf(“*n”);,void print_message(),printf(“How do you do!n”);,说明,:,(1),一个程序由一个或多个程序模块组成,每一个程序模块作为一个源程序文件。,#include void print_s,13,#include,int main(),void,print_star,();,void,print_message,();,print_star,();,print_message,();,print_star,();,return 0;,void print_star(),printf(“*n”);,void print_message(),printf(“How do you do!n”);,说明,:,(2),一个源程序文件由一个或多个函数以及其他有关内容(如预处理指令、数据声明与定义等)组成。,#include void print_s,14,#include,int main(),void,print_star,();,void,print_message,();,print_star,();,print_message,();,print_star,();,return 0;,void print_star(),printf(“*n”);,void print_message(),printf(“How do you do!n”);,说明,:,(3),程序的执行是从,main,函数开始的,如果在,main,函数中调用其他函数,在调用后流程返回到,main,函数,在,main,函数中结束整个程序的运行。,#include void print_s,15,#include,int main(),void,print_star,();,void,print_message,();,print_star,();,print_message,();,print_star,();,return 0;,void print_star(),printf(“*n”);,void print_message(),printf(“How do you do!n”);,说明,:,(4),所有函数都是平行的,即在定义函数时是分别进行的,是互相独立的。函数间可以互相调用,但不能调用,main,函数。,main,函数是被操作系统调用的。,#include void print_s,16,#include,int main(),void,print_star,();,void,print_message,();,print_star,();,print_message,();,print_star,();,return 0;,void print_star(),printf(“*n”);,void print_message(),printf(“How do you do!n”);,说明,:,(5),从用户使用的角度看,函数有两种:,库函数;,用户自己定义的函数。,#include void print_s,17,7.2,函数的定义及,return,语句,7.2.1,为什么要定义函数,7.2.2,定义函数的方法,7.2.3,函数的返回值,7.2函数的定义及return语句7.2.1 为什么要定义函,18,7.2.1,为什么要定义函数,C,语言要求,在程序中用到的所有函数,必须“,先定义,后使用,”,指定,函数,名字,、函数,返回值类型,、函数实现的,功能,以及,参数的个数与类型,,将这些信息通知编译系统。,7.2.1 为什么要定义函数C语言要求,在程序中用到的所有函,19,7.2.2,定义函数的方法,1.,定义无参函数,定义无参函数的一般形式为,:,类型名,函数名,(,void),函数体,类型名,函数名,(),函数体,指定函数值的类型,指定函数值的类型,7.2.2 定义函数的方法1.定义无参函数类型名 函数名(,20,7.2.2,定义函数的方法,1.,定义无参函数,定义无参函数的一般形式为,:,类型名,函数名,(,void),函数体,类型名,函数名,(),函数体,包括声明部分和语句部分,包括声明部分和语句部分,7.2.2 定义函数的方法1.定义无参函数类型名 函数名(,21,7.2.2,定义函数的方法,2.,定义有参函数,定义有参函数的一般形式为,:,类型名 函数名(形式参数表列),函数体,7.2.2 定义函数的方法2.定义有参函数,22,7.2.2,定义函数的方法,3.,定义空函数,定义,空,函数的一般形式为,:,类型名 函数名(,),先用空函数占一个位置,以后,逐步,扩充,好处:,程序结构清楚,可读性好,以后扩充新功能方便,对程序结构影响不大,7.2.2 定义函数的方法3.定义空函数,23,7.2.3.,函数的返回值,通常,希望通过函数调用使主调函数能得到一个确定的值,这就是函数值,(,函数的返回值,),函数的返回值是通过函数中的,return,语句获得的。,一个函数中可以有一个以上的,return,语句,执行到哪一个,return,语句,哪一个,就,起作用,return,语句后面的括号可以不要,7.2.3.函数的返回值通常,希望通过函数调用使主调函数能,24,7.2.3.,函数的返回值,通常,希望通过函数调用使主调函数能得到一个确定的值,这就是函数值,(,函数的返回值,),(2),函数值的类型。应当在定义函数时指定函数值的类型,7.2.3.函数的返回值通常,希望通过函数调用使主调函数能,25,7.2.3.,函数的返回值,通常,希望通过函数调用使主调函数能得到一个确定的值,这就是函数值,(,函数的返回值,),(3),在定义函数时指定的函数类型一般应该和,return,语句中的表达式类型一致,如果函数值的类型和,return,语句中表达式的值不一致,则以函数类型为准,7.2.3.函数的返回值通常,希望通过函数调用使主调函数能,26,7.2.3.,函数的返回值,例,7.3,将例,7.2,稍作改动,将在,max,函数中定义的变量,z,改为,float,型。函数返回值的类型与指定的函数类型不同,分析其处理方法。,解题思路:如果函数返回值的类型与指定的函数类型不同,按照赋值规则处理。,7.2.3.函数的返回值例7.3将例7.2稍作改动,将在m,27,#include,int main(),int max(float x,float y);,float a,b;int c;,scanf(%f,%f,c=max(a,b);,printf(max is%dn,c);,return 0;,int max(float x,float y),float z;,z=xy?x:y;,return(z);,1.5,2.6,2.6,2,变为,2,#include 1.52.62.62变为,28,课堂小结,7.1,、函数的概念,7.2,、函数的定义及,return,语句,课堂小结7.1、函数的概念,29,
展开阅读全文