资源描述:
《C语言程序设计(第二版) 刘克成 张凌晓 ch5》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第5章 模块化编程模块化设计与函数局部变量与全局变量变量的存储属性内部函数和外部函数编译预处理函数综合应用举例5.1模块化设计与函数模块化程序设计基本思想:把大问题分成几个部分,每部分又分解成更细的若干小部分,直至分解成功能单一的小问题,我们把求解较小问题的算法称作“功能模块”。特点:各模块相对独立、功能单一、结构清晰、接口简单控制了程序设计的复杂性缩短开发周期避免程序开发的重复劳动易于维护和功能扩充开发方法:自上向下,逐步细化C程序结构C是函数式语言必须有且只能有一个名为main的主函数C程序的执行总
2、是从main函数开始“{”,在main中结束“}”其它函数只在执行main()函数的过程中被调用时才能执行main()f1()f2()f11()f21()f22()一、函数的定义“函数”(function)实际上是“功能”的意思,即用函数来实现程序中的每一个功能函数的分类标准函数(库函数)用户自定义函数无参函数有参函数C语言程序处理过程全部都是以函数形式出现,最简单的程序至少也有一个main函数函数必须先定义和声明后才能调用注意:函数只能定义在别的函数的外部,不能嵌套定义例:func1(){……func
3、2(){….}…..}func1(){…..}func2(){…..}1.有参函数的一般形式类型说明符函数名(形式参数类型及说明表列){/*函数体*/局部变量说明语句序列}形式参数类型及说明表列的一般形式为:数据类型形式参数,数据类型形式参数,…其中:类型说明符和函数名称为函数头函数名是由用户定义的标识符,函数名后有一个空括号,其中无参数{}中的内容称为函数体函数的定义位置是在任意函数之外,且不能嵌套定义intmax(intn1,intn2){intm;if(n1>n2)m=n1;elsem=n2;re
4、turnm;}2.无参函数的一般形式类型说明符函数名(){/*函数体*/局部变量说明语句序列}voidHello(){printf("Hello,world");}函数的返回值返回语句形式:return(表达式);return表达式;return;意义:流程返回主调函数,被调函数本次执行终结;返回函数值到调用表达式中(可有可无);说明:函数中可有多个return语句,执行到其中一个时即返回主调函数(return语句后的表达式类型应一致)若函数类型与return语句中表达式值的类型不一致,按前者为准,
5、自动转换------函数调用转换不带表达式的return语句在函数体的最后时,可以省略,此时遇}时,流程自动返回主调函数若函数的类型为void,则函数可以无return语句,或者return语句的表达式为空(可表示函数无返回值)例有返回值函数floaty(floatx){if(x<0)return(x*x-x+1);elsereturn(x*x*x+x+3);}例无返回值函数voidswap(intx,inty){inttemp;temp=x;x=y;y=temp;[return;]}二、函数的调用1.
6、函数的声明函数类型函数名(参数类型1,参数类型2,…);函数类型函数名(参数类型1参数名1,参数类型2参数名2,…);作用:告诉编译系统函数类型、参数个数及类型函数说明位置:函数的数据说明部分或函数外部注意:声明时形参名不重要,可省略且不要求与定义时保持一致函数的声明应与函数定义时的头部写法保持一致函数类型不能省(除int和char)函数定义在前,主调函数在后时,可以省略函数声明若在定义所有函数前声明了函数,各个主调函数中不必再对其声明函数定义与函数声明不同例函数说明举例main(){max(intx,
7、inty);inta,b,c;scanf("%d,%d",&a,&b);c=max(a,b);printf("Maxis%d",c);}max(intx,inty){intz;z=x>y?x:y;return(z);}int型函数可以省略函数类型标示符floatadd(floatx,floaty){floatz;z=x+y;return(z);}main(){floata,b,c;scanf("%f,%f",&a,&b);c=add(a,b);printf("sumis%f",c);}被调函数出现在
8、主调函数之前,不必函数说明main(){floatadd(float,float);/*functiondeclaration*/floata,b,c;scanf("%f,%f",&a,&b);c=add(a,b);printf("sumis%f",c);}floatadd(floatx,floaty){floatz;z=x+y;return(z);}floatadd();2.函数的调用有参函数调用一般形式:函数名(实参表达式1,实参表达式