函數(shù)(通常用來完成某一個特定的功能的一段代碼,把這段代碼放到一起,形成一個函數(shù))

1 系統(tǒng)函數(shù)(操作系統(tǒng)給我們寫好了,我們會調(diào)用就行, 需要加相應(yīng)的頭文件)
strlen
strcpy
printf
scanf
rand
atoi
2 自定義函數(shù)(自己寫的函數(shù))
盡量函數(shù)名能清晰表達(dá)出函數(shù)的含義,函數(shù)盡量有注釋: 函數(shù)功能 函數(shù)參數(shù) 函數(shù)返回值
舉例
*
***
******
*
***
******
*
***
******
*
***
******
*
***
******
#include
int main()
{
printf(" *\n");
printf("***\n");
printf("******\n");
printf(" *\n");
printf("***\n");
printf("******\n");
printf(" *\n");
printf("***\n");
printf("******\n");
printf(" *\n");
printf("***\n");
printf("******\n");
printf(" *\n");
printf("***\n");
printf("******\n");
}
函數(shù)分為 函數(shù)定義 和 函數(shù)調(diào)用
//函數(shù)定義,函數(shù)定義時,要有函數(shù)體
#include
void print_star() //print_star 函數(shù)名
{ //函數(shù)體
printf(" *\n");
printf("***\n");
printf("******\n");
}
int main()
{
print_star(); //函數(shù)調(diào)用
print_star();
print_star();
print_star();
print_star();
}
1) 函數(shù)的執(zhí)行是跳轉(zhuǎn)到函數(shù)處,執(zhí)行完再跳轉(zhuǎn)回來
2) 函數(shù)名:什么名都可以,1 不能以數(shù)字開頭 2 除了'_', 不能有任何其他字符3 函數(shù)名盡量清晰表達(dá)出函數(shù)的含義
3) 函數(shù)一般都要先定義,然后再調(diào)用(函數(shù)寫在調(diào)用者的上面)
#include
void print_star(); //函數(shù)聲明,為了避免編譯警告,加一個聲明
//聲明???? 告訴編譯器,函數(shù)長什么樣
int main()
{
print_star(); //函數(shù)調(diào)用
print_star();
print_star();
print_star();
print_star();
}
//寫到下面不好,編譯會有警告,警告的原因: 編譯程序從上到下執(zhí)行,同時檢查語法
void print_star() //print_star 函數(shù)名
{ //函數(shù)體
printf(" *\n");
printf("***\n");
printf("******\n");
}
參數(shù)? 傳遞給函數(shù)的一個值
舉例
求兩個數(shù)之間的較大值
3 5
例 1 不使用參數(shù)
#include
void max()
{
inta = 5, b = 9, max1 = 0;
if(a>b)
{
max1= a;
}
else
{
max1= b;
}
printf("maxis %d\n", max1);
}
int main()
{
max();
}
上面的程序不好
1) a 和 b 是固定值 (那么max 只能求5和9之間的較大值)
2) printf 不應(yīng)該在max函數(shù)中輸出 (設(shè)計函數(shù)時,功能應(yīng)該盡量單一)
上面的程序有兩個功能 (1)求大值 (2) 輸出
///這樣做, 改成使用參數(shù)
#include
int max(int a, int b) //int a, int b是參數(shù)(參數(shù)是main 給 max的值)
{ //a,b 形參(形式上的參數(shù),給調(diào)用者看的)
//函數(shù)前面的int 是函數(shù)返回值類型,return 的值必須和 返回值類型一致
if(a>b)
{
returna; //return 可以將求出的值,返回給 main(調(diào)用者)
}
else
{
returnb;
}
}
int main()
{
intx = max(5, 9); //max(1, 2); max(3, 4);
//5,9 被稱為實參,在函數(shù)調(diào)用時,實參值會傳遞給形參
printf("maxis %d\n", x);
}
1) 一致性原則
參數(shù)一致(調(diào)用時要和定義時一致 )
返回值類型要一致
2) 參數(shù)
舉例
/輸出楊輝三角型
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
//寫一個函數(shù),輸出階數(shù)不固定,輸出的階數(shù),由參數(shù)傳遞進(jìn)來
此函數(shù)如何定義??? ( C )
A int print_yanghui();
B void print_yanghui();
C void print_yanghui(int n); //void表示無返回值 參數(shù)通常保存變化的值
D int print_yanghui(int n);
練習(xí)1
寫一個求一個數(shù)的n次方的函數(shù)
然后在main中測試
#include
int n_cifang(int x, int n) //x ^ n
{
intt = 1; //t * x * x * x(n = 3)
inti;
for(i= 0; i< n; i++)
{
t= t * x;
}
returnt;
}
int main()
{
inta = n_cifang(2, 3);
printf("ais %d\n", a); //8
a= n_cifang(5, 2);
printf("ais %d\n", a); //25
}
練習(xí)2
寫一個函數(shù),比較三個數(shù),然后求出大值, 用main函數(shù)測試
#include
int max(int a, int b, int c)
{
if(a< b) // a = a >b ? a : b;
{
a= b;
}
if(a< c)
{
a= c;
}
returna;
}
int main()
{
intx, y, z;
scanf("%d%d%d",&x, &y, &z);
printf("maxis %d\n", max(x, y, z));
}
函數(shù)的參數(shù)和 返回值可以是int 也可以是 float , double , char .....
float max(float a, float b);
//練習(xí)3
設(shè)計函數(shù)min(x,y),返回兩個double數(shù)值中較小的數(shù)值,同時用一個簡單的main測試該函數(shù)。
#include
double min(double x, double y)
{
if(x< y)
returnx;
else
returny;
}
int main()
{
doublea, b, c;
scanf("%lf%lf",&a, &b);
c= min(a, b);
printf("minis %.2f\n", c);
}
/下午
函數(shù)總結(jié)
1 函數(shù)名, 要清晰表達(dá)出函數(shù)的含義
代碼通常是多人合作,一定要讓別人能看懂自己寫的代碼
不能以數(shù)字開頭 (2max)
除了_不可以有任何其他特殊字符(max?)
2 函數(shù)名不要簡寫(程序?qū)懗鰜肀M量能讓別人看懂)
set_student_name
3 函數(shù)名兩種不同風(fēng)格寫法
SetStudentName windows風(fēng)格 (第一個單詞) 大駝峰命名法
set_student_name linux 風(fēng)格 (單詞中間加_)
setStudentName ios 風(fēng)格 小駝峰命名法(第一個單詞小寫,剩下都大寫)
4 函數(shù)參數(shù)
int get_max(int x, int y, int z); //盡量不要太多,不要多于5個
//如果參數(shù)多,影響程序的可讀性
參數(shù)調(diào)用時與定義時參數(shù)個數(shù)要一致
get_max(30, 40, 50); //參數(shù)調(diào)用時參數(shù)個數(shù)要與定義的一致
如果函數(shù)沒有參數(shù)
void print_star()
void print_star(void) //void 無
5 函數(shù)返回值可有可無,如果有返回值,那么函數(shù)里一定要有return 0;
int max(int a, int b)
{
return1;
}
void print_star(); //void表示函數(shù)無返回值,函數(shù)中return 表示函數(shù)結(jié)束,如果返回值是void , return
6 函數(shù)功能盡量單一
一般如果功能不單一,如果不單一那么函數(shù)就要拆分
7 函數(shù)行數(shù)不要太多(盡量1頁能顯示下)
#include
void print_star() //print_star 函數(shù)名
{ //函數(shù)體
printf(" *\n");
printf("***\n");
return; //函數(shù)執(zhí)行到return,函數(shù)就結(jié)束
printf("******\n");
}
int main()
{
print_star(); //函數(shù)調(diào)用
print_star();
print_star();
print_star();
print_star();
}
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧
文章標(biāo)題:c語言保姆級筆記七-創(chuàng)新互聯(lián)
當(dāng)前鏈接:http://chinadenli.net/article46/digseg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、品牌網(wǎng)站建設(shè)、Google、面包屑導(dǎo)航、App設(shè)計、做網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容