3、*3.14/180.0);{floatsu;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);主函數(shù)inta,b,c;{floatd;d=(a+b+c)/2.0;floats(a,b,c)return(d);}floataer(x,a,b,c)floa
4、tx;inta,b,c;{floataa;aa=sqrt(x*(x-a)*(x-b)*(x-c));return(aa);}#include“math.h”#include”iostream.h”自定義(子)函數(shù)是用戶定義的。好處:將復雜的功能分解成若干簡單的功能,便于實現(xiàn)逐步求精增加程序的通用性簡化程序結(jié)構,便于閱讀、調(diào)試程序由函數(shù)構成庫函數(shù)voidmain(){inta=1,b=3,c;c=max(a,b);printf(“max=%d”,c);}{intz;elsez=y;return(z);}主函數(shù)自定義函數(shù)(子函數(shù))主函數(shù)、庫函數(shù)、自定義函數(shù)程序的執(zhí)行過程主
5、函數(shù)mainc=max(a,b);結(jié)束子函數(shù)max如何定義如何調(diào)用if(x>y)z=x;intmax(int,int);從主函數(shù)開始執(zhí)行return或}數(shù)據(jù)聯(lián)系intmax(intx,inty)#include”stdio.h”一致:函數(shù)的定義intmax(intx,inty){intz;if(x>y)z=x;elsez=y;return(z);}函數(shù)首部[類型]函數(shù)名([形式參數(shù)表])函數(shù)值的類型類型函數(shù)體{變量定義語句序列;}return(表達式);通過return語句返回值表達式的類型與定義類型的關系函數(shù)值的類型值的類型就是表達式的類型不一致:值的類型是定義的類
6、型函數(shù)首部函數(shù)體參數(shù)包含類型說明voidps(){cout<<“*************”;}有返回值無確定返回值(只能返回一個值)(類型為void)(形參)函數(shù)的調(diào)用實參代替形參注意原則上實參和形參在個數(shù)、類型和順序上一致。調(diào)用過程:主函數(shù)帶有函數(shù)名的表達式或函數(shù)語句函數(shù)名(a1,a2,…,an)子函數(shù)體RETURN或}GOTOGOTO子函數(shù)::數(shù)據(jù)聯(lián)系?為形參和內(nèi)部變量分配單元?參數(shù)傳遞調(diào)用的過程?執(zhí)行?返回,變量釋放單元實參和形參形參被調(diào)用前不占用存儲單元實參占用存儲單元主調(diào)函數(shù)和被調(diào)函數(shù)之間的參數(shù)傳遞主調(diào)函數(shù)被調(diào)函數(shù)調(diào)用時實參形參數(shù)據(jù)傳遞返回時數(shù)據(jù)傳遞(
7、結(jié)果)被調(diào)用時分配存儲單元返回時釋放存儲單元(待處理數(shù)據(jù))數(shù)據(jù)聯(lián)系形參是簡單變量實參是簡單變量值傳遞:實參是常量、表達式實參的值傳遞給形參內(nèi)存中實參單元與形參單元是不同的單元,因此,在執(zhí)行一個被調(diào)函數(shù)時,形參的值如果發(fā)生變化,并不會改變主調(diào)函數(shù)的實參的值單向傳遞實參是簡單變量voidswap(intx,inty)voidmain()例1寫結(jié)果{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被調(diào)函數(shù)主調(diào)函數(shù)5,10y實參形