C語言程序設計第11講函數課件_第1頁
C語言程序設計第11講函數課件_第2頁
C語言程序設計第11講函數課件_第3頁
C語言程序設計第11講函數課件_第4頁
C語言程序設計第11講函數課件_第5頁
已閱讀5頁,還剩37頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第十講Begin:第七章函數函數概述函數的分類與定義函數調用的一般形式函數的參數函數的返回值數組作為函數參數7.1函數概述function函數也可以說是:功能就是具有一定功能的代碼段到現(xiàn)在為止,我們都是用主函數中的代碼完成一定的功能函數7.1函數概述C語言規(guī)定:可以把程序中的不同的功能寫成不同的函數即:C語言程序可以由不同功能的函數組成函數7.1函數概述函數組成程序的例子}intmain(){printstar();

print_message();printstar();return0;}#include“stdio.h”voidprintstar(){printf(“**********\n”);}voidprint_message(){printf(“Howdoyoudo?\n”);printstar和print_message就是兩個函數7.1函數概述print_message函數的功能輸出一行信息

Howdoyoudo?\printstar的功能是輸出一排”*”main是主函數,首先執(zhí)行main7.1函數概述

一個C程序由一個或多個函數組成,但至少有一個主函數(main函數);main函數是程序執(zhí)行的入口,可置于程序的任何位置。C語言語法規(guī)范:函數的分類:7.1函數概述從函數間的調用關系;主調函數,被調函數

從函數間數據傳送的關系分為:有參函數、無參函數、有返回值函數、無返回值函數;(接下來詳細講)從用戶的觀點分為:C編譯系統(tǒng)提供的標準庫函數和用戶自定義函數;

[類型符]函數名稱()

{

數據說明語句可執(zhí)行語句

}7.2.2無參函數的定義函數頭函數體7.2函數定義的一般形式

printstar()和print_message()都是無參函數

[類型符]函數名稱(類型形參1[,···])

{

數據說明語句可執(zhí)行語句

}7.2.3有參函數的定義函數頭函數體7.2函數定義的一般形式函數定義的一般形式舉例:floatsum(floatx,floaty){floatz;

z=x+y;

returnz;

}7.2函數定義的一般形式函數定義的一般形式說明:(1)float

sum(float

x,float

y){floatz;

z=x+y;

returnz;

}類型說明符:

指明函數的類型,函數的類型是指函數的返回值的類型,函數返回值所具有的數據類型的種類與變量相同。7.2函數定義的一般形式省略時則默認為int型。若明確表示函數"不帶回值",可以用"void"作類型符,稱"無類型"或稱"空類型"。

float

sum(float

x,float

y

{floatz;

z=x+y;

returnz;

}函數名:

通常是一個標識符,在一個程序中除了主函數外其余函數的名字可以任意取,但應有意義。

"()"函數標志。7.2函數定義的一般形式floatsum(float

x,floaty){floatz;

z=x+y;returnz;

}參數表(形參表):

函數定義時的參數稱為形式參數,形式參數彼此間用逗號分隔。形式參數省略時稱無參函數,但此時函數名后的圓括號不能省。形參說明是用來指明各個形式參數的類型,它隨形參的存在而存在。7.2函數定義的一般形式floatsum(floatx,floaty)

{floatz;

z=x+y;

returnz;

}函數體:

函數中最外層一對花括弧"{·······}"括起來的內容,它由若干個數據說明語句和可執(zhí)行語句組成,決定函數要實現(xiàn)的功能、完成的任務。函數體內若無任何語句時,為空函數。7.2函數定義的一般形式格式二:

[類型符]函數名稱()

{}7.2.4空函數的定義函數頭函數體7.2函數定義的一般形式voiddummy(){}實參(實際參數)是函數調用時調用函數傳送給被調用函數參數的實際值。實參可以是常量、變量和表達式,實參必須有確定的值。例如:fabs(-2);putchar(c);sqrt((x*x+2)*(y+z));7.3.1形式參數與實際參數7.3函數的參數和函數的值

形參(形式參數)是函數定義時,參數表中的參數。形式參數只能是變量,數組等。在函數定義時,參數表中的形參并沒有具體的值,系統(tǒng)也不為其分配存儲單元。7.3函數的參數和函數的值

例如:intmax(intx,inty){intz;z=x>y?x:y;returnz;}例形參和實參的運用7.3函數的參數和函數的值

intmax(intx,inty){intz;z=x>y?x:y;returnz;}voidmain(){inta,b,c;scanf(“%d%d”,&a,&b);c=max(a,b);printf(“maxis%d\n”,c);}7.3.2函數的返回值:當被調用函數在完成一定的功能后,可以將處理的結果返回到調用函數。7.3函數的參數和函數的值

7.3.2函數的返回值方式:return語句作用:將表達式的值傳給調用函數,并把控制權轉向調用函數實現(xiàn)函數的返回。格式:

return[[(]表達式[)]];7.3函數的參數和函數的值

對于不需要提供返回值的函數可以直接用void作為函數類型定義,以表明此函數返回值為”無類型”或”空類型”。voidprintchar()

{printf("WuhanUniversity\n");}main(){printchar();}void函數7.3函數的參數和函數的值

例編寫自定義函數計算:分析:確定形參:求c必須知道f的大小,設形參為temp。確定函數:函數的返回值即為c的值,設為實型。程序:floatftoc(floattemp){floatc;

c=(5./9.)*(temp–32);

returnc;

}7.3函數的參數和函數的值

例編寫一個自定義函數求n!分析:確定形參:求n!必須知道n的大小,設形參為n。確定函數:函數的返回值即為n!的值,設為實型。程序:floatfactorial(intn)

{floatx,y;for(x=y=1.0;x<=n;x++)

y*=x;returny;}7.3函數的參數和函數的值

7.4函數的調用7.4.1函數調用的一般形式是:函數名(實參表列)說明:實參與形參的個數相等、類型相同、順序一致,呈一一對應的關系。實參的求值順序不確定,與所用系統(tǒng)有關。實參應有確定的值。函數調用時,需要注意的幾點:C語言參數傳遞時,一般采用傳值方式,把各個實參值分別順序對應傳給形參。被調函數執(zhí)行中形參值的變化不會影響主調函數中實參變量的值。函數調用也是一種表達式,其值就是函數的返回值。7.4函數的調用自定義函數:

floatfactorial(intn)

{floatx,y;for(x=y=1.0;x<=n;x++)

y*=x;returny;}例調用自定義函數求n!調用:

voidmain(){intn;floatf;printf(“Pleaseinputn:”);scanf(“%d”,&n);f=factorial(n);printf(“n!=%f”,f);}7.4函數的調用調用方式

1)函數語句:

printf(”·····”);2)函數表達式:

c=2*pow(3.5,6);3)函數參數:

c=2*pow(pow(3.5,6),6);

printf(”%f\n”,pow(3.5,6));7.4函數的調用例:說出下列程序的運行結果fun2(inta,intb){intc;c=a*b%3;returnc;}fun1(inta,intb){intc;a+=a;b+=b;c=fun2(a,b);returnc*c;}main(){intx=11,y=19;printf("%d\n",fun1(x,y));}程序運行結果:47.4函數的調用#include<stdio.h>func(inta,intb){intc;c=a+b;returnc;}main(){intx=6,y=7,z=8,r;r=func((x--,y++,x+y),z--);printf(“r=%d\n”,r);}程序運行結果:r=21例:說出下列程序的運行結果7.4函數的調用函數原型:在定義或調用函數前,對該函數進行聲明。作用:將函數名、函數類型及形參個數、類型、順序等通知編譯系統(tǒng),當函數被調用時,可對實參、形參的類型、個數匹配情況進行檢查。格式:類型符函數名(參數類型1,···);或:

類型符函數名(類型符形參1,···);7.4.3對被調用函數的說明

7.4.3對被調用函數的說明

自定義函數:

floatfactorial

(intn)

{floatx,y;for(x=y=1.0;x<=n;x++)

y*=x;returny;}例調用自定義函數求n!floatfactorial

(intn);/*函數原型聲明*/

voidmain(){intn;floatf;printf(“Pleaseinputn:”);scanf(“%d”,&n);f=factorial

(n);printf(“n!=%f”,f);}例判定素數。#include"math.h"intisprime(int);

/*函數原型聲明*/main(){intx=35;if(isprime(x))printf("%d是素數。\n",x);elseprintf("%d不是素數。\n",x);}isprime(inta){inti;for(i=2;i<=sqrt((double)a);i++)if(a%i==0)return0;return1;}7.4.3對被調用函數的說明

數組名可做實參和形參,傳送的是整個數組數組作為函數的參數7.7數組作為函數的參數

在用數組名做函數參數時,實參和形參都應該用數組。7.7數組作為函數的參數

例起泡法排序voidsort(intarray[10],intn)

{inti,j,t;

for(i=0;i<n-1;i++)

for(j=0;j<n-i-1;j++)

if(array[j]>array[j+1])

{

t=array[j];

array[j]=array[j+1];

array[j+1]=t;

}}數組作函數的參數舉例7.7數組作為函數的參數

例起泡法排序intmain()

{

inti,a[10]={3,1,5,7,26,4,6,8,12,2};

sort(a,10);

for(i=0;i<10;i++)

printf("%d",a[i]);

return1;

溫馨提示

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

最新文檔

評論

0/150

提交評論