第7章 用函数实现模块化程序设计 (2).ppt
上传人:qw****27 上传时间:2024-09-12 格式:PPT 页数:66 大小:458KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

第7章 用函数实现模块化程序设计 (2).ppt

第7章用函数实现模块化程序设计(2).ppt

预览

免费试读已结束,剩余 56 页请下载文档后查看

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第7章用函数实现模块化程序设计7.1为什么要用函数问题的提出:如果程序的功能多,规模大,所有代码都写在main函数中,会使主函数变得庞杂,阅读维护变得困难●若程序中多次实现某一功能,就需多次重复编写此功能的程序代码,这使程序冗余。●解决的方法:用模块化程序设计的思路采用“组装”的办法简化程序设计的过程事先编好一批实现各种不同功能的函数把它们保存在函数库中,需要时直接调用main主函数和两个被调用函数组成的程序一.通常方法:各函数包含在一个文件中#include"stdio.h"voidmain(){voidp1();voidp2();p1();p2();p1();}voidp1(){printf("*********************\n");}voidp2(){printf("Howdoyoudo!\n");}二.文件包含的方法用#include“文件名”,将所指文件中的内容包含进来进行预处理,然后一起进行编译、连接、运行用文件包含的方法,文件在同一目录#include"stdio.h"#include"t2.h"#include"t3.h"voidmain(){p1();p2();p1();}三、工程的方法在vc环境下建立工程1.在文件菜单项中选新建命令,在新建选项卡中选工程2.在工程选项卡中选:Win32consoleApplication3.在位置写上工程路径,如E:\4.在工程框写工程名,如:p15.选Anemptyproject,选完成,选确定6.在工程菜单项中选添加工程,再选文件(新建)7.若还有其它工程文件,重复步骤6….7.2怎样定义函数7.2.1为什么要定义函函数不定义就无法使用,必须“先定义,后使用”定义时:指定函数的名字:以便以后按名调用。指定函数类型:即函数返回值的类型。指定函数参数的名字和类型:以便在调用函数时向它们传递数据函数的功能:是在函数体中确定的对于库函数:只用#include指令把有关的头文件包含到本文件模块中7.2.2定义函数的方法1.无参函数的定义形式类型标识符函数名(){声明部分语句部分}2.有参函数的定义形式类型标识符函数名(形式参数表列){声明部分语句部分}3.空函数定义形式类型名函数名(){}用空函数占一个位置,以便以后逐步扩充好处:程序结构清楚,可读性好,以后扩充新功能方便,对程序结构影响不大7.3调用函数7.3.1函数调用的形式一般形式:函数名(实参表列)调用无参函数时,括号不能省略有多个实参时,各参数间用逗号隔开函数调用通常有3种方式:1.函数调用语句把函数调用单独作为一个语句如printf_star();这时不要求函数带回值,只要求函数完成一定的操作2.函数表达式●函数调用出现在另一个表达式中,要求函数带回一个确定的值以参加表达式的运算如c=max(a,b);3.函数参数●函数调用作为另一函数调用时的实参如m=max(a,max(b,c));●其中max(b,c)是一次函数调用,它的值作为max另一次调用的实参7.3.2函数调用时的数据传递1.形式参数和实际参数●形式参数,出现在被调函数中,通常由变量组成。●实际参数,出现在主调函数中,通常由常量、变量、表达式组成2.实参和形参间的数据传递●在调用函数过程中,系统会把实参的值传递给被调用函数的形参●或者说,形参从实参得到一个值●该值在函数调用期有效,可参加被调函数中的运算例7.2输入两个整数,求其中较大者,用函数找。●解题思路:(1)函数名应是见名知意,今定名为max(2)由于给定的两个数是整数,返回主调函数的较大数应该是整型(3)max函数应当有两个参数,以便从主函数接收两个整数,因此参数的类型应当是整型先编写max函数:intmax(intx,inty){intz;z=x>y?x:y;return(z);}实参:主调函数提供,如常量、变量、表达式形参:被调函数提供,接收主调函数的数据调用函数时的数据传递#include"stdio.h"voidmain(){inta,b,c;intmax(int,int);scanf("%d%d",&a,&b);c=max(a,b);printf("Maxis%d\n",c);}intmax(intx,inty){intz;z=x>y?x:y;return(z);}形实参单向传递数据,占不同的存储单元#include"stdio.h"voidmain(){inta=2,b=3;intadd(intx,inty);printf("a=%d,b=%d\n",a,b);printf("&a=%x,&b=%x\n",&a,