下面看一個實際例子,加深對函數(shù)的理解:
用函數(shù)實現(xiàn),判斷一個整數(shù)是不是素數(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ù)的功能就是為了讓程序看起來有條理,一個函數(shù)實現(xiàn)一個特定的功能。如果我們還和以前那樣,把所有代碼都放在main()函數(shù),好象程序就顯的臃腫了。而且函數(shù)有一個顯著的好處就是很方便的使用。這里面的judge()函數(shù)判斷一個數(shù)是不是素數(shù),如果我們以后還有判斷某個數(shù)是不是素數(shù),就可以直接使用這個函數(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目錄里面。
以后就可以直接使用這個函數(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);
}
看上面的例子,我們在程序中直接使用了函數(shù)judge(),這就是我們自己編寫的第一個所謂的庫函數(shù)。但是程序的第一行要包含math.h文件,這是因為在judge.h里面使用了sqrt()函數(shù),所以為了方便,我們可以把math.h放到j(luò)udge.h里面,也就是在judge.h文件的第一行加上include math.h,這樣,我們的主程序中就不需要包含它了,但是這樣做也有副作用,具體有什么副作用,我們以后接觸到時再介紹。
我們實際用到的一些程序,也許代碼有很長,上千行,甚至上萬行,這些代碼不可能放在一個*.c文件中,所以我們經(jīng)常把一些功能做成*.h,*c的文件形式,然后在主程序中包含這些文件,這樣就把一個大程序分割成幾個小塊,不僅瀏覽方便,對以后的修改也有很多好處。
我們在平時就應(yīng)該有這樣的好習(xí)慣,把一些經(jīng)常使用的功能做成庫函數(shù)的形式保存下來,也許剛開始你會覺得很煩瑣,可到了后來,也許幾年過去了,你會發(fā)現(xiàn),一個好幾千行上萬行的程序,有一大半的功能你都有,直接調(diào)用就可,這會大大縮短你的程序開發(fā)周期的。就好象這里的判斷素數(shù)一樣,如果以后還需要判斷一個數(shù)是不是素數(shù),就沒必要再寫那些代碼了,直接調(diào)用judge()函數(shù)就可。
相關(guān)推薦:計算機等級考試二級C語言教程匯總北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |