




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、會(huì)計(jì)學(xué)1chap函數(shù)與宏定義函數(shù)與宏定義第一頁(yè),編輯于星期六:點(diǎn) 四分。 C 函數(shù)分函數(shù)分標(biāo)準(zhǔn)函數(shù)標(biāo)準(zhǔn)函數(shù)(庫(kù)函數(shù)庫(kù)函數(shù))和和自定義函數(shù)自定義函數(shù)。 所有函數(shù)都是平行的,相互獨(dú)立不能嵌套定義,函數(shù)間所有函數(shù)都是平行的,相互獨(dú)立不能嵌套定義,函數(shù)間可以相互調(diào)用,但不能調(diào)用可以相互調(diào)用,但不能調(diào)用main()函數(shù)。函數(shù)。第1頁(yè)/共40頁(yè)第二頁(yè),編輯于星期六:點(diǎn) 四分。6.1.1 函數(shù)的定義古典形式:古典形式:類型標(biāo)識(shí)符類型標(biāo)識(shí)符 函數(shù)名函數(shù)名(形式參數(shù)表形式參數(shù)表)形式參數(shù)說(shuō)明;形式參數(shù)說(shuō)明; 函數(shù)體;函數(shù)體;現(xiàn)代簡(jiǎn)潔形式:現(xiàn)代簡(jiǎn)潔形式:類型標(biāo)識(shí)符類型標(biāo)識(shí)符 函數(shù)名函數(shù)名(形參說(shuō)明表形參說(shuō)明表)
2、函數(shù)體函數(shù)體;第2頁(yè)/共40頁(yè)第三頁(yè),編輯于星期六:點(diǎn) 四分。例:例:int max(x,y)int x, y;/ 形式參數(shù)說(shuō)明形式參數(shù)說(shuō)明 / int z;/ 函數(shù)體中的說(shuō)明部分函數(shù)體中的說(shuō)明部分 / z=xy ? x : y; return(z);這兩行可以寫成一行:這兩行可以寫成一行:int max(int x, int y)例:例:int max(int x, int y) int z;/ 函數(shù)體中的說(shuō)明部分函數(shù)體中的說(shuō)明部分 / z=xy ? x : y; return(z);第3頁(yè)/共40頁(yè)第四頁(yè),編輯于星期六:點(diǎn) 四分。函數(shù)參數(shù)和函數(shù)的值函數(shù)參數(shù)和函數(shù)的值1形式參數(shù)和實(shí)際參數(shù)形式
3、參數(shù)和實(shí)際參數(shù)例例 從鍵盤輸入兩個(gè)數(shù),輸出其中較大的一個(gè)。從鍵盤輸入兩個(gè)數(shù),輸出其中較大的一個(gè)。 main( ) int a, b, c ; scanf(%d %d, &a, &b); c=max(a,b); /* a, b為實(shí)際參數(shù)為實(shí)際參數(shù) */ printf(Max is %d,c); getch(); max(int x, int y) /* x, y為形式參數(shù)為形式參數(shù) */ int z; z=xy ? x : y; return(z); 第4頁(yè)/共40頁(yè)第五頁(yè),編輯于星期六:點(diǎn) 四分。注意注意:第5頁(yè)/共40頁(yè)第六頁(yè),編輯于星期六:點(diǎn) 四分。2函數(shù)的返回值函數(shù)的返回值第6頁(yè)/共40
4、頁(yè)第七頁(yè),編輯于星期六:點(diǎn) 四分。 若函數(shù)中沒(méi)有若函數(shù)中沒(méi)有return語(yǔ)句,則函數(shù)被調(diào)用后也會(huì)帶回語(yǔ)句,則函數(shù)被調(diào)用后也會(huì)帶回不確不確定的值定的值。 為了明確表示不需要函數(shù)返回值,可以用為了明確表示不需要函數(shù)返回值,可以用“void”定義定義函數(shù)為函數(shù)為“無(wú)類型無(wú)類型”。此時(shí),不得使用。此時(shí),不得使用a=f( )之類的賦值語(yǔ)句。之類的賦值語(yǔ)句。凡不需要返回值的函數(shù),一般均定義為凡不需要返回值的函數(shù),一般均定義為“void”類型。類型。第7頁(yè)/共40頁(yè)第八頁(yè),編輯于星期六:點(diǎn) 四分。函數(shù)的調(diào)用函數(shù)的調(diào)用第8頁(yè)/共40頁(yè)第九頁(yè),編輯于星期六:點(diǎn) 四分。 將函數(shù)調(diào)用作為一個(gè)函數(shù)的實(shí)參。將函數(shù)調(diào)用作
5、為一個(gè)函數(shù)的實(shí)參。如:如:m=max(max(a, b), c);2函數(shù)調(diào)用的方式函數(shù)調(diào)用的方式第9頁(yè)/共40頁(yè)第十頁(yè),編輯于星期六:點(diǎn) 四分。 如果被調(diào)函數(shù)為自定義函數(shù)且其定義在主調(diào)函數(shù)定義之后如果被調(diào)函數(shù)為自定義函數(shù)且其定義在主調(diào)函數(shù)定義之后,則應(yīng)在主調(diào)函數(shù)中對(duì)該函數(shù)進(jìn)行聲明。其語(yǔ)句形式一般為,則應(yīng)在主調(diào)函數(shù)中對(duì)該函數(shù)進(jìn)行聲明。其語(yǔ)句形式一般為: 類型標(biāo)識(shí)符類型標(biāo)識(shí)符 被調(diào)函數(shù)名被調(diào)函數(shù)名(參數(shù)列表參數(shù)列表); 如:如:float add(int x, int y );第10頁(yè)/共40頁(yè)第十一頁(yè),編輯于星期六:點(diǎn) 四分。第11頁(yè)/共40頁(yè)第十二頁(yè),編輯于星期六:點(diǎn) 四分。局部變量和全局變量
6、局部變量和全局變量6.2 變量的作用域和存儲(chǔ)類型變量的作用域和存儲(chǔ)類型第12頁(yè)/共40頁(yè)第十三頁(yè),編輯于星期六:點(diǎn) 四分。在文件開頭定義的外部變量才可在整個(gè)文件范圍內(nèi)使用,若在定義點(diǎn)之前的函數(shù)需引用外部變量,則可用關(guān)鍵字在文件開頭定義的外部變量才可在整個(gè)文件范圍內(nèi)使用,若在定義點(diǎn)之前的函數(shù)需引用外部變量,則可用關(guān)鍵字“extern”作作“外部變量聲明外部變量聲明”。注意注意:外部變量的定義外部變量的定義只能有一次,它的位置在所有函數(shù)之外。而同一程序中的只能有一次,它的位置在所有函數(shù)之外。而同一程序中的外部變量聲明外部變量聲明可以有多次,它的位置在函數(shù)之內(nèi)可以有多次,它的位置在函數(shù)之內(nèi)(哪個(gè)函數(shù)
7、要用就在哪個(gè)函數(shù)中說(shuō)明哪個(gè)函數(shù)要用就在哪個(gè)函數(shù)中說(shuō)明)。系統(tǒng)根據(jù)外部變量的定義。系統(tǒng)根據(jù)外部變量的定義(而不是根據(jù)外部變量的說(shuō)明而不是根據(jù)外部變量的說(shuō)明)分配存儲(chǔ)單元。對(duì)外部變量的初始化只能在分配存儲(chǔ)單元。對(duì)外部變量的初始化只能在“定義定義”時(shí)進(jìn)行,時(shí)進(jìn)行,“extern”只是申明該變量是一個(gè)已在外部定義過(guò)的變量而已只是申明該變量是一個(gè)已在外部定義過(guò)的變量而已。如果在同一源文件中,外部變量與局部變量同名,則在局部變量的作用范圍內(nèi),外部變量不起作用。如果在同一源文件中,外部變量與局部變量同名,則在局部變量的作用范圍內(nèi),外部變量不起作用。 第13頁(yè)/共40頁(yè)第十四頁(yè),編輯于星期六:點(diǎn) 四分。輸出結(jié)
8、果:輸出結(jié)果:10, 4, 810, 2, 5例例#include stdio.hmain( ) int a=1, b=2, c=3; a+; c+=b; int b=4, c; c=2*b; a+=c; printf(%d,%d,%dn, a, b, c); printf(%d,%d,%dn, a, b, c); getch();第14頁(yè)/共40頁(yè)第十五頁(yè),編輯于星期六:點(diǎn) 四分。變量的存儲(chǔ)類型變量的存儲(chǔ)類型第15頁(yè)/共40頁(yè)第十六頁(yè),編輯于星期六:點(diǎn) 四分。2) 若希望被調(diào)函數(shù)在結(jié)束后,其局部變量占用的存儲(chǔ)空間若希望被調(diào)函數(shù)在結(jié)束后,其局部變量占用的存儲(chǔ)空間不釋放,以便保留其變量的值,用于
9、下次調(diào)用該函數(shù),則不釋放,以便保留其變量的值,用于下次調(diào)用該函數(shù),則用用“static”說(shuō)明為說(shuō)明為 “局部靜態(tài)變量局部靜態(tài)變量”。第16頁(yè)/共40頁(yè)第十七頁(yè),編輯于星期六:點(diǎn) 四分。第17頁(yè)/共40頁(yè)第十八頁(yè),編輯于星期六:點(diǎn) 四分。例例 打印打印1到到5的階乘值。的階乘值。 int fac(int n) static int f =1; / 定義定義f 為為int型靜態(tài)變量型靜態(tài)變量 / f = f n ; return( f ); main( ) int i; for (i=1; i1 f(0)=1,f(1)=1第23頁(yè)/共40頁(yè)第二十四頁(yè),編輯于星期六:點(diǎn) 四分。第24頁(yè)/共40頁(yè)第二
10、十五頁(yè),編輯于星期六:點(diǎn) 四分。6.5 預(yù)處理預(yù)處理第25頁(yè)/共40頁(yè)第二十六頁(yè),編輯于星期六:點(diǎn) 四分。6.5.1 宏定義宏定義例例 求正圓錐體的底周長(zhǎng)、底面積和它的體積。求正圓錐體的底周長(zhǎng)、底面積和它的體積。 #define PI 3.1415926 /* 宏名宏名PI用大寫,行末無(wú)分號(hào)用大寫,行末無(wú)分號(hào) */ main( ) float l, s, r, v ; scanf(%f,&r); l = 2.0*PI*r; s = PI*r*r ; v = 4.0 / 3*PI*r*r*r ; printf(l=%10.4f ns=%10.4f nv=%10.4f n,l,s,v); getc
11、h(); 第26頁(yè)/共40頁(yè)第二十七頁(yè),編輯于星期六:點(diǎn) 四分。 宏名的有效范圍為該宏定義命令之后至本源文件結(jié)束。宏名的有效范圍為該宏定義命令之后至本源文件結(jié)束。通常,宏定義命令一般寫在文件開頭或函數(shù)之前作為該文通常,宏定義命令一般寫在文件開頭或函數(shù)之前作為該文件的一部分。件的一部分。 可以用可以用 #undef 命令終止宏定義的作用域。如:命令終止宏定義的作用域。如:#define G 9.8main( )#undef Gfloat f( ) G 的作用范圍的作用范圍第27頁(yè)/共40頁(yè)第二十八頁(yè),編輯于星期六:點(diǎn) 四分。2帶參數(shù)的宏定義帶參數(shù)的宏定義語(yǔ)句形式:語(yǔ)句形式:#define 宏名宏
12、名(形參表形參表) 字符串字符串注意:字符串應(yīng)包含形參表中的參數(shù)注意:字符串應(yīng)包含形參表中的參數(shù)例例#define PI 3.1415926#define S(r) PI*r*rmain( )float a, area; a=3.6; area=S(a); /*area=3.1415926*a*a,但不會(huì)置換,但不會(huì)置換a為為3.6 */ printf(r=%f narea=%f n,a,area); getch();第28頁(yè)/共40頁(yè)第二十九頁(yè),編輯于星期六:點(diǎn) 四分。第29頁(yè)/共40頁(yè)第三十頁(yè),編輯于星期六:點(diǎn) 四分。 定義帶參數(shù)的宏,可以實(shí)現(xiàn)一些簡(jiǎn)單的函數(shù)功能。定義帶參數(shù)的宏,可以實(shí)現(xiàn)一
13、些簡(jiǎn)單的函數(shù)功能。如:如:#define MAX(x,y) (x)(y)?(x) : (y) main( )int a, b, c, t ; t = MAX(a+b, c+d); 第30頁(yè)/共40頁(yè)第三十一頁(yè),編輯于星期六:點(diǎn) 四分。6.5.2 “文件包含文件包含” 用用 #include 命令實(shí)現(xiàn)一個(gè)文件包含另一個(gè)文件。命令實(shí)現(xiàn)一個(gè)文件包含另一個(gè)文件。 語(yǔ)句形式:語(yǔ)句形式: #include “文件名文件名”例例#include stdio.h#define N 2#define M N+1#define NUM (M+1)*M/2main( ) int i, n=0; for (i=1;
14、i=NUM; i+) n+; printf(%2d, n); getch();輸出結(jié)果:輸出結(jié)果:1 2 3 4 5 6 7 8第31頁(yè)/共40頁(yè)第三十二頁(yè),編輯于星期六:點(diǎn) 四分。 NUM被代換展開后為:被代換展開后為:( 2+1+1) 2+1/2#include命令中,文件名既可用雙引命令中,文件名既可用雙引“ ”號(hào)號(hào)(推薦)推薦),也可用尖括號(hào),也可用尖括號(hào)括起來(lái)。括起來(lái)。表示被包含在標(biāo)準(zhǔn)目表示被包含在標(biāo)準(zhǔn)目錄中錄中(include).“”表示被包含文件在指定目錄中,若表示被包含文件在指定目錄中,若只有文件名不帶路徑,則在當(dāng)前目錄中,若找不到,只有文件名不帶路徑,則在當(dāng)前目錄中,若找不到
15、,再到標(biāo)準(zhǔn)目錄中找。再到標(biāo)準(zhǔn)目錄中找。包含文件名可以是包含文件名可以是.c源文件或源文件或.頭文件,如頭文件,如#include #include “myhead.h”#include “D:myexammyfile.c”第32頁(yè)/共40頁(yè)第三十三頁(yè),編輯于星期六:點(diǎn) 四分。所謂所謂“宏名已定義宏名已定義”是無(wú)論是無(wú)論“宏名宏名”定義為什么內(nèi)容。定義為什么內(nèi)容。 條件編譯的作用:縮短編譯時(shí)間,減少目標(biāo)程序的長(zhǎng)度。條件編譯的作用:縮短編譯時(shí)間,減少目標(biāo)程序的長(zhǎng)度。 第33頁(yè)/共40頁(yè)第三十四頁(yè),編輯于星期六:點(diǎn) 四分。2#ifndef 宏名宏名 程序段程序段1 #else 程序段程序段2 #en
16、dif第34頁(yè)/共40頁(yè)第三十五頁(yè),編輯于星期六:點(diǎn) 四分。第35頁(yè)/共40頁(yè)第三十六頁(yè),編輯于星期六:點(diǎn) 四分。例例 #define TED 10main() #ifdef TED printf(Hi,Tedn); #else printf(HI,Anyonen); #endif #ifndef PALPH printf(RAPLH not definedn); #endif getch();第36頁(yè)/共40頁(yè)第三十七頁(yè),編輯于星期六:點(diǎn) 四分。例main() #if MAX99 printf(compile for array greater than 99); #else printf(compile for small array); #endif getch();第37頁(yè)/共40頁(yè)第三十八頁(yè),編輯
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 交通協(xié)管員就業(yè)合同
- 浙江工業(yè)大學(xué)之江學(xué)院《醫(yī)用物理學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 新疆藝術(shù)學(xué)院《日語(yǔ)會(huì)話Ⅱ》2023-2024學(xué)年第二學(xué)期期末試卷
- 三亞學(xué)院《信息與網(wǎng)絡(luò)安全》2023-2024學(xué)年第二學(xué)期期末試卷
- 浙江省富陽(yáng)二中2025年高三教學(xué)調(diào)研(二)物理試題試卷含解析
- 蘇州高博軟件技術(shù)職業(yè)學(xué)院《酒店服務(wù)心理學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 江蘇省蘇州昆山市2025屆初三6月熱身考化學(xué)試題含解析
- 長(zhǎng)沙理工大學(xué)《生理學(xué)A》2023-2024學(xué)年第二學(xué)期期末試卷
- 三方合同共建企業(yè)的協(xié)議2025
- 江西省吉安市四校聯(lián)考2025年高三下學(xué)期期末調(diào)研測(cè)試語(yǔ)文試題含解析
- GB/T 2430-2008航空燃料冰點(diǎn)測(cè)定法
- 氣溫的分布和溫度帶
- 第6-2章生料粉磨和熟料粉磨
- 2023年廣東學(xué)位英語(yǔ)試題學(xué)位英語(yǔ)考試真題(含答案)
- 冒泡排序算法課件
- 粵教版五年級(jí)下冊(cè)科學(xué)知識(shí)點(diǎn)
- 文言文《守株待兔》說(shuō)課稿課件
- 生物礦物課件
- GB∕T 36765-2018 汽車空調(diào)用1,1,1,2-四氟乙烷(氣霧罐型)
- DB34-T 4243-2022 智慧醫(yī)院醫(yī)用耗材SPD驗(yàn)收規(guī)范
- 《覺(jué)醒年代》朗誦稿
評(píng)論
0/150
提交評(píng)論