教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 高等教育 >

第三讲 模块化程序设计

来源:网络收集 时间:2026-08-23
导读: 第三讲 模块化程序设计 第三章 模块化程序设计3.1 模块化程序设计的方法与特点 3.2 函数的定义 3.3 无返回值函数的定义与调用 3.4 有返回值函数的定义与调用 3.5 函数嵌套调用和函数声明 3.6 函数的递归调用 3.7 库函数的使用 3.8指针和指针作为函数参数 3.1

第三讲 模块化程序设计

第三章 模块化程序设计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字,全部文档内容请下载后查看。喜欢就下载吧 ……
第三讲 模块化程序设计.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/1706300.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)