好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

[高等教育]第8章 函数.ppt

236页
  • 卖家[上传人]:油条
  • 文档编号:49541893
  • 上传时间:2018-07-30
  • 文档格式:PPT
  • 文档大小:3.40MB
  • / 236 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 第第7 7章章 用函数实现模块化程序设计用函数实现模块化程序设计7.1为什么要用函数 7.2怎样定义函数7.3函数申明的方法7.4调用函数7.5函数的嵌套调用 7.6函数的递归调用7.7数组作为函数参数 7.8局部变量和全局变 量7.9变量的存储方式和生存期7.10 关于变量的声明和定义7.11 内部函数和外部函数7.17.1为什么要用函数为什么要用函数Ø问题:u 如果程序的功能比较多,规模比较大,把 所有代码都写在main函数中,就会使主函数 变得庞杂、头绪不清,阅读和维护变得困难u 有时程序中要多次实现某一功能,就需要 多次重复编写实现此功能的程序代码,这使程 序冗长,不精炼7.17.1为什么要用函数为什么要用函数Ø解决的方法:用模块化程序设计的思路u 采用“组装”的办法简化程序设计的过程u 事先编好一批实现各种不同功能的函数u 把它们保存在函数库中,需要时直接用7.17.1为什么要用函数为什么要用函数Ø解决的方法:用模块化程序设计的思路u 函数就是功能u 每一个函数用来实现一个特定的功能u 函数的名字应反映其代表的功能7.17.1为什么要用函数为什么要用函数Ø在设计一个较大的程序时,往往把它分为若干 个程序模块,每一个模块包括一个或多个函数 ,每个函数实现一个特定的功能ØC程序可由一个主函数和若干个其他函数构成Ø主函数调用其他函数,其他函数也可以互相调 用Ø同一个函数可以被一个或多个函数调用任意多 次7.17.1为什么要用函数为什么要用函数mainabcfghdeie7.17.1为什么要用函数为什么要用函数Ø可以使用库函数Ø可以使用自己编写的函数Ø在程序设计中要善于利用函数,可以减少 重复编写程序段的工作量,同时可以方便 地实现模块化的程序设计7.17.1为什么要用函数为什么要用函数例7.1 输出以下的结果,用函数调用实现。

      How do you do!******************7.17.1为什么要用函数为什么要用函数Ø解题思路:u 在输出的文字上下分别有一行“*”号,显 然不必重复写这段代码,用一个函数 print_star来实现输出一行“*”号的功能u 再写一个print_message函数来输出中 间一行文字信息u 用主函数分别调用这两个函数#include void main() { void print_star(); void print_message(); print_star(); print_message(); print_star(); } void print_star() { printf(“******************\n”); }void print_message() { printf(“ How do you do!\n”); }输出16个*输出一行文字#include void main() { void print_star(); void print_message(); print_star(); print_message(); print_star(); } void print_star() { printf(“******************\n”); }void print_message() { printf(“ How do you do!\n”); }声明函数定义函数#include void main() { void print_star(); void print_message(); print_star(); print_message(); print_star(); } void print_star() { printf(“******************\n”); }void print_message() { printf(“ How do you do!\n”); }Ø说明:(1) 一个C程序由一个或多个程序模 块组成,每一个程序模块作为一个源程序文 件。

      对较大的程序,一般不希望把所有内容 全放在一个文件中,而是将它们分别放在若 干个源文件中,由若干个源程序文件组成一 个C程序这样便于分别编写、分别编译, 提高调试效率一个源程序文件可以为多个 C程序共用Ø说明:(2) 一个源程序文件由一个或多个函 数以及其他有关内容(如预处理指令、数据 声明与定义等)组成一个源程序文件是一 个编译单位,在程序编译时是以源程序文件 为单位进行编译的,而不是以函数为单位进 行编译的Ø说明:(3) C程序的执行是从main函数开始 的,如果在main函数中调用其他函数,在 调用后流程返回到main函数,在main函 数中结束整个程序的运行Ø说明:(4) 所有函数都是平行的,即在定义 函数时是分别进行的,是互相独立的一个 函数并不从属于另一个函数,即函数不能嵌 套定义函数间可以互相调用,但不能调用 main函数main函数是被操作系统调用 的Ø说明:(5) 从用户使用的角度看,函数有两种 u 库函数,它是由系统提供的,用户不必 自己定义而直接使用它们应该说明,不同 的C语言编译系统提供的库函数的数量和功 能会有一些不同,当然许多基本的函数是共 同的u 用户自己定义的函数。

      它是用以解决用 户专门需要的函数Ø说明:(6) 从函数的形式看,函数分两类① 无参函数无参函数一般用来执行指 定的一组操作无参函数可以带回或不带回 函数值,但一般以不带回函数值的居多② 有参函数在调用函数时,主调函 数在调用被调用函数时,通过参数向被调用 函数传递数据,一般情况下,执行被调用函 数时会得到一个函数值,供主调函数使用7.2 7.2 怎样定义函数怎样定义函数7.2.1 为什么要定义函数7.2.2 定义函数的方法7.2.1 7.2.1 为什么要定义函数为什么要定义函数ØC语言要求,在程序中用到的所有函 数,必须“先定义,后使用”Ø指定函数名字、函数返回值类型、函 数实现的功能以及参数的个数与类型 ,将这些信息通知编译系统7.2.2 7.2.2 定义函数的方法定义函数的方法1.定义无参函数定义无参函数的一般形式为:类型名 函数名(void) {函数体 } 类型名 函数名() {函数体 } 包括声明部分 和语句部分包括声明部分和 语句部分7.2.2 7.2.2 定义函数的方法定义函数的方法1.定义无参函数定义无参函数的一般形式为:类型名 函数名(void) {函数体 } 类型名 函数名() {函数体 } 指定函数 值的类型指定函数 值的类型7.2.2 7.2.2 定义函数的方法定义函数的方法2.定义有参函数定义有参函数的一般形式为:类型名 函数名(形式参数表列){函数体}Ø函数定义举例#includeint max(int x, int y){return x>y?x:y;}void main( ){int a=2, b=3, c;c = max(a, b);printf(“c=”,%d);}7.2.2 7.2.2 定义函数的方法定义函数的方法3. 定义空函数定义空函数的一般形式为:类型名 函数名( ){ }Ø先用空函数占一个位置,以后逐步扩充dummy( ){ }/*主调函数调用空函数时,只表明 这里要调用一个函数,但函数本身什么 工作也不做等,以后扩充函数功能时补充 上。

      */7.3 7.3 函数函数声明声明的方法的方法n一般形式n类型 函数名(类型1, 类型2, .);n类型 函数名(类型1 形参1,类型2 形参2, .);n举例nint max(int, int);nint max(int x, int y);nvoid dummy( );/* 无参函数原型 */nvoid dummy(void); /* 同上 */Ø函数原型的一般形式有两种:如 float add(float x, float y);float add(float, float);Ø原型说明可以放在文件的开头,这时所有 函数都可以使用此函数7.3 7.3 函数函数声明声明的方法的方法 函数声明举例 (1)#include void main( ){int max(int x, int y); /* 函数声明 */ int a, b, c; c = max(a, b);printf(“c=”,%d); } int max(int x, int y) {return x>y?x:y; }7.3 7.3 函数函数声明声明的方法的方法 函数声明举例 (2)#include int max(int x, int y); /* 函数声明 */void main( ) {int a, b, c; c = max(a, b);printf(“c=”,%d); } int max(int x, int y) {return x>y?x:y; }7.3 7.3 函数函数声明声明的方法的方法 函数声明举例 (3)#include int max(int x, int y){return x>y?x:y; } void main( ) {int a, b, c; c = max(a, b);printf(“c=”,%d); }下面这个函数定义对吗?1、void func1(a,b,c){printf(“%d,%d,%d”,a,b,c);}2、 float func2(float a,float b){ float a,b,c;c=a+b;return c;}作业:3、int func3( ){int i,j,k;i=2;j=i*i; k=j*j;printf(“%d,%d,%d”,i,j,k) ; }4、请在以下程序第一行的下划线1处填写适当内 容,使程序能正确运行。

      include “stdio.h”〖 1 〗 ( double,double);void main( ){ double x,y;scanf(“%lf%lf“,printf(“%lf\n“,max(x,y));}double max(double a,double b){ return (a>b ? a:b); }double max 5、若程序中定义了以下函数double myadd(double a,double B) { return (a+B) ;}并将其放在调用语句之后,则在调用之前 应该对该函数进行说明,以下选项中错误的说明 是 A) double myadd(double a,B) ; B) double myadd(double,double); C) double myadd(double b,double A) ; D) double myadd(double x,double y);7.47.4调用函数调用函数7.4.1函数调用的形式7.4.2函数调用时的数据传递7.4.3函数调用的过程7.4.4函数调用时的数据传递7.4.5函数的返回值7.4.17.4.1函数调用的形式函数调用的形式Ø函数调用的一般形式为:函数名(实参表列)Ø如果是调用无参函数,则“实参表列” 可以没有,但括。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.