whx即是副程式(sub-program_第1页
whx即是副程式(sub-program_第2页
whx即是副程式(sub-program_第3页
whx即是副程式(sub-program_第4页
whx即是副程式(sub-program_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Function (函數)Introduction to the C Programming Language1Function (函數)Function 即是副程式(sub-program,或 subroutine)為何要使用 function ?避免重複寫相同的程式碼, 節省coding 時間可重複使用該程式碼增加程式的可讀性與可維護性, 降低主程式之複雜性開發較大應用程式時, 可分割成數個不同功能的function, 由不同的程式設計師分工完成符合結構化語言之特性尚有一些程式語言, 將副程式分為兩類 :副程式 : 處理指定功能之程序過程函數式 : 負責計值運算並傳回結果2Function

2、語法規則語法規則 :function_type function_name (parameter, parameter)parameters declarations;statements;例:char func(p1, p2)int p1;char p2;statements;3函數與主程式間之架構合法之架構錯誤之架構主程式函數 1函數 2主程式函數 1函數 2主程式函數 1函數 2主程式函數 1函數 2主程式函數 2函數 14範例一比較使用者所輸入兩整數之大小void larger_value(a,b) int a, b; if(a b) printf(2: The larger valu

3、e is %d n, a); else printf(2: Two values are equal. n); void main() int i, j; printf(1: Please input 2 values. n = ); scanf(%d %d, &i, &j); larger_value(i,j); 函式呼叫5Function注意事項函數名稱依照識別字的規則命名.每個函數各自獨立, 可相互呼叫.所有函數語法地位一律平等.參數列式呼叫函數時需要與主程式間作資料或位置的傳遞, 若無資料需要傳遞時, 則可省略參數列, 但不可省略小括號.若函數須傳回數值時, 則敘述中必有一條傳回敘述,

4、 語法規則為 : return (運算式)return 為關鍵字運算式可為常數, 變數或算數運算式return 除了可把函數內的值傳回呼叫程式外, 同時具有令函數結束, 返回呼叫程式之功能.6範例二輸入一數值 n, 求出 1 至 n 的連乘 (示範函數傳回數值給呼叫程式)void main() long fact(void); long f; f = fact(); printf(The factorial = %ld n, f);long fact(void) int i,n; long f=1; printf(Enter one value : ); scanf(%d, &n); for(

5、 i=1; i= n; i+) f *= i; return(f);傳回值函式呼叫 (無參數傳遞)參數列中無資料7範例三輸入一數值 n, 求出 1 至 n 的連乘(示範由呼叫程式傳遞一數值給函數, 函數計算後將結果傳回給呼叫程式)void main() int n; long f; long fact(int); printf(Enter one value : ); scanf(%d, &n); f = fact(n); printf(The factorial of %d = % ld n, n, f);long fact( int n) int i; long f = 1; for (i

6、 =1; i = n; i+) f *= i; return (f);函式呼叫 (參數傳遞)傳回值參數列中傳遞之參數8範例四 (共2頁)計算輸入之三個整數的 gcd 與 lcm.void main() int gcd(int, int); int lcm(int, int); int a, b, c; printf(Enter three integer values : ); scanf(%d %d %d, &a, &b, &c); printf(The gcd of %d %d %d is %d n, a, b, c, gcd(gcd(a,b), c); printf(The lcm of

7、 %d %d %d is %d n, a, b, c, lcm(lcm(a,b), c); 9範例四 續接上頁int gcd(int x, int y) int 4; while (y != 0) r = x % y; x = y; y = r; return(x);int lcm(int x, int y) return(x * y / gcd(x,y);10範例五輸入半徑資料計算圓面積void main() float area(int); int r; float a; printf(Enter radius : ); scanf(%d, &r); a = area (r); print

8、f(Circle area = %10.4f n, a);float area(int r) float pi = 3.14159; return(pi * r * r);11範例六 (共 2 頁)輸入一系列數字, 以函數方式求出最大值與最小值, 將最大值,最小值與數字總和列印出來int min(x,y) if( x= y) return x; else return y;int max(x,y) if(x ); scanf(%d, &num); for( i=1; i , i); scanf(%d, &value); tmpmin = min(value, tmpmin); tmpmax =

9、 max(value, tmpmax); sum += value; printf(2: The maximun is %d n, tmpmax); printf(2: The minimum is %d n, tmpmin); printf(2: The sum is %d n, sum);範例六 續13利用函數方式, 將陣列中的最小值傳回 int minimum(var)int var5; int min, i; min = var0; for( i=0; i=4; i+) if(vari min) min = vari; return min;void main() int array5

10、; int minimum_value; int i; for( i =0; i , i+1); scanf(%d, &arrayi); minimum_value = minimum(array); printf(2: The minimum value is %d n, minimum_value);陣列資料傳遞 範例一14利用函數方式將二維陣列各列的前三元素平均值, 放在最後一個元素位置void main() int num34 = 88, 29,91, 0, 86, 84, 90, 0, 77, 65, 70, 0; void average(); int i, j; average(

11、num, 3); for( i=0; i3; i+) printf(2: ); for( j=0; j4; j+) printf(%5d, numij); printf(n); 陣列資料傳遞 範例二 (共2頁)15接上頁void average(var, length)int var4, length; int sum, i, j; for( i=0; ilength; i+) sum = 0; for( j=0; j4; j+) sum += varij; vari3 = sum / 3; 陣列資料傳遞 範例二 (續)16參數之區域觀念全面性變數(Global variable) : 宣告在

12、主程式區域外的變數, 可在程式中任何區域中存取該變數.區域性變數(Local variable) : 宣告在主函數區域中或函數區域中的變數, 只在該宣告的區域中有效. 離開該區域則視為未定義變數, 各區域中的區域變數互不相干.17參數之儲存類別C語言提供四個關鍵字 : auto, extern, static, register靜態變數(Static variable) : 只要程式繼續執行, 不因函數的結束而消失, 該變數所配置的記憶體空間與數值依然存在.外部變數(Extern variable) : 如上頁提及宣告在主程式區域外的變數為全面性變數, 也稱為外部變數.外部靜態變數 : 只提供同一程式檔中的所有函數存取, 其他程式檔中的函數則無法使用.暫存器變數(Register variable) : 為加速程式的執行速度, 可將區域性變數或正式參數宣告為暫存器變數.18範例一 : 區域性變數宣告使用void main() int sum(void); int i; for (i=1; i=3; i+) printf(%dth time = %d n, i, sum(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论