陈立潮全套配套课件C语言程序设计教程——面向计算思维和问题求解 第7章 新

上传人:f****u 文档编号:123170472 上传时间:2020-03-08 格式:PPTX 页数:65 大小:1.44MB
返回 下载 相关 举报
陈立潮全套配套课件C语言程序设计教程——面向计算思维和问题求解 第7章 新_第1页
第1页 / 共65页
陈立潮全套配套课件C语言程序设计教程——面向计算思维和问题求解 第7章 新_第2页
第2页 / 共65页
陈立潮全套配套课件C语言程序设计教程——面向计算思维和问题求解 第7章 新_第3页
第3页 / 共65页
陈立潮全套配套课件C语言程序设计教程——面向计算思维和问题求解 第7章 新_第4页
第4页 / 共65页
陈立潮全套配套课件C语言程序设计教程——面向计算思维和问题求解 第7章 新_第5页
第5页 / 共65页
点击查看更多>>
资源描述

《陈立潮全套配套课件C语言程序设计教程——面向计算思维和问题求解 第7章 新》由会员分享,可在线阅读,更多相关《陈立潮全套配套课件C语言程序设计教程——面向计算思维和问题求解 第7章 新(65页珍藏版)》请在金锄头文库上搜索。

1、 计算思维 与 程序设计C 第第7 7章章 问题的模块化求解问题的模块化求解 语言程序设计教程 面向计算思维和问题求解 C 第第7 7章章 问题的模块化求解问题的模块化求解 函数的定义函数的定义 函数的调用和声明函数的调用和声明 函数间的参数传递函数间的参数传递 数组作函数参数数组作函数参数 EXITEXIT 函数 函数 变量的作用域与存储类型变量的作用域与存储类型 C C语言的编译预处理语言的编译预处理 本章要点 7 0 模块化程序设计 基本思想 基本思想 将一个大的程序按功能分割成一些小模 块 特点特点 各模块相对独立 功能单一 结构清晰 接口简单 控制了程序设计的复杂性 提高元件的可靠性

2、 缩短开发周期 避免程序开发的重复劳动 易于维护和功能扩充 开发方法开发方法 自上向下 逐步分解 分而治之 7 0 模块化程序设计 C程序结构 说明 说明 1 1 一个一个C C程序可以分为若干个函数程序可以分为若干个函数 2 2 每个程序有且只有一个主每个程序有且只有一个主函数 函数 mainmain 其他都其他都 是子函数是子函数 3 3 子函数可以相互调用子函数可以相互调用 但主函数不能但主函数不能被调用被调用 4 4 一个一个C C源程序由一个或多个文件构成源程序由一个或多个文件构成 每个文件就每个文件就 是一个编译单位是一个编译单位 7 0 模块化程序设计 7 1 引例 7 1 1

3、7 1 1 问题描述问题描述 1 1 在在家庭装修铺设瓷砖的工程计划中 由于每个家庭的住家庭装修铺设瓷砖的工程计划中 由于每个家庭的住 房面积和房屋结构各不相同 需要计算装修各个房间的瓷砖用房面积和房屋结构各不相同 需要计算装修各个房间的瓷砖用 量 一般情况下 地面瓷砖和墙面瓷砖的规格不同 且有的房量 一般情况下 地面瓷砖和墙面瓷砖的规格不同 且有的房 间只需要铺设地面瓷砖 假设已测得各个房间的地面面积和墙间只需要铺设地面瓷砖 假设已测得各个房间的地面面积和墙 面面积 需编程计算所需地面瓷砖和墙面瓷砖的数量 瓷砖切面面积 需编程计算所需地面瓷砖和墙面瓷砖的数量 瓷砖切 割情况忽略不计 割情况忽

4、略不计 7 1 引例 7 1 1 7 1 1 问题描述问题描述 2 2 某商店需要一个商品销售管理系统软件 对商品的销量某商店需要一个商品销售管理系统软件 对商品的销量 做统计分析 要求系统具有以下功能 做统计分析 要求系统具有以下功能 1 1 录入每种商品的编号 名称和日销量 录入每种商品的编号 名称和日销量 2 2 统计每种商品的月销量和平均销量 统计每种商品的月销量和平均销量 3 3 按每种商品的月销量由高到低进行销量排行 按每种商品的月销量由高到低进行销量排行 4 4 按商品编号查询某种商品的销售排名及日销量 按商品编号查询某种商品的销售排名及日销量 5 5 输出每种商品的编号 名称

5、日销量 月销量和平均销量 输出每种商品的编号 名称 日销量 月销量和平均销量 7 1 2 7 1 2 问题分析问题分析 引引例例1 1 完全可以用前面所学的问题求解方法实现 完全可以用前面所学的问题求解方法实现 缺点缺点 代码冗余代码冗余 引引例例2 2 也可以利用前面所学知识也可以利用前面所学知识在在主函数中实现所有主函数中实现所有功能功能 缺点 缺点 功能功能繁多 主繁多 主函数冗长函数冗长 结构不结构不清晰 清晰 7 1 引例 7 1 3 7 1 3 算法设计算法设计 引引例例1 1 将将计算瓷砖数量的基本任务设计成计算瓷砖数量的基本任务设计成函数函数 引例引例2 2 将将 商品销售管理

6、系统商品销售管理系统 看成总任务 将其分解成看成总任务 将其分解成5 5个子任个子任 务 录入商品信息 统计月销量和平均销量 按月销量排序 务 录入商品信息 统计月销量和平均销量 按月销量排序 按商品编号查询和输出按商品编号查询和输出 子 子任务需要通过自定义函数实现 任务需要通过自定义函数实现 7 1 引例 7 2 函数的定义 函数 函数 具有某种功能的独立程序段 具有某种功能的独立程序段 1 1 从 从程序设计方法看程序设计方法看C C函数 它是实现模函数 它是实现模 块化程序设计的语法元素 块化程序设计的语法元素 2 2 从 从C C语言中程序的组成方式看语言中程序的组成方式看C C函数

7、 函数 它是程序的基本组成单位 它是程序的基本组成单位 7 2 函数的定义 从用户使用的角度看 函数有从用户使用的角度看 函数有两种两种 标准函数标准函数 库函数库函数 用户自己定义的函数用户自己定义的函数 库库函数 函数 是由编译系统提供的已设计好的函数 用户是由编译系统提供的已设计好的函数 用户 只需调用而无需去实现它 前几章用过的只需调用而无需去实现它 前几章用过的scanfscanf printfprintf getchargetchar putcharputchar fmodfmod sqrtsqrt等都是库函数 等都是库函数 用户用户自定义函数 自定义函数 由程序员自己定义和设计由

8、程序员自己定义和设计的函数的函数 需要程序员自己来编写函数功能实现代码 需要程序员自己来编写函数功能实现代码 函数定义一般函数定义一般格式 格式 合法标识符 函数返回值类 型 缺省int型 无返回值void 函数体 函数类型 函数名 形参类型说明表 说明部分 语句部分 现代风格 例 有参函数 现代风格 int max int x int y int z z x y x y return z 例 有参函数 现代风格 int max int x y int z z x y x y return z 例 空函数 void dummy 函数体为空 例 无参函数 void printstar print

9、f n 或 void printstar void printf n 7 2 函数的定义 例例7 17 1 编写一个函数 求n 问题分析 问题分析 函数函数功能为计算功能为计算n n 实现这一功能需要参数传入 实现这一功能需要参数传入n n的具体的具体 值 然后经过函数计算返回值 然后经过函数计算返回n n 函数函数首部的各个部分定义如下 首部的各个部分定义如下 函数函数返回值类型 由于函数返回的阶乘数值较大 可以设函数体类型为返回值类型 由于函数返回的阶乘数值较大 可以设函数体类型为long long 型 型 函数函数名 根据函数的功能是求阶乘运算 可定义函数名为名 根据函数的功能是求阶乘运

10、算 可定义函数名为 FactFact 形参形参类型及个数 类型及个数 n n的值为多少应由形参的值为多少应由形参n n决定 故取决定 故取intint型变量型变量n n为形参 为形参 7 2 函数的定义 例例7 17 1 编写一个函数 求n 函数设计 函数设计 long Fact int n int i long result 1 for i 2 i y m x else m y return m main int m x y scanf d d m max x y printf max d n m 函数定义 函数调用 实参 形参 7 37 3 函数的调用和声明 函数的调用和声明 7 3 1

11、7 3 1 函数的函数的调用调用 函数调用的一般形式为 函数名 实参表 在 语言中 可以用以下几种方式调用函数 1 函数语句形式调用 2 函数表达式形式调用 3 函数实参形式调用 切记 实参的个数 类型和顺序 必须与被调用函 数所要求的参数个数 类型和顺序一致 才 能正确地进行数据传递 7 3 1 7 3 1 函数函数的的调用调用 函数的参数分为形参和实参两种 作用是实现数据传送 形参 即 形式参数 出现在函数定义中 当发 生函数调用时 接受传递过来的值 实参 即 实际参数 出现在函数调用中 当发生 函数调用时 调用函数把实参的值复制1份 传送 给被调用函数的形参 从而实现实参向形参的数 据传

12、送 1 采用函数语句形式调用 void max int x int y int m if x y printf max d n x else printf max d n y main int m x y scanf d d max x y 函数语句 形式调用 2 采用函数表达式形式调用 int max int x int y int m if x y m x else m y return m main int m x y scanf d d m max x y printf max d n m 函数表达 式 形式调用 3 采用函数实参形式调用 int max int x int y int

13、 m if x y m x else m y return m main int x y scanf d d printf max d n max x y 函数实参 形式调用 例 计算x的立方 include float cube float x return x x x void main float a product printf Please input value of a scanf f product cube a printf Cube of 4f is 4f n a product x a product 1 2 1 2 1 728 7 3 1 函数的调用 例例7 37 3

14、编写main 函数 调用函数Isprime 判定用户从键 盘输入的一个正整数是否为素数 问题分析 问题分析 Isprime 函数应该有一个int型形参 存储被判定的数 而函数体内可直接输出判定结果无需返回值 故函数类型为 void 7 3 1 函数的调用 例例7 37 3 编写main 函数 调用函数Isprime 判定用户从键 盘输入的一个正整数是否为素数 算法设计 算法设计 本例的主要功能在Isprime 函数中实现 主函数中只需从 键盘获取一个正整数x0 然后以x0为参数调用Isprime 函数即 可 因此 主要的算法思想体现在Isprime 函数中 根据上面 的分析 该函数只需逐个判定

15、从2 x 1的每个整数是否能整除x 即可 若有某个数能整除x 则x不是素数 否则x是素数 这 一过程可通过for语句实现 7 3 1 函数的调用 对被调用函数要求 必须是已存在的函数 库函数 include 用户自定义函数 函数类型说明 函数原型声明 一般形式 函数类型 函数名 形参类型 形参名 或 函数类型 函数名 作用 告诉编译系统函数类型 参数个数及类型 以便检 验 函数定义与函数声明不同 函数说明位置 程序的数据说明部分 函数内或外 7 3 2 函数的声明 下列情况下 可不作函数声明 若函数返值是char或int型 系统自动按int型处理 被调用函数定义出现在主调函数之前 有些系统 如

16、Borland C 要求函数声明指出函数返值 类型和形参类型 并且对void 和 int 型函数也要进 行函数声明 7 3 2 函数的声明 函数原型声明举例 include void main float a b int c scanf f f c max a b printf Max is d n c int max float x float y float z z x y x y return z int型函数可不作函数说明 Borland C 不行 include float add float x float y float z z x y return z void main float a b c scanf f f c add a b printf sum is f c 被调函数出现在主调函数 之前 不必函数说明 include float add float x float y void main float add float float float a b c scanf f f c add a b printf sum is f c float add floa

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

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