资源描述:
《第3章模块化程序设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、教师邢静波E-mailteacher_xing@126.comOffice12教801室Tele82767501C语言程序设计济南大学-信息学院1C语言程序设计-邢静波模块化程序设计Chapter33.1模块化程序设计的方法与特点★3.2函数的定义★★★★3.3无返回值函数的定义与调用★★★★3.4有返回值函数的定义与调用★★★★3.5函数嵌套调用和函数声明★★★★3.6函数的递归调用★★模块化程序设计Chapter33.7库函数的使用★3.8全局变量和局部变量★★★★3.9指针和指针作为函数参数★★★★3.10
2、返回指针值的函数★★3.11函数的指针★★3.12典型例题mainabcdefghi结构化程序设计的特点:自顶向下、逐步细化、模块化C语言程序的基本单位是函数有且至少有一个函数main()结构化程序由三种基本结构组成:A模块B模块顺序结构选择结构判断条件成立吗?成立不成立A模块B模块循环结构循环体循环条件满足吗?函数-模块化程序设计的体现济南大学-信息学院4C语言程序设计-邢静波3.1模块化程序设计的方法和特点什么是模块化程序设计?模块化程序设计就是将一个复杂的大问题,分解为一个个独立的简单的小问题(即模块),分
3、别解决简单的小问题,进而解决复杂的大问题。在C语言中,这些独立的简单的模块就是函数。模块分解的方法功能分解法--基础面向对象法--主流功能分解是一个自顶向下、逐步求精的过程。模块划分的原则是:高聚合、低耦合。济南大学-信息学院5C语言程序设计-邢静波模块化程序设计的特点:模块相对独立,功能单一编写相对简单,可以独立编写调试可集体开发,缩短开发周期。不同的模块可以由不同的人员开发,最终能够合成完整的程序开发出的模块,可在不同的应用程序中多次使用,减少重复劳动,提高开发效率测试、更新以模块为单位进行而不会影响其他模块
4、济南大学-信息学院6C语言程序设计-邢静波阶乘模块fac(n)的实现:f=1;for(i=1;i<=n;i++){f=f*i;}例3-1:计算fac(k)fac(m)+fac(n)济南大学-信息学院7C语言程序设计-邢静波#includevoidmain(){inti,k,m,n;floatx,y,z;scanf("%d%d%d",&k,&m,&n);x=1;for(i=1;i<=k;i++)x=x*i;y=1;for(i=1;i<=m;i++)y=y*i;z=1;for(i=1;i<=n;i+
5、+)z=z*i;printf("%f",x/(y+z));}voidmain(){intk,m,n;floatx,y,z;scanf("%d%d%d",&k,&m,&n);x=fac(k);y=fac(m);z=fac(n);printf("%f",x/(y+z));}#includefloatfac(intn){inti;floatf=1;for(i=1;i<=n;i++)f=f*i;returnf;}济南大学-信息学院8C语言程序设计-邢静波voidmain(){intk,m,n;f
6、loatx,y,z;scanf("%d%d%d",&k,&m,&n);x=fac(k);y=fac(m);z=fac(n);printf("%f",x/(y+z));}3.2函数的定义函数定义格式:函数类型函数名(形参表){函数体;}#includefloatfac(intn){inti;floatf=1;for(i=1;i<=n;i++)f=f*i;returnf;}函数调用格式:函数名(实参表);例如:floatfac(intn){…}例如:x=fac(k);济南大学-信息学院9C语言程
7、序设计-邢静波函数名:命名规则同变量相同;同一个文件中函数名不能重复!形参表:用于在主调函数和被调函数间传递数据。需说明参数的个数和类型,多个形参间用逗号间隔,也可以无形参。形参与实参一一对应。函数定义的说明形参书写格式:每一个参数都要写上数据类型和参数名;参数之间以逗号分隔,无参数时一般写上void或什么也不写。floataverage(floata1,floata2,floata3){……}形参不能写成:floata1,a2,a3×济南大学-信息学院10C语言程序设计-邢静波函数定义的说明函数体:由左右花括号
8、括起来的部分。包括说明部分和语句部分,是实现函数的核心部分说明部分:定义函数内除形参以外的其它变量等;语句部分:实现函数功能的执行语句;类型标识符函数名(形参表){说明部分;语句部分;}类型标识符:当函数有返回值时,在函数名前指定函数返回值的类型若省略类型标识符,默认为int若函数无返回值,函数定义时应写上void济南大学-信息学院11C语言程序设计-邢静波①C语言不允许