下面看一個(gè)實(shí)際例子,加深對(duì)函數(shù)的理解:
用函數(shù)實(shí)現(xiàn),判斷一個(gè)整數(shù)是不是素?cái)?shù)?在主函數(shù)里輸入輸出,子函數(shù)里判斷。
#include math.h
int judge(int);
main()
{
int num,result;
scanf(%d,&num);
result=judge(num);
if(result==1) printf(yes\n);
else printf(no\n);
}
judge(int num)
{
int i,flag=1;
for(i=2;i<=sqrt(num);i++)
if(num%i==0)
{
flag=0;
break;
}
return flag;
}
可以看出,函數(shù)的功能就是為了讓程序看起來有條理,一個(gè)函數(shù)實(shí)現(xiàn)一個(gè)特定的功能。如果我們還和以前那樣,把所有代碼都放在main()函數(shù),好象程序就顯的臃腫了。而且函數(shù)有一個(gè)顯著的好處就是很方便的使用。這里面的judge()函數(shù)判斷一個(gè)數(shù)是不是素?cái)?shù),如果我們以后還有判斷某個(gè)數(shù)是不是素?cái)?shù),就可以直接使用這個(gè)函數(shù)了。我們這樣,把下面的代碼:
judge(int num)
{
int i,flag=1;
for(i=2;i<=sqrt(num);i++)
if(num%i==0)
{
flag=0;
break;
}
return flag;
}
保存為judge.h文件,放到include目錄里面。
以后就可以直接使用這個(gè)函數(shù)了,就好象直接使用abs(),sqrt()這些函數(shù)一樣方便。
#include math.h /*必須要有它*/
#include judge.h
main()
{
int num,result;
scanf(%d,&num);
result=judge(num);
if(result==1) printf(yes\n);
else printf(no\n);
}
看上面的例子,我們?cè)诔绦蛑兄苯邮褂昧撕瘮?shù)judge(),這就是我們自己編寫的第一個(gè)所謂的庫(kù)函數(shù)。但是程序的第一行要包含math.h文件,這是因?yàn)樵趈udge.h里面使用了sqrt()函數(shù),所以為了方便,我們可以把math.h放到j(luò)udge.h里面,也就是在judge.h文件的第一行加上include math.h,這樣,我們的主程序中就不需要包含它了,但是這樣做也有副作用,具體有什么副作用,我們以后接觸到時(shí)再介紹。
我們實(shí)際用到的一些程序,也許代碼有很長(zhǎng),上千行,甚至上萬行,這些代碼不可能放在一個(gè)*.c文件中,所以我們經(jīng)常把一些功能做成*.h,*c的文件形式,然后在主程序中包含這些文件,這樣就把一個(gè)大程序分割成幾個(gè)小塊,不僅瀏覽方便,對(duì)以后的修改也有很多好處。
我們?cè)谄綍r(shí)就應(yīng)該有這樣的好習(xí)慣,把一些經(jīng)常使用的功能做成庫(kù)函數(shù)的形式保存下來,也許剛開始你會(huì)覺得很煩瑣,可到了后來,也許幾年過去了,你會(huì)發(fā)現(xiàn),一個(gè)好幾千行上萬行的程序,有一大半的功能你都有,直接調(diào)用就可,這會(huì)大大縮短你的程序開發(fā)周期的。就好象這里的判斷素?cái)?shù)一樣,如果以后還需要判斷一個(gè)數(shù)是不是素?cái)?shù),就沒必要再寫那些代碼了,直接調(diào)用judge()函數(shù)就可。
相關(guān)推薦:計(jì)算機(jī)等級(jí)考試二級(jí)C語言教程匯總計(jì)算機(jī)等級(jí)考試二級(jí)C語言常見知識(shí)點(diǎn)總結(jié)
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |