C语言张小东

上传人:宝路 文档编号:47914042 上传时间:2018-07-06 格式:PPT 页数:32 大小:416.32KB
返回 下载 相关 举报
C语言张小东_第1页
第1页 / 共32页
C语言张小东_第2页
第2页 / 共32页
C语言张小东_第3页
第3页 / 共32页
C语言张小东_第4页
第4页 / 共32页
C语言张小东_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《C语言张小东》由会员分享,可在线阅读,更多相关《C语言张小东(32页珍藏版)》请在金锄头文库上搜索。

1、语 言 程 序 设 计 与 应 用 样 章第 4 章 模 块 化 设 计 与 应 用C 第4章 模块化设计与应用主要内容 模块化程序设计 函数定义 函数调用 函数声明 函数的传递参数 函数的返回值 预处理模块化分语 言 程 序 设 计 与 应 用 样 章第 4 章 模 块 化 设 计 与 应 用C4.1 模块化程序设计方法 4.1.1模块化程序设计思想 将整个系统进行分解成若干功能独立的,能分别设计 、编程和测试的模块。 特点: v 程序员能单独地负责一个或几个模块的开发。 v 开发一个模块不需要知道系统其它模块的内部结构和编 程细节。 v 模块之间的接口尽可能简明,模块应尽可能彼此隔离。 v

2、 具有可修改性 v 具有易读性 v 具有易验证性 模块化分方法:自上向下,逐步分解,分而治之 语 言 程 序 设 计 与 应 用 样 章第 4 章 模 块 化 设 计 与 应 用C4.1 模块化程序设计方法 4.1.2 模块规划实例例4-1 简单计算器问题描述:完成一个简单的计算器程序。要 求能够完成如下的常用运算:加、减、乘、除、取余、倒数、以e 为底的对数、以10为底的对数、开平方、指数运算、正弦、余弦 、正切、二、八、十、十六进制之间的相互转换、位运算符运算 、位段位运算、求pi()和阶乘。问题分析1.模块分类 2.模块功能细化六则运算 对数运算 以10为底的运算 以e为底的运算 语 言

3、 程 序 设 计 与 应 用 样 章第 4 章 模 块 化 设 计 与 应 用C 4.1.2 模块规划实例解决方案 解决方案4.1 模块化程序设计方法六 则 运 算对 数 运 算幂 运 算Pi阶 乘以 e 为 底以 10 为 底开 方指 数 运 算三 角 运 算余 弦正 弦正 切二 转 八 十 十 六八 转 二 十 十 六十 转 二 八 十 六十 六 转 二 八 十进 制 转 换位 运 算位 运 算 符 运 算位 段 位 运 算简单计算器语 言 程 序 设 计 与 应 用 样 章第 4 章 模 块 化 设 计 与 应 用C例4-2 学生成绩档案管理 问题描述:完成一个综合的学生成绩档案管理系统

4、。要求能够管 理N个学生的3门功课(英语、高数和C语言)的成绩,需要实现以下 功能:读入/存储学生信息、录入/修改/删除学生基本信息、录入 /修改成绩、按学号/姓名查询、排序、浏览、统计每门课的优、 良、中等、及格、不及格人数。 4.1 模块化程序设计方法问题分析1.模块分类 2.模块功能细化学生信息维护 学生成绩维护 学生信息录入、修 改、查询等 语 言 程 序 设 计 与 应 用 样 章第 4 章 模 块 化 设 计 与 应 用C解决方案学 生 成 绩 管 理学 生 档 案 管 理查 询统 计读 入 学 生 信 息录 入 学 生 信 息修 改 学 生 信 息删 除 学 生 信 息录 入 成

5、 绩修 改 成 绩存 储 学 生 信 息按 学 号 查 询按 姓 名 查 询浏 览排 序学生成绩档案管理语 言 程 序 设 计 与 应 用 样 章第 4 章 模 块 化 设 计 与 应 用C4.2 函数库函数;自定义函数 4.2.1 函数的定义一般形式: 函数类型 函数名(数据类型 参数1, 数据类型 参数2, ) 函数体 函数运行完毕后返回值 的类型,无加void 函数的唯一标识符合标识符命名规则 参数表没有加 void 函数定义不允许嵌套 语 言 程 序 设 计 与 应 用 样 章第 4 章 模 块 化 设 计 与 应 用C4.2 函数问题分析(1) 在计算机中只能求出近似值 (2) 通过

6、截取所给公式的前n项来实现所要求的精度。n的大小由截 取的条件决定,此处定为取到某一项的绝对值小于10-6为止(3) 正负号交替;分母依次相差为2;可以用循环结构实现求和运算例4-3(a) 定义一个函数,实现用公式求的值。 语 言 程 序 设 计 与 应 用 样 章第 4 章 模 块 化 设 计 与 应 用C解决方案程序实现/* 定义一个函数 */ /*purpose: 定义一个函数,求Pi的近似值author : gcycreated: 2008/08/12 14:58:22 */ #include float SelPi(void) /求pi int nSign=1;float fNumb

7、er=1.0,fTerm=1,fPi=0;while(fabs(fTerm)1e-6)fPi=fPi+fTerm;fNumber=fNumber+2;nSign=-nSign;fTerm=nSign/fNumber;return(4*fPi); 语 言 程 序 设 计 与 应 用 样 章第 4 章 模 块 化 设 计 与 应 用C4.2 函数 4.2.2 函数的调用1. 函数声明函数类型 函数名(数据类型 参数名1, 数据类型 参数名2, ); 在主调函数之前,需对被调函数进行声明说 明以下三种形式可以不用函数声明 (1) 当被调用函数的函数定义出现在主调函数之前时。 (2) 如果在所有函数定

8、义之前,在函数外部(例如文件或程序开始处)预先 对各个函数进行了声明,则在主调函数中可以省去对被调用函数的说明。 (3) 若被调用函数的函数类型为int型时。语 言 程 序 设 计 与 应 用 样 章第 4 章 模 块 化 设 计 与 应 用C4.2 函数 4.2.2 函数的调用 2. 函数调用函数名(实参表列);说 明(1) 在主调函数中调用一个函数时,函数名后面括号中的参数(可以是一个 表达式)称为“实际参数”(简称“实参”)。 (2) 实参必须在类型上按顺序与形参一一对应和匹配。如果类型不匹配,C 编译程序将按赋值兼容的规则进行转换。 (3) 如果实参表中包括多个参数表达式,对实参的求值

9、顺序随系统而异。有 的系统按自左向右顺序求实参的值,有的系统则相反,这一点读者尤其要注 意。 (4) 调用函数时,函数名称必须与具有该功能的自定义函数名称完全一致。#include void main() float SelPi(void);/函数声明printf(“pi=%.5fn“,SelPi(); 语 言 程 序 设 计 与 应 用 样 章第 4 章 模 块 化 设 计 与 应 用C4.2 函数 4.2.2 函数的调用2. 函数调用注意: 在C语言中,可以用以下几种方式调用函数: (1) 函数表达式。函数作为表达式的一项,出现在表达式中,以函数 返回值参与表达式的运算。这种方式要求函数是

10、有返回值的。读者可 以尝试一下把此例中的函数调用方式改成此种方式。 (2) 函数语句。C语言中的函数可以只进行某些操作而不返回函数值, 这时的函数调用可作为一条独立的语句。 (3) 函数实参。函数作为另一个函数调用的实际参数出现。这种情况 是把该函数的返回值作为实参进行传送,因此要求该函数必须是有返 回值的。此例中的函数调用就属于此种方式。 语 言 程 序 设 计 与 应 用 样 章第 4 章 模 块 化 设 计 与 应 用C4.2 函数 4.2.2 函数的调用3.函数的参数 在主调函数和被调用函数之间的数据传递是通过函数的参 数进行的,实际上这也是数据共享的一种形式。实参变量 对形参变量的数

11、据传递是单向传递 例4-4 用迭代公式为: ,求 。 问题分析(1) 从数学的角度来说,可以一直迭代下去。但用计算机求解则不可 以,并且大多数情况下得到的都是近似值。 (2) 需要一个条件限制迭代次数,这里采用前后两次求出的的差的绝 对值小于所给的精度10-6这一限制条件。 (3) 迭代公式是很容易用循环结构实现的。语 言 程 序 设 计 与 应 用 样 章第 4 章 模 块 化 设 计 与 应 用C解决方案程序实现语 言 程 序 设 计 与 应 用 样 章第 4 章 模 块 化 设 计 与 应 用C程序实现说 明(1) 可以证明这个迭代公式对于任 意初值x00都是收敛的。大家不妨尝试 一下,

12、只需要具备数列收敛的相关知识 即可。该公式来源于牛顿迭代法。具体 推导过程,可以参考“数值分析”或“ 计算方法”的方面的书籍。 (2) 程序中定义了函数 SelSquareRoot(float fRadicand),指 定了一个浮点类型的形式参数 fRadicand,此时的fRadicand并没有实 际的意义;在语句printf(“%f的平方根 为 :%fn“,fRadic,SelSquareRoot(fRadic );当中,将实际的参数fRadic赋给了 形参fRadicand,相当于fRadicand =fRadic,并且通过函数调用,开始执 行函数SelSquareRoot ()。 (3

13、) 由于主调函数main()放在被调 用函数SelSquareRoot ()之后,所以这 里可以不进行函数声明。语 言 程 序 设 计 与 应 用 样 章第 4 章 模 块 化 设 计 与 应 用C 4.2.2 函数的调用3.函数的参数注意: (1) 在函数没有被调用时,函数中的形参只是一个符号, 系统并不为之分配内存空间,只有该函数被调用时,才会 为之分配存储空间,并且在调用结束后,形参所占的内存 也被释放。 (2) 在内存中,实参单元与形参单元是不同的单元。 (3) 实参可以是常量、变量或表达式,但要求它们有确定 的值,也就是说,在调用函数时必须给形参赋以确定的值 。 (4) 在被定义的函

14、数中,必须指定形参的类型,并且实参 与形参的类型应一致,否则将发生类型“不匹配的错误”。 (5) 形参在获得值之后便与实参相脱离,此后无论形参发 生了怎样的改变,都不会影响到实参。 语 言 程 序 设 计 与 应 用 样 章第 4 章 模 块 化 设 计 与 应 用C例4-5 定义一个有两个参数函数Swap,函数Swap能够 完成对这两个参数的值的交换。 语 言 程 序 设 计 与 应 用 样 章第 4 章 模 块 化 设 计 与 应 用C 由此可以看出,虽然在函数Swap()中,变量 nNum1和nNum2的值已经交换,但并没有影响到 主函数中的nNumber1和nNumber2的值,此时仍

15、 然输出为nNumber1=4,nNumber2=7。这里,请 读者思考一下:有没有办法使最后的输出结果为 nNumber1=7,nNumber2=4呢?请到后面的第6章 中找答案。 对于主调函数和被调用函数之间的数据传递是通 过函数参数实现的,实参变量对形参变量的数据 传递是单向传递,即只由实参传给形参,而不能 由形参传回来给实参的内容已讲述完毕。但读者 可能希望通过函数调用使主调函数能得到一个被 调用函数的执行结果,这又该如何实现呢?语 言 程 序 设 计 与 应 用 样 章第 4 章 模 块 化 设 计 与 应 用Creturn ( 返回表达式 );4. 函数返回值 函数的返回值是通过函

16、数中的return语句获得的。return语句将被调函数 中的一个确定值带回主调函数中去。return语句的一般格式是:注意: (1) return语句的功能:返回主调函数,并将“返回表达式”的值带给主调函数。 (2) 函数的返回值可以有一个以上的return语句,哪一个return语句起作用要看使 用的具体环境。 (3)函数的返回值是确定的。这里包含两层意思,一是函数值的类型确定。二 是函数的返回值确定,即在return语句中的表达式的值必须确定。(4)调用函数中无return语句,并不是不返回一个值,而是一个不确定的值。 为了明确表示不返回值,可以用“void”定义成“无(空)类型”。为了使程序具 有良好的可读性并减少出错,凡不要求返回值的函数都应定义为 空类型,而不使 用系统的缺省处理。(5)在定义函数时,对函数类型的说明,应与return语句中返回

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 教学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号