第4章 函数及预处理(1).ppt
第4章 函数及预处理4.1 函数概述4.2 函数定义4.3 函数调用4.4 函数重载4.5 有默认参数的函数4.6 函数的嵌套调用4.7 局部变量和全局变量4.8 静态局部变量4.9 多文件中的全局变量和函数4.10 声明和定义4.11 预处理命令1第1章第3章:介绍基本元素、结构和技巧,可以编写简单的C+程序。第4章第6章:介绍高级元素、结构和技巧,编写高效优化的C+程序。思考?思考?(1)若程序较大,上万行,如何编程和调试最方便?(2)若求(m!n!)/(m-n)!的值,其中,m、n为正整数且mn。此类程序设计如何优化?2*例1:打印信息#include using namespace std;void printstar();void print_message();int main()printstar();print_message();printstar();return 0;4.1 概述void printstar()cout*endl;void print_message()coutWelcome to C+!endl;3*例2:求2个数的最大值#include using namespace std;int max(int x,int y)int z;z=xy?x:y;return z;int main()int a,b,c;cinab;c=max(a,b);coutmax=cy?x:y;return z;c=max(a,b);/主函数中max函数的调用13*3.对函数调用过程的说明:(1)形参的三种状态u函数调用前 仅是符号,不分配存储单元;u函数调用时 给形参分配内存单元,接收从实参传来的数据;u函数调用后 形参占用的内存单元被释放。14*(2)形参、实参占不同的内存单元 定义变量a、b,分配内存单元 分别对变量a、b赋值 函数调用,给形参x、y分配内存单元 并将对应实参的值传递给形参ax注意:注意:“值传递”是单向的u 主调被调:实参形参u 被调主调:return语句by552215*若函数的定义在后,调用在前,则调用前必须先声明。1、两种声明格式u函数首部加“;”如:int max(int x,int y);u函数首部加“;”并省略形参名 如:int max(int,int);2、函数声明位置u函数调用前声明即可。u建议:所有函数声明放在程序开始(声明不分先后)。四、函数声明16*3、函数定义、声明区别u 函数定义 函数功能的确立,包括指定函数名、函数类型、形参名及类型、函数体等,它是一个完整的、独立的函数单位。u 函数声明 把函数名、函数类型及形参的个数、类型通知编译系统,以便其对调用形式进行检查,如函数名、参数个数是否一致。17*例3:求(m!n!)/(m-n)!的值。要求:(1)编写一个函数fac求一个正整数的阶乘;(2)在主函数中输入m,n(假设输入满足mn),调用fac函数求m!,n!和(m-n)!,然后求表达式的值。分析:(1)fac函数可求任一正整数的阶乘,所以应有一参数。(2)fac函数求出的阶乘要参与运算,要有一返回值。(3)函数形式为:double fac(int x)18*参考程序:#include using namespace std;double fac(int x);int main()int m,n;double f;cinmn;f=fac(m)*fac(n)/fac(m-n);cout“f=fendl;return 0;double fac(int x)double i,f;f=1;for(i=1;i=x;i+)f=f*i;return f;19*