(五)函式 3 函式編寫

2021-10-09 23:20:22 字數 2893 閱讀 6201

在c程式中增加乙個新的函式由兩個步驟組成:

(1) 需要指定這個函式原型,它通常位於整個程式的頭部,在#include行之後。

(2) 在程式的稍後部分,需要提供該函式的實現,即指定一些實際的程式步驟。

例如,要寫乙個將攝氏溫度轉為華氏溫度的函式。

其原型為:

double

celsiustofahrenheit

(double c)

;

函式的實現是由它的原型開始,去掉結尾的分號,然後加入函式體。

程式塊中的語句前面可以有變數宣告,就如前面所見的main函式中一樣。

如果函式返回乙個結果,則函式體中至少包含乙個return語句,它指出了要返回的值。

如上所述, return語句包含兩個概念:「我已經完成了」和「這就是答案」。

return語句完成了寫乙個celsiustofahrenheit函式的實現所需的所有手段:

double

celsiustofahrenheit

(double c)

該函式計算相應表示式的值,並將該值作為函式的結果值返回。

函式celsiustofahrenheit本身不能組成乙個完整的程式。

每個完整的程式都有乙個名字為main的函式,當程式開始執行的時候就呼叫該函式。

生成溫度轉換表的完整程式如下:

/* file: c2ftable.c

* ----------------

* this program illustrates the use of functions by generating

* a table of celsius to fahrenheit conversions.

*/#include

#define lowerlimit 0

#define upperlimit 100

#define stepsize 5

/* function prototypes */

double

celsiustofahrenheit

(double c)

;/* main program */

main()

}/* function: celsiustofahrenheit

* usage: f = celsiustofahrenheit(c);

* ----------------------------------

* this function returns the fahrenheit equivalent of the celsius

* temperature c.

*/double

celsiustofahrenheit

(double c)

在許多情況下,計算乙個函式需要做出很多測試或編寫乙個迴圈。這樣的細節問題增加了實現乙個函式的複雜性,但不會改變函式的基本形式。

示例如下:

/* input an integer n and calculate n!. */

#include

/* function prototype */

intfactorial

(int n)

;/* main program */

main()

/* function */

intfactorial

(int n)

return product;

}

在c語言中,函式可以返回任意資料型別的值。

例如,將用數值表示的月份(1~12)轉換為相應的用文字表示月份名(從january到december) 的string型別的函式,其**示例如下:

/* convert number 1-12 into month name. */

#include

/* function prototype */

char

*monthname

(int month)

;/* main program */

main()

/* function */

char

*monthname

(int month)

}

在monthname函式的switch語句中,每個case子句中的return語句自動地退出整個函式,因此不需要再寫乙個break語句。

如果在設計程式時讓每個case子句都以break或return語句結尾,可以避免除錯中的許多困難。

雖然c語言的函式可以返回任何型別的值,但有一種結果型別值得特別關注,那就是bool型別。

例如,列出某個整數區間中的偶數(如1-10),**示例如下:

/* list even numbers from lowerlimit to upperlimit. */

#include

#define lowerlimit 1

#define upperlimit 10

/* function prototype */

_bool

iseven

(int n)

;/* main program */

main()

}/* function */

_bool

iseven

(int n)

參考《c語言的科學和藝術》 —— 第5章 函式

庫函式編寫刪除函式

又是乙個利用庫函式編寫其他函式的演算法,刪除字串很簡單,我們在設計的函式裡面建立乙個新的字元陣列,這個字元陣列用來存放我們想要得到的字串,什麼是我們想要的字串?我們從頭遍歷原字串,下標在index到index length範圍之內的就是我們要刪除的字元,因此當我們遍歷到這個下標區間時,直接跳過,其他...

編寫strcpy 函式

已知 strcpy 函式的原型是 char strcpy char strdest,const char strsrc 其中 strdest 是目的字串,strsrc 是源字串。1 不呼叫c c 的字串庫函式,請編寫函式 strcpy char strcpy char strdest,const c...

oracle函式編寫

語法格式 sql語法方式建立的語法格式為 orreplace function function name 函式名稱 引數定義部分 return return datatype 定義返回值型別 as begin function body 函式體部分 return scalar expression...