3、u;sin(x)、cos(x)voidmain(){intl1,l2,l3;floats(),aer();floatsum=0,i=1,ss;while(i<3)ss=s(l1,l2,l3);sum=sum+aer(ss,l1,l2,l3);i=i+1;}printf(“%.2f”,sum);voidmain()}{scanf(“%d%d%d”,&l1,&l2,&l3);主函数inta,b,c;{floatd;d=(a+b+c)/2.0;floats(a,b,c)return(d);}floataer(x,a,b,c)floatx;inta,b,c;{floataa;aa=sqrt(x
4、*(x-a)*(x-b)*(x-c));return(aa);}#include“math.h”#include”iostream.h”自定义(子)函数是用户定义的。好处:将复杂的功能分解成若干简单的功能,便于实现逐步求精增加程序的通用性简化程序结构,便于阅读、调试程序由函数构成库函数voidmain(){inta=1,b=3,c;c=max(a,b);printf(“max=%d”,c);}{intz;elsez=y;return(z);}主函数自定义函数(子函数)主函数、库函数、自定义函数程序的执行过程主函数mainc=max(a,b);结束子函数max如何定义如何调用if(x>y)
5、z=x;intmax(int,int);从主函数开始执行return或}数据联系intmax(intx,inty)#include”stdio.h”一致:函数的定义intmax(intx,inty){intz;if(x>y)z=x;elsez=y;return(z);}函数首部[类型]函数名([形式参数表])函数值的类型类型函数体{变量定义语句序列;}return(表达式);通过return语句返回值表达式的类型与定义类型的关系函数值的类型值的类型就是表达式的类型不一致:值的类型是定义的类型函数首部函数体参数包含类型说明voidps(){cout<<“*************”;}
6、有返回值无确定返回值(只能返回一个值)(类型为void)(形参)函数的调用实参代替形参注意原则上实参和形参在个数、类型和顺序上一致。调用过程:主函数带有函数名的表达式或函数语句函数名(a1,a2,…,an)子函数体RETURN或}GOTOGOTO子函数::数据联系为形参和内部变量分配单元参数传递调用的过程执行返回,变量释放单元实参和形参形参被调用前不占用存储单元实参占用存储单元主调函数和被调函数之间的参数传递主调函数被调函数调用时实参形参数据传递返回时数据传递(结果)被调用时分配存储单元返回时释放存储单元(待处理数据)数据联系形参是简单变量实参是简单变量值传递:实参是常量、表达式
7、实参的值传递给形参内存中实参单元与形参单元是不同的单元,因此,在执行一个被调函数时,形参的值如果发生变化,并不会改变主调函数的实参的值单向传递实参是简单变量voidswap(intx,inty)voidmain()例1写结果{intt;t=x;x=y;y=t;}{inta=5,b=10;printf(“%d,%d”,a,b);swap(a,b);printf(“%d,%d”,a,b);}abx5105被调函数主调函数5,10y实参形