资源描述:
《C语言程式设计--函数.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、C語言程式設計--函數本章學習重點7-1函數的概念7-2函數的基本形式7-3函數的呼叫7-4遞迴函數7-5常用的數學函數7-6儲存類別函數的概念函數的優點分工合作較好的可讀性便於修改、除錯提高撰寫程式的效率函數可分成兩種型態函數庫中原先就有的現成函數使用者依程式需求設計的函數函數的基本形式函數定義的語法傳回值型態函數名稱(參數傳遞)參數傳遞型態{函數主體}範例Ch7_2Ch7_2兩數相加的函數1#include2voidmain()3{4inta=3,b=2,c;5intsum(int,int);6c=s
2、um(a,b);7printf("sum(%d,%d)=%d",a,b,c);8}9intsum(x,y)10intx,y;11{12intz;13z=x+y;14return(z);15}程式執行結果說明sum(3,2)=5範例Ch7_2主程式副程式3322abxy55cz函數呼叫的語法語法函數名稱(參數);說明函數如果不需要呼叫參數,則括號內的參數可以省略。若參數包含一個以上時,需以逗號隔開。呼叫與被呼叫的函數其參數是相對應的,且型態要一致。函數的傳回值函數的傳回值,有以下幾種情況:函數沒有傳回值,傳回值型態為vo
3、id函數傳回值為整數(int)時,可以省略函數有傳回值時,可以在傳回值上做運算函數的傳回值型態應該和return中的型態要一樣使用return可以立即結束函數的執行Ch7_3計算圓面積的函數1#include2doublearea(r)3floatr;4{5doubles;6s=r*r;7return(s);8}9voidmain()10{11floatr;12doublea;範例Ch7_3程式執行結果Pleaseinputthecircler:5Thecircleareais78.540000print
4、f("Pleaseinputthecircler:");14scanf("%f",&r);15a=area(r)*3.1416;16printf("Thecircleareais%f",a);17}範例Ch7_3範例Ch7_4Ch7_4函數求絕對值與平方值1#include2voidmain()3{4intabs(int);5intsqrt(int);6inta=–3,b,c;7b=abs(a);8c=sqrt(a);9printf("theabsofa=%d",b);10printf("th
5、esqrtofa=%d",c);11}12intabs(intx)13{14inty;if(x<0)y=–x;elsey=x;returny;}intsqrt(intz){ints;s=z*z;returns;}範例Ch7_4程式執行結果theabsofa=3thesqrtofa=9範例Ch7_4遞迴函數遞迴函數是指在程式中直接或間接呼叫該程式本身。程式中使用遞迴函數,將可處理須重覆運算的問題。費氏數列費氏數列的規則如下所示:費氏數列的數學表示式:0ifn=0Fib(n)=1ifn=1fib(n–1)+fib(n–2)
6、ifn>=2n0123456…fib(n)0112358…範例Ch7_5Ch7_5遞迴函數求費氏數列1#include2intfib(intn)3{4if(n==0)return(0);5elseif(n==1)return(1);6elsereturn(fib(n–1)+fib(n–2));7}8voidmain()9{10intfib(int);11ints;12s=fib(6);13printf("Thefib(6)=%d",s);14}程式執行結果說明:Thefib(6)=8範例Ch7_5階乘
7、函數定義如下:1ifn=0n*fact(n–1)ifn>=1說明:fact(n)3!=3*2!=3*2*1!=3*2*1*0!=3*2*1*1=6fact(3)=3*fact(2)=3*2*fact(1)=3*2*1*fact(0)=3*2*1*1=6範例Ch7_7Ch7_7利用遞迴函數求n階乘1#include2voidmain()3{4intfact(int);5intn;6printf("請輸入n階乘:");7scanf("%d",&n);8printf("%d!=%d",n,fact(n));
8、9}10intfact(intn)11{12if(n==0)return(1);13elsereturn(n*fact(n–1));14}程式執行結果說明:請輸入n階乘:66!=7206!=6*fact(5)=6*5*fact(4)=6*5*4*fact(3)=6*5*4*3*fact(2)=6*5*4