大學計算機語言函數_第1頁
大學計算機語言函數_第2頁
大學計算機語言函數_第3頁
大學計算機語言函數_第4頁
大學計算機語言函數_第5頁
已閱讀5頁,還剩24頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、一、函數的概念一、函數的概念 函數是形式上獨立、功能上完整的程序段(塊)。在C程序設計中常將一些常用功能模塊編寫成函數。函數可以完成特定的計算或操作處理功能。 C程序由函數組成;函數在形式上是平行的,不允許嵌套定義;C程序只執行主函數,子函數必須通過主函數或其他子函數的調用才能被執行;子函數不能調用主函數。實質上,設計程序就是設計函數。二、函數的分類二、函數的分類(一)從用戶的角度分(一)從用戶的角度分1.1.標準函數,即庫函數標準函數,即庫函數 ANSI CANSI C預先定義的用戶可直接使用的函數;預先定義的用戶可直接使用的函數;使用庫函數使用庫函數時,必須用時,必須用#include#i

2、nclude把該函數所在的頭文件包含進來。把該函數所在的頭文件包含進來。2.2.用戶自定義函數用戶自定義函數 是用戶為了解決各種應用問題而自行設計的函是用戶為了解決各種應用問題而自行設計的函數數。用戶自定義函數必須先定義后使用用戶自定義函數必須先定義后使用! !(二)從形式上分(二)從形式上分1.1.無參函數:無參函數: 即無形式參數的函數。即無形式參數的函數。 如:如:getchar()getchar()2.2.有參函數有參函數 即帶有形式參數的函數即帶有形式參數的函數 如:如:putchar(ch)putchar(ch)、sqrt(x)sqrt(x)三、函數的定義三、函數的定義1、 無參函

3、數的定義無參函數的定義 函數名函數名( void ) 函數體函數體其中:函數返回值類型表示函數的返回結果值類型,函數只能其中:函數返回值類型表示函數的返回結果值類型,函數只能有一個返回值,若函數無返回值即用有一個返回值,若函數無返回值即用void聲明;返回函數值需聲明;返回函數值需使用:使用:return 變量變量|表達式;表達式; 函數名由用戶按標識符的命名規則自行給定,但不能與函數名由用戶按標識符的命名規則自行給定,但不能與標準函數同名;標準函數同名; 圓括號中的關鍵字圓括號中的關鍵字void表示函數無形式參數;表示函數無形式參數; 函數體是由實現函數功能必需的語句組成。函數體是由實現函數

4、功能必需的語句組成。例例1:無參函數的定義。:無參函數的定義。#includevoid PrintMessage (void)printf(t*n);printf(t Programming is fun.n);printf(t*n);int main(void)PrintMessage ( );PrintMessage ( );PrintMessage ( );return 0;數據類型數據類型2 2、有參函數的定義、有參函數的定義函數首部函數首部例例2 2:定義有參函數計算兩個整數的平均。:定義有參函數計算兩個整數的平均。形參為整形變量形參為整形變量x x和和y y變量變量a1a1和和b1

5、b1為實際參數為實際參數四、函數的調用四、函數的調用有返回值時(有返回值時(即函數功能為某種計算功能即函數功能為某種計算功能)返回值返回值 = = 函數名函數名( (實參表列實參表列););無返回值時(無返回值時(即函數功能是完成某種操作或處理)即函數功能是完成某種操作或處理)函數名函數名( (實參表列實參表列););2 2、具體調用形式、具體調用形式 例例3:定義求:定義求n!函數,然后調用該函數函數,然后調用該函數求求sum=1!+2!+3!+m!的值。的值。#include int max ( int x, int y ) int z;if (x y) z = x;else z = y;

6、return (z);int main(void) int a = 45, b = 78, c = 99, d, e;d = max(a, b); printf(max1 = %dn, d);printf(max2 = %dn, max(a, b);e = c - max(a, b);printf(e = %dn, e);printf(max3 = %dn, max(max(a, b), c);return 0;max1 = 78max2 = 78e = 21max3 = 99該程序的輸出是什么?#include #include int Prim(int x) int i, j, k; k

7、= (int)sqrt(i); for ( j = 2; j = k + 1) return 1; else return 0; int main(void) int i; for (i = 100; i = 200; i+) if ( Prim(i) ) printf(“%d, ”, i); return 0 ; 1 1、為什么要聲明函數原型?、為什么要聲明函數原型? 函數應該先定義,然后才能調用。但是,如果函數的調用出現在函數的定義之前,就必須對被向前調用的函數進行函數原型聲明,否則就會出現函數調用錯誤。2 2、聲明格式:、聲明格式: 函數類型 函數名(類型名1 形參數1,);或 函數類型

8、 函數名(類型名1,類型名2,);注意:如果函數嚴格遵循先定義后調用原則就無需進行函數原型聲明。例例6 6:函數原型聲明(先調用后定義函數):函數原型聲明(先調用后定義函數)#include double Fac(int n);int main(void) f1 = Fac(m); double Fac(int n) .函數Fac的原型聲明先調用函數Fac函數Fac的定義出現在調用之后函數定義函數定義函數調用函數調用例例7:以下函數為先定義后調用,不用聲明原型:以下函數為先定義后調用,不用聲明原型int main()a();return 0;a 函數函數b();return;b函數函數retu

9、rn; 在調用一個函數的過程中,又調用其他的函數,稱為在調用一個函數的過程中,又調用其他的函數,稱為函數的嵌套調用。函數的嵌套調用。 以下為函數調用與調用返回過程:以下為函數調用與調用返回過程:printf (“c = %fn”, c); return 0;b函數函數main調用調用add函數函數調用調用b函數函數add函數函數 結束結束 在調用一個函數的過程中,出現直接或間接地調用該在調用一個函數的過程中,出現直接或間接地調用該函數本身,稱為函數的遞歸調用。函數本身,稱為函數的遞歸調用。int f(int x)int y, z;z = f(y);return (2 * z);f函數調用f函數

10、f1函數調用f2函數f2函數調用f1函數 有有3個人坐在一起,問第個人坐在一起,問第3個人多少歲?他說比第個人多少歲?他說比第2個人大個人大2歲。問第歲。問第2個人多少歲?他說比第個人多少歲?他說比第1個人大個人大2歲。最后問第歲。最后問第1個人,個人,他說是他說是10歲。請問第歲。請問第3個人多大?個人多大?分析:分析:age(3)=age(2)+2;age(2)=age(1)+2;age(1)=10;歸納:歸納:n=1 age(n)=10 n1 age(n)=age(n-1)+2程序如下:程序如下:#include int age(int n) int c; if (n = 1) c =

11、10; else if (n 1) c = age(n - 1) + 2; return c; int main(void) printf(“%d”, age(3); return 0;程序執行過程如下:程序執行過程如下:int main(void) printf(“%d”, age(3);int age(3) int c; c = age(2) + 2; return c;int age(2) int c; c = age(1) + 2; return c;int age(1) int c; c = 10; return c;153下面程序的輸出結果是(下面程序的輸出結果是( )。)。#include int f(int a, int b);int main(void) int i = 2, p; p = f( i

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論