第三讲 模块化程序设计
第三讲 模块化程序设计
第三章 模块化程序设计3.1 模块化程序设计的方法与特点 3.2 函数的定义 3.3 无返回值函数的定义与调用 3.4 有返回值函数的定义与调用 3.5 函数嵌套调用和函数声明 3.6 函数的递归调用 3.7 库函数的使用 3.8指针和指针作为函数参数
3.1 概述一个较大的程序一般应分解为若干个程序模块,每个模块 用来实现一个特定的功能。这样可以把复杂的问题划分成 若干小问题,通过对小问题的处理,最终解决复杂的大问 题。 在C语言中,这些独立的模块就是由函数完成的。 在程序设计中,将一些常用的功能模块编写成函数,这样 可以减少重复编写程序段的工作量。
main() main()
a()
b()
c()
d()
e()
f()
g()
h()
模块化程序设计的特点:模块相对独立,功能单一 编写相对简单,可以独立编写调试 可集体开发,缩短开发周期。不同的模块可以由不同的 人员开发,最终能够合成完整的程序 开发出的模块,可在不同的应用程序中多次使用,减少 重复劳动,提高开发效率 测试、更新以模块为单位进行而不会影响其他模块
3.1.1 函数的定义方法1.函数的概念 1.函数的概念 函数从本质上来说就是能完成一定功能的程序段, 其标识叫函数名。 若有其他程序要完成该函数的功能,可以通过调用。 函数可以反复多次调用。
2.引入函数解决的问题 2.引入函数解决的问题1)解决代码的重复 2)结构化、模块化编程的需要
C是函数式语言 必须有且只能有一个名为main的主函数 C程序的执行总是从main函数开始,在main中 结束
说明: 说明:
(1)一个文件由一个或多个函数组成,一个源文件是 一个编译单位 (2)一个程序总是从main()函数开始执行,调用其他 函数后,流程回到main()主函数结束。 main()主函数是系统定义的 (3)所有函数都是平行的,它们的定义都是相互独立 的,函数不能嵌套定义,可以嵌套调用
引例:计算
k ! m !+ n !
阶乘的实现: fk = 1; for (i=1; i<=k; i++) { fk = fk * i; }
3.1.2 函数的调用1.函数调用一般形式◆有返回值的函数调用形式: 有返回值的函数调用形式: 有返回值的函数调用形式 函数名 (实际参数列表) 实际参数列表)如: c=max(a,b); : c=max(a, max(a,b);
◆无返回值的函数调用形式: 无返回值的函数调用形式: 无返回值的函数调用形式 函数名 ()如: printstar( ); :
2.函数调用方法
(1)函数语句:如: printstar( ); : );
(2)函数表达式: 如: c=max(a,b); : (3)函数参数:如: m=max(a,max(b,c)); : printf(“%d %d”,max(a,b)); printf( %d ,max(a,b));
#include <stdio.h> #include <stdio.h> float factorial(int n) void main() 如果换成
如下形式怎么做? 如果换成如下形式怎么做? { int i; { int i, k, m, n; k float f; float fk, fm, fn; f m + n = 1; scanf("%d%d%d", &k, &m, &n); for (i=1; i<=n; i++) fk = 1; f = f * i; for (i=1; i<=k; i++) return f; fk = fk * i; } void main( ) fm = 1; 反复使用的代码段 { int k, m, n; for (i=1; i<=m; i++) float fk, fm, fn; fm = fm * i; scanf("%d%d%d", &k, &m, &n); fn = 1; fk = factorial(k); for (i=1; i<=n; i++) fm = factorial(m); fn = fn * i; fn = factorial(n); printf("%f\n", fk/(fm+fn)); printf("%f\n", fk/(fm+fn)); } }
3.2 函数的定义与调用#include <stdio.h> float factorial(int n) 定义 { int i; float f = 1; for (i=1; i<=n; i++) f = f * i; return f; } void main( ) { int k, m, n; float fk, fm, fn; scanf("%d%d%d", &k, &m, &n); fk = factorial(k); fm = factorial(m); 调用 fn = factorial(n); printf("%f\n", fk/(fm+fn)); }
定义格式: 函数名(形式参数表) 函数类型 函数名(形式参数表) { 声明部分 函数体; 函数体; 执行部分 } 其中形式参数表为: 形参1, 类型名 形参1, 类型名 形参2, 形参2,…… 2,
函数调用形式为: 函数名(实际参数表) 函数名(实际参数表)
#include <stdio.h> float factorial(int n) { int i; float f = 1; for (i=1; i<=n; i++) f = f * i; return f; }
main 主调函数 定义 factorial 被调函数
void main( ) { int k, m, n; float fk, fm, fn; scanf("%d%d%d", &k, &m, &n); fk = factorial(k); fm = factorial(m); 调用 fn = factorial(n); printf("%f\n", fk/(fm+fn)); }
main
scanf
factorial
printf
库函数
自定义函数
库函数
3.3 无返回值函数的定义与调用无返回值的无参函数的定义格式:函数定义
函数名( void 函数名( ) { 函数体; 函数体; 此处为空, 此处为空,也 } 可写void 可写表示无返回值
例:请输出如下信息:**************** hello world! ****************
#include <stdio.h> void printstar( ) { printf(“**************** \n”); } void main( ) { 函数调用 printstar( ) ; printf(“ hello world! \n”); printstar( ); } 注意:小括号不能省略 注意:小括号不能省略
无返回值的无参函数的调用形式:函数名 ) ; 函数名( 函数名
无返回值的有参函数的定义格式:函数名( 形参1, 形参2, 2,……) void 函数名(类型名 形参1, 类型名 形参2, ) { 函数体; 函数体; 例3-2执行过程: }
例3-2:交换两个数的值。
x #include <stdio.h> void swap(int a, int b) { int t; 形参 y t=a; a=b; b=t; printf(“交换后:%d,%d\n”, a, b); 交换后: 交换后 } void main( ) { int x=5, y=9; printf(“交换前:%d %d\n”, x,y); 交换前: 交换前 swap(x, y); printf(“函数调用结束后:%d %d\n”, x, y); 函数调用结束后: 函数调用结束后 } 实参
5 9
9 5 5 9 5
a b t
如果在主函数中增加这一 请问输出结果是什么? 句,请问输出结果是什么?
…… 此处隐藏:1547字,全部文档内容请下载后查看。喜欢就下载吧 ……相关推荐:
- [高等教育]一年级家长课程教案
- [高等教育]封丘县人民医院深入推进纠正医药购销领
- [高等教育]2017年6月大学英语四级真题试卷及答案(
- [高等教育]2017年北京第二外国语学院文学院824中
- [高等教育]7 高中历史第7单元1861年俄国农奴制改
- [高等教育]【K12学习】4、实际测量-苏教版六年级
- [高等教育]药具培训试卷题库及部分参考答案
- [高等教育]本土电子元器件目录分销商如何赢得生意
- [高等教育]七年级岭南版美术教案
- [高等教育]书作文之书法活动通讯稿
- [高等教育]Endnote X 软件使用入门和用法总结(LS)
- [高等教育]嵌入式系统的现状及发展状况
- [高等教育]2012抗菌药物专项整治活动方案解读
- [高等教育]人教版新课本一年级数学下册期末试卷
- [高等教育]爱课程民法学观后感
- [高等教育]930机组使用说明书1
- [高等教育]煤气设备设施点检标准
- [高等教育]常见室内观叶植物图解
- [高等教育]312党员群众路线心得体会
- [高等教育]小学信息(苗版)第一册全册教案
- 在市---局2010党建大会上的讲话
- 《科哲》提纲及补充阅读材料(2010.7)
- 苏州高博软件技术职业学院论文开题报告
- 兼职导游管理的困境及对策探讨
- 基于通用设计理念的现代厨房产品语义研
- 康乐一中2010年至2011年度鼓号队、花束
- 第10章_数据收集整理与描述_期末复习课
- 2008年黑龙江林甸商贸购物中心营销策划
- 水硬度的测定实验报告
- 五分钟教你拍摄夜景光绘照
- 2014年临床妇产科三基三严试题及答案
- 0第二课 纾解压力第一站了解压力
- 解析建筑工程电气设备安装施工技术要点
- 地方性应用型本科高校“双师型”师资队
- 高考语文专题复习课件:小说阅读指导
- 装饰工程投标书2
- 大学生就业难问题探讨及对策
- English and Its History
- 青岛市城市房屋修缮工程质量监督管理办
- 初中英语形容词和副词的用法和练习题




