版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第十講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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年黑河五大連池市農村中心敬老院公開招聘政府編外用工人員8人筆試模擬試題及答案解析
- 2026山東聊城市陽谷縣征兵筆試備考題庫及答案解析
- 2026山東東營市石油化工學院人才招聘80人筆試備考試題及答案解析
- 2026年踏雪尋梅元旦的故事
- 2026廣西柳州三江侗族自治縣機關事業(yè)單位第一次招聘編外聘用人員1人筆試備考題庫及答案解析
- 2026四川長虹繽紛時代商業(yè)管理有限公司招聘招商主管崗位1人筆試參考題庫及答案解析
- 2026黑龍江哈爾濱工程大學智能科學與工程學院崗位招聘1人考試備考題庫及答案解析
- 2026廣西環(huán)保集團急需緊缺人才招聘1人筆試參考題庫及答案解析
- 2026年企業(yè)年報創(chuàng)意文案的魅力
- 2026國家會展中心(天津)有限責任公司實習生招募4人筆試備考試題及答案解析
- 廢舊材料回收合同范本
- 2025年張家界航空工業(yè)職業(yè)技術學院單招(計算機)測試備考題庫附答案
- 鐵路治安管理大講堂課件
- 2026屆山東省高考質量測評聯(lián)盟大聯(lián)考高三上學期12月聯(lián)考歷史試題(含答案)
- 2025年鐵嶺衛(wèi)生職業(yè)學院單招職業(yè)適應性考試模擬測試卷附答案
- 2025-2026學年蘇教版六年級數學上學期期中試卷及參考解析
- GB/T 19436.2-2025機械電氣安全電敏保護設備第2部分:使用有源光電保護裝置(AOPDs)設備的特殊要求
- 凈菜加工工藝流程與質量控制要點
- 第02講排列組合(復習講義)
- 大型商業(yè)綜合體消防安全應急預案
- 淺談國土年度變更調查及林草濕荒監(jiān)測區(qū)別
評論
0/150
提交評論