欢迎来到天天文库
浏览记录
ID:39149057
大小:433.81 KB
页数:45页
时间:2019-06-25
《函数与程序结构》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第5章函数与程序结构本章要点1.C程序的一般结构,函数的定义方法及函数的类型和返回值。2.函数实参与形参的对应关系,以及参数传递的方式。3.函数的正确调用,嵌套与递归调用。4.局部变量和全局变量的概念和使用方法。5.变量的存储类别(自动、静态、寄存器、外部)、变量的作用域和生存期。6.宏定义及文件包含处理的方法。本章难点1.函数参数的传递。2.函数递归调用的执行过程。3.变量的作用域和生存期。5.1C程序的一般结构5.1.1模块化程序设计自顶向下,逐步细化5.1.2C程序的一般结构函数是构成C语言程序的基本功能模块,是一段程序,它完成一项相对
2、独立的任务。一个较大的程序一般应分为若干个程序模块,每一个模块用来实现一个特定的功能。在c语言中,用函数来实现模块的功能。一个c程序由一个主函数和若干个函数组成,由主函数调用其他函数,其他函数之间也可以相互调用。同一个函数可以被一个或多个函数调用任意多次。特点:①一个源文件程序由一个或多个函数以及其他有关内容(如命令行、数据定义等)组成。②一个c程序由一个或多个程序模块组成,每一个程序模块作为一个源程序文件。③C程序的执行总是从主函数开始,又从主函数结束,其他函数只有通过调用关系发生作用。一个c程序有且仅有一个主函数main()。④所有的函数
3、在定义时是相互独立的,一个函数并不从属于另一函数,即函数不能嵌套定义,不过函数之间可以相互调用,但不能调用main函数。⑤不同源文件的组装可以通过工程文件实现。函数的分类1.从用户使用的角度看,函数有两种:(1)标准函数,即库函数这是由系统提供的,用户不必自己定义这些函数,可以直接使用它们。应该说明,每个系统提供的库函数的数量和功能不同,当然有一些基本的函数是共同的。(2)用户自己定义的函数用以解决用户的专门需要。2.从函数的形式看,函数分两类:(1)无参函数在调用无参函数时,主调函数并不将数据传送给被调用函数,一般用来执行指定的一组操作。无
4、参函数可以带回或不带回函数值,但一般以不带回函数值的居多。(2)有参函数在调用函数时,在主调函数和被调用函数之间有参数传递,也就是说,主调函数可以将数据传给被调用函数使用,被调用函数中的数据也可以带回来供主调函数使用。【例5.1】一个函数简单应用的例子。voidmain(){voidp_star();/*说明p_star函数*/voidp_message();/*说明p_message函数*/p_star();/*调用p_staar函数*/p_message();/*调用p_message函数*/p_star();/*调用p_star函数*/
5、}voidp_star()/*定义p_star函数*/{printf("****************");}voidp_message()/*定义p_message函数*/{printf("Goodmorning!");}5.2函数的定义与调用5.2.1函数的定义正如变量使用前应先定义一样,函数也应该先定义后使用。函数定义后,这个函数才存在,然后才能调用它。1.函数定义的一般形式(1)无参函数的定义其定义形式如下:类型标识符函数名(){说明部分语句部分}说明:其中的类型标识符用于指定函数值的类型;若函数无返回值,应用void说明。
6、函数名的命名方法与标识符相同,不能和关键字、库函数名等同名函数名后的圆括号是函数的象征,不能省略。(在函数定义时,圆括号后无分号)例:voidp_star(){printf("****************");}说明:其中的void在TC中可以省掉。p_message(){printf("Goodmorning!");}(2)有参函数的定义其定义形式为:类型标识符函数名(形式参数说明表){说明部分语句部分}说明:对于有参函数,函数的参数是主调函数和被调用函数的数据通道。参数可分为形式参数(形参)和实际参数(实参)两种。例如:int
7、max(intx,inty)/*形式参数说明*/{intz;/*函数体中的说明部分*/z=x>y?x:y;return(z);}main(){inta=3,b=4;printf(“%d”,max(a,b));}return语句的作用是将z的值作为函数值带回到主调函数中。return后面的括弧中的值作为函数带回的值(或称函数返回值)。在一个函数的函数体内,不能再定义另一个函数,即函数不能嵌套定义。形参:定义函数时的参数实参:调用函数时的参数例.编写一个通用过程(函数或子程序),该过程可以实现判断一个整数是否为素数。编写主程序调用该过程,统计所有
8、三位数中素数的个数。intss(intn){intflag,i;flag=1;for(i=2;i<=n-1;i++)if(n%i==0){flag=0;break;
此文档下载收益归作者所有