版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、1天道酬勤!天道酬勤!高級語言程序設計高級語言程序設計主講教師:丁丁主講教師:丁丁計算機與信息技術學院計算機與信息技術學院3回顧回顧n字符輸入、輸出函數(shù)?字符輸入、輸出函數(shù)?n格式輸入、輸出函數(shù)是?其一般形式為?這些格式輸入、輸出函數(shù)是?其一般形式為?這些輸入輸出函數(shù)的庫函數(shù)的頭文件是?輸入輸出函數(shù)的庫函數(shù)的頭文件是?n算術運算符及表達式算術運算符及表達式q - * / %q整數(shù)除整數(shù)仍為整數(shù)整數(shù)除整數(shù)仍為整數(shù)q%的操作對象只能為整數(shù)的操作對象只能為整數(shù)n混合類型算術表達式的轉換規(guī)則是?混合類型算術表達式的轉換規(guī)則是?n數(shù)學函數(shù)庫的頭文件名?如何調(diào)用?數(shù)學函數(shù)庫的頭文件名?如何調(diào)用?4前面:前
2、面:只能描述由基本數(shù)據(jù)出發(fā)的簡單計算只能描述由基本數(shù)據(jù)出發(fā)的簡單計算實現(xiàn)簡單的順序結構程序實現(xiàn)簡單的順序結構程序場景場景1:程序中有許多相同的計算:程序中有許多相同的計算場景場景2:解決的問題大而且比較復雜解決的問題大而且比較復雜場景場景3:解決復雜問題所需的其它基本控制結構如何實現(xiàn):解決復雜問題所需的其它基本控制結構如何實現(xiàn) 選擇結構循環(huán)結構選擇結構循環(huán)結構5第三章第三章變量、函數(shù)和控制結構變量、函數(shù)和控制結構2022-7-4高級高級語言程序設計語言程序設計6主要內(nèi)容:主要內(nèi)容:程序設計的基本知識程序設計的基本知識n3.1 語句、復合語句語句、復合語句 n3.2 變量變量概念、定義和使用概念
3、、定義和使用n3.3 定義函數(shù)(初步,第五章深入)定義函數(shù)(初步,第五章深入) n3.4 關系表達式、邏輯表達式、條件表達式關系表達式、邏輯表達式、條件表達式n3.5 語句和控制結構語句和控制結構n3.6 常見結構和問題常見結構和問題7n語句語句是程序的基本單位,語句的結束標志是是程序的基本單位,語句的結束標志是;printf();/*輸出語句輸出語句*/a = b + c;/*賦值語句賦值語句*/ n語法語法:語句的形式必須符合語言要求。:語句的形式必須符合語言要求。n語義語義:形式合法的語句表達了某種含義(程序執(zhí)行時:形式合法的語句表達了某種含義(程序執(zhí)行時的效果),稱為語句的語義。的效果
4、),稱為語句的語義。C語言描述執(zhí)行流程的一種最基本的結構是語言描述執(zhí)行流程的一種最基本的結構是復合復合結構結構。語句語句8語法:一對花括號語法:一對花括號.,后無分號后無分號,其中可有,其中可有0個或多個個或多個語句語句。語義:順序執(zhí)行其中的各個語句。語義:順序執(zhí)行其中的各個語句??諒秃辖Y構中沒有語句,執(zhí)行時立即結束??諒秃辖Y構中沒有語句,執(zhí)行時立即結束。 int main () printf(Good morning!n); printf(“PI=%fn”,3.1415); return 0; 這些語句順序執(zhí)這些語句順序執(zhí)行:順序結構行:順序結構復合結構(復合語句)復合結構(復合語句)復合語
5、句復合語句int main () int n,m;double a,b; scanf(“”); if mn a=a+b;b=a-b; else a=a*b;b=a/b; printf(“”); return 0;9C語言是自由書寫格式,但語言是自由書寫格式,但應養(yǎng)成良好規(guī)范:應養(yǎng)成良好規(guī)范: 使用使用TAB縮進縮進 對齊對齊 有足夠的注釋有足夠的注釋 有合適的空行有合適的空行 鋸齒形書寫鋸齒形書寫int main () int n,m;double a,b; scanf(“”); if mn a=a+b;b=a-b; else a=a*b;b=a/b; printf(“”); return 0
6、;復合語句可以嵌套復合語句可以嵌套 10 C語言的語句語言的語句n空語句空語句 : ;n復合語句復合語句: 之間的部分之間的部分n表達式語句表達式語句: a=b+c; n聲明語句聲明語句: int a,b,c; n控制語句控制語句: if for while do-while switch2022-7-4高級高級語言程序設計語言程序設計11主要內(nèi)容:主要內(nèi)容:程序設計的基本知識程序設計的基本知識n3.1 語句、復合語句語句、復合語句 n3.2 變量變量概念、定義和使用概念、定義和使用n3.3 定義函數(shù)(初步,第五章深入)定義函數(shù)(初步,第五章深入) n3.4 關系表達式、邏輯表達式、條件表達式
7、關系表達式、邏輯表達式、條件表達式n3.5 語句和控制結構語句和控制結構n3.6 常見結構和問題常見結構和問題1 變量的基本概念變量的基本概念n變量變量q程序運行過程中可以發(fā)生變化的量程序運行過程中可以發(fā)生變化的量q存儲數(shù)據(jù)的命名對象(變量名)存儲數(shù)據(jù)的命名對象(變量名)q變量名是標識符變量名是標識符q使我們可能通過一個名字來使用存儲單元使我們可能通過一個名字來使用存儲單元n變量的特點變量的特點q變量能保存值,不會丟失。變量能保存值,不會丟失。q變量的值可以變化變量的值可以變化q變量賦一個值之后,每次使用它總得到這個值,直到變量賦一個值之后,每次使用它總得到這個值,直到下次賦值。下次賦值。n對
8、變量基本操作對變量基本操作q賦值(寫)賦值(寫)q取值(讀)取值(讀)注意:要遵循命名規(guī)范2 變量的定義變量的定義13變量定義形式:變量定義形式:類型名類型名 變量名變量名1, , 變量名變量名n;int k, n, sum, count;long double y, z;int m; double x; 聲明語句聲明語句說明說明:n變量必須先定義后使用!變量必須先定義后使用!n變量有固定的類型,變量有固定的類型,只能保存這個類型的值只能保存這個類型的值。q整型變量(保存整型變量(保存 int值的變量)值的變量)q雙精度變量(保存雙精度變量(保存 double 值)值)q字符變量等,但字符變量
9、是按整數(shù)形式存儲的。字符變量等,但字符變量是按整數(shù)形式存儲的。14注意注意:n變量的命名變量的命名q關鍵字不能用做變量名關鍵字不能用做變量名q提倡采用有意義名字:提倡采用有意義名字:area,number15變量命名的一般原則變量命名的一般原則n應當直觀且可以拼讀,可望文知意,不必進行應當直觀且可以拼讀,可望文知意,不必進行“解碼解碼” q例如不要把例如不要把CurrentValue寫成寫成NowValue n長度應當符合長度應當符合“min-length & max-information”原則原則q如變量名如變量名maxVal比比maxValueUntilOverflow好用。好用。q單字
10、符的名字也是有用的,如單字符的名字也是有用的,如i,j,k,m,n,x,y,z等,函數(shù)內(nèi)的局部變量。等,函數(shù)內(nèi)的局部變量。n盡量與所采用的操作系統(tǒng)或開發(fā)工具的風格保持一致盡量與所采用的操作系統(tǒng)或開發(fā)工具的風格保持一致 q如如Windows應用程序的標識符通常采用應用程序的標識符通常采用“大小寫大小寫”混排的方式,如混排的方式,如AddChild。q而而Unix應用程序的標識符通常采用應用程序的標識符通常采用“小寫加下劃線小寫加下劃線”的方式,如的方式,如add_child。n程序中不要出現(xiàn)僅靠大小寫區(qū)分的相似的標識符程序中不要出現(xiàn)僅靠大小寫區(qū)分的相似的標識符 qint x, X; / 變量變量
11、x 與與 X 容易混淆容易混淆 n變量的名字應當使用變量的名字應當使用“名詞名詞”或者或者“形容詞名詞形容詞名詞” q例如:例如:float value; float oldValue; float newValue;n盡量避免名字中出現(xiàn)數(shù)字編號,如盡量避免名字中出現(xiàn)數(shù)字編號,如Value1,Value2等等16變量命名普通規(guī)范變量命名普通規(guī)范n變量名一般需要反映變量的用途變量名一般需要反映變量的用途q如:如:int sum;n如果變量名由多個單詞構成,每個單詞的首字如果變量名由多個單詞構成,每個單詞的首字符要大寫符要大寫q如:如:int CurrentValue17注意注意:n復合結構中可以
12、定義變量(局部變量)復合結構中可以定義變量(局部變量)。q只能在該復合語句內(nèi)部使用只能在該復合語句內(nèi)部使用q變量定義應出現(xiàn)在所有語句之前變量定義應出現(xiàn)在所有語句之前變量定義序列變量定義序列語句序列語句序列n一個復合結構里一個復合結構里不能定義多個同名的變量不能定義多個同名的變量。n復合結構的執(zhí)行:復合結構的執(zhí)行: 先定義變量,而后順序執(zhí)先定義變量,而后順序執(zhí)行各語句行各語句順序結構順序結構。18#includeint main() int a,b,c; a=1;b=5;c=8; c=a+b; int d; d=a+c; printf(d=%dn,d); printf(d=%dn, d); re
13、turn 0;#includeint main() int a,b,c,d; a=1;b=5;c=8;d=9; c=a+b; int d; d=a+c; printf(d=%dn,d); printf(c=%d d=%dn,c,d); return 0;例例 運行以下兩個程序,分析結果運行以下兩個程序,分析結果19n取值取值:計算中遇到變量,取其值參與計算:計算中遇到變量,取其值參與計算qx + sin(3.2 * y) - pow(x, 2); qprintf(“%dn”, n * 2);n賦值賦值:用:用賦值運算符賦值運算符(=,賦值號賦值號)表示)表示qx = 5.0; x = y; x
14、 = y + sin(a)q左邊是賦值目標,右邊是提供值的表達式左邊是賦值目標,右邊是提供值的表達式q賦值運算是把右邊表達式的值賦給左邊變量賦值運算是把右邊表達式的值賦給左邊變量n賦值語句賦值語句:賦值表達式后加分號(語法):賦值表達式后加分號(語法)3 變量的取值和賦值變量的取值和賦值qx = 5.0; x = y; x = y + sin(a);20說明說明:n賦值運算符優(yōu)先級很低賦值運算符優(yōu)先級很低q例:例:x = 2 + 3 * y /*先計算后賦值先計算后賦值*/n賦值運算符的值與結合性賦值運算符的值與結合性q賦值表達式本身也有值,就是賦給左邊變量的那個值賦值表達式本身也有值,就是賦
15、給左邊變量的那個值q賦值表達式的值可以作為更大表達式的一部分賦值表達式的值可以作為更大表達式的一部分,但不提倡但不提倡n y = (x = 5) + 8; y = (z = (x = 1.0); q賦值運算符賦值運算符從右向左從右向左結合結合ny = z = x = 1.0;賦值與類型賦值與類型n被賦值變量有類型(由變量定義確定)被賦值變量有類型(由變量定義確定)n賦值號右邊表達式的值有類型賦值號右邊表達式的值有類型21不一致將發(fā)不一致將發(fā)生類型轉換生類型轉換規(guī)定:規(guī)定:若表達式值與被賦值變量類型不同,該值先轉換到變?nèi)舯磉_式值與被賦值變量類型不同,該值先轉換到變量類型的值,然后賦值量類型的值,
16、然后賦值。#includeint main() int n;double s; n=6;s=n; printf(s=%fn,s); return 0;#includeint main() int n;double s; s=6.2;n=s; printf(n=%dn,n); return 0;比較運行結果比較運行結果?22例例(第二章第二章):三角形三邊長為:三角形三邊長為3、5、7厘米,求其面積厘米,求其面積。/程序功能:已知三角形三邊長求面積程序功能:已知三角形三邊長求面積#include #include int main () printf(%fn, sqrt(3+5+7)/2.0)
17、* (3+5+7)/2.0 - 3) * (3+5+7)/2.0 - 5) * (3+5+7)/2.0 - 7); return 0;23/程序功能:已知三角形三邊長求面積程序功能:已知三角形三邊長求面積#include #include int main () double s; s = (3. + 5. + 7.) / 2.; printf(Area: %fn, sqrt(s*(s-3.)*(s-5.)*(s-7.); return 0;*變量的最主要用途:變量的最主要用途:保存計算的中間結果保存計算的中間結果表達式表達式例:重寫由三邊例:重寫由三邊3、5、7求三角形面積的程序。求三角形面
18、積的程序。24/程序功能:輸入三角形三邊長,求面積程序功能:輸入三角形三邊長,求面積#include#includeint main( ) double a, b, c, s, area; printf(Please input a,b and c: n); scanf(%lf,%lf,%lf, &a, &b, &c); s = (a + b + c) / 2.0; area=sqrt(s * (s - a) * (s - b) *( s - c); printf(a=%7.2f, b=%7.2f, c=%7.2f , s=%7.2f n,a,b,c,s); printf(area=%7.2f
19、n,area);return 0;例:從鍵盤輸入三角形三邊邊長,求三角形的面積并輸出例:從鍵盤輸入三角形三邊邊長,求三角形的面積并輸出程序更具有通用性程序更具有通用性25double s = (3 + 5 + 7)/2.0;long double x = 4.5L, y = 3.24L;n變量初始化變量初始化q在定義變量時,用類似賦值的寫法給被定義變量指定初在定義變量時,用類似賦值的寫法給被定義變量指定初值,稱為變量的初始化。值,稱為變量的初始化。q可用可用數(shù)值或者數(shù)值表達式數(shù)值或者數(shù)值表達式為類型合適的變量做初始化為類型合適的變量做初始化q只能一個變量一個變量的做初始化,即使這些變量需要只能
20、一個變量一個變量的做初始化,即使這些變量需要完全相同的初值完全相同的初值4 幾個問題幾個問題26#include #include int main() double s; s = (3.+ 5.+7.)/2.; printf(Area: %fn, sqrt(s*(s-3.)*(s-5.)*(s-7.); return 0;#include #include int main() double s=(3.+5.+7.)/2.; printf(Area: %fn, sqrt(s*(s-3.)*(s-5.)*(s-7.); return 0;比較兩個程序比較兩個程序?27 變變量量的的名名字字 變
21、變量量類類型型 35.70 變變量量的的值值 double x1 變變量量存存儲儲位位置置 地地址址:0 x00002f30 變量的名字:變量的名字:訪問變量訪問變量變量的類型:變量的類型:可參與的運算形式可參與的運算形式變量的值:變量的值:參與計算參與計算變量的地址:變量的地址:計算機內(nèi)的具體實現(xiàn)計算機內(nèi)的具體實現(xiàn)變量的屬性變量的屬性例例 double x1 = 35.70;28#includeint main() int x = 5, y; x=x+1; y = (y = 8) + x; printf(x=%d,y=%dn, x, y); return 0;執(zhí)行后執(zhí)行后x,y 的值是什么?
22、的值是什么?賦值與賦值與 “等于等于”:在:在C中中“ = ”不是不是“等于等于”x = x+1; C中合法中合法,數(shù)學里為矛盾數(shù)學里為矛盾;x=6 ,y=1429簡單計算程序簡單計算程序 基本結構(順序結構)基本結構(順序結構)#include /* 如用數(shù)學函數(shù),要寫如用數(shù)學函數(shù),要寫#include */ int main () /* 若干變量定義(及可能的初始化)若干變量定義(及可能的初始化) */ /* 若干計算和賦值語句若干計算和賦值語句 */ /* 若干輸出語句若干輸出語句 */ return 0;這是這是 C 程序的基本形式,后面逐步擴充程序的基本形式,后面逐步擴充可能會用到函
23、數(shù),可能會用到函數(shù),復合結構等復合結構等2022-7-4高級高級語言程序設計語言程序設計30主要內(nèi)容:主要內(nèi)容:程序設計的基本知識程序設計的基本知識n3.1 語句、復合語句語句、復合語句 n3.2 變量變量概念、定義和使用概念、定義和使用n3.3 定義函數(shù)(初步,第五章深入)定義函數(shù)(初步,第五章深入) n3.4 關系表達式、邏輯表達式、條件表達式關系表達式、邏輯表達式、條件表達式n3.5 語句和控制結構語句和控制結構n3.6 常見結構和問題常見結構和問題1 問題的提出問題的提出-為什么要定義函數(shù)為什么要定義函數(shù)31p 函數(shù)是特定計算過程的抽象,體現(xiàn)結構化程序設計函數(shù)是特定計算過程的抽象,體現(xiàn)
24、結構化程序設計p 復雜問題模塊化復雜問題模塊化p 有參數(shù)有參數(shù)( (有類型有類型),),有返回值有返回值( (有類型有類型) )或無返回值或無返回值p C中函數(shù)分中函數(shù)分: 標準函數(shù)和用戶自定義函數(shù)標準函數(shù)和用戶自定義函數(shù)函數(shù)解決什么問題函數(shù)解決什么問題?如何定義函數(shù)如何定義函數(shù)?如何使用函數(shù)如何使用函數(shù)?32例:求一些圓盤的面積,圓盤半徑分別為:例:求一些圓盤的面積,圓盤半徑分別為:3.24、2.13、0.865、3.746、12.3364、8.421要求輸出各圓盤的面積。設圓周率用要求輸出各圓盤的面積。設圓周率用 3.1416。#includeint main() printf(radiu
25、s:%f, area:%fn, 3.24, 3.24 * 3.24 * 3.1416); printf(radius:%f, area:%fn, 2.13, 2.13 * 2.12 * 3.1415); /* 實際程序里不能有省略號實際程序里不能有省略號 */ return 0;繁瑣繁瑣?有解決問題的辦法有解決問題的辦法?33辦法辦法1:有以半徑為參數(shù)計算圓盤面積的函數(shù):有以半徑為參數(shù)計算圓盤面積的函數(shù):double c_area(double) 函數(shù)的類型特征函數(shù)的類型特征辦法辦法2:如有計算并輸出圓盤面積的函數(shù)如有計算并輸出圓盤面積的函數(shù):void pc_area(double) 函數(shù)的類
26、型特征函數(shù)的類型特征函數(shù)能使程序變短,變得易寫函數(shù)能使程序變短,變得易寫/易理解易理解/易修改易修改程序簡化為:程序簡化為:printf(radius:%f,area:%fn,3.24,c_area(3.24);printf(“radius:%f,area:%fn”,3.24,c_area(2.13);程序進一步簡化為:程序進一步簡化為:pc_area(3.24); pc_area(2.13);如何定義函數(shù)如何定義函數(shù)n把一段計算定義成函數(shù)并給以命名把一段計算定義成函數(shù)并給以命名n定義后就可以通過名字調(diào)用,用在任何需要的地定義后就可以通過名字調(diào)用,用在任何需要的地方。方。34定義函數(shù)定義函數(shù)
27、c_areadouble c_area (double r) return r * r * 3.1416;或定義函數(shù)或定義函數(shù) c_areadouble c_area (double r) double area area= r * r * 3.1416 ; return area;如何使用函數(shù)如何使用函數(shù)n有返回值的函數(shù)可作為有返回值的函數(shù)可作為表達式表達式使用使用35外半徑外半徑5.3,內(nèi)半徑,內(nèi)半徑3.07,高,高4.2的空心圓柱:的空心圓柱: (c_area(5.3) - c_area(3.07)*4.2半徑半徑3.24高高2.4的圓錐體積:的圓錐體積:2.4 * c_area(3.2
28、4) / 3.036/* 定義定義c_area函數(shù),重寫程序函數(shù),重寫程序 */#include double c_area (double r) return r * r * 3.1416; /* 很容易很容易修改圓周率近似值修改圓周率近似值*/int main () printf(Radius:%f, area:%fn, 3.24, c_area(3.24); printf (Radius:%f, area:%fn, 2.13, c_area(2.13); printf (Radius:%f, area:%fn, 0.865, c_area(0.865); printf (Radius:%
29、f, area:%fn, 3.746, c_area(3.746); p r i n t f ( R a d i u s : % f , a r e a : % f n , 1 2 . 3 3 6 4 , c_area(12.3364); printf (Radius:%f, area:%fn, 8.421, c_area(8.421); return 0; 任意給出半徑求出圓的任意給出半徑求出圓的面積,如何改寫程序?面積,如何改寫程序?37/* 定義定義pc_area函數(shù),重寫程序函數(shù),重寫程序 */#include double c_area (double r) return r * r
30、 * 3.1416; void pc_area (double r) printf(Radius:%f, area:%fn, r, c_area(r);int main () pc_area(3.24); pc_area(2.13); pc_area(0.865); pc_area(3.746); pc_area(12.3364); pc_area(8.421); return 0; void表示無返表示無返回值的函數(shù)回值的函數(shù)無返回值的函數(shù)的調(diào)無返回值的函數(shù)的調(diào)用相當于語句用相當于語句2 函數(shù)定義函數(shù)定義38函數(shù)返回值類型函數(shù)返回值類型 函數(shù)名(類型函數(shù)名(類型1 參數(shù)名參數(shù)名1,類型,類型
31、2 參數(shù)名參數(shù)名2,)參數(shù)(形式參數(shù))表參數(shù)(形式參數(shù))表 變量定義部分變量定義部分 語句部分語句部分 return (表達式表達式 );函數(shù)頭部函數(shù)頭部函數(shù)體函數(shù)體函數(shù)定義函數(shù)定義int add(int x,int y) int z; /*局部變量局部變量*/ z = x + y; return (z);函數(shù)調(diào)用函數(shù)調(diào)用(使用使用)m = add(78, 89);返回函數(shù)值返回函數(shù)值p函數(shù)頭部函數(shù)頭部: 說明函數(shù)的類型特征。說明函數(shù)的類型特征。 形式:形式:函數(shù)返回值類型函數(shù)返回值類型 函數(shù)名函數(shù)名(形式參數(shù)表形式參數(shù)表) p函數(shù)體:函數(shù)體:是復合結構是復合結構,其中定義的變量是本函數(shù)的,其
32、中定義的變量是本函數(shù)的局部變量局部變量 只在該函數(shù)內(nèi)有效。只在該函數(shù)內(nèi)有效。 形式形式參數(shù)也看作局部變量參數(shù)也看作局部變量. 形式:形式:函數(shù)頭部函數(shù)頭部 函數(shù)體函數(shù)體形式參數(shù)表:形式參數(shù)表: 聲明形式參數(shù)(形參)的名字和類型(聲明形式參數(shù)(形參)的名字和類型(一一對應一一對應) 接收函數(shù)調(diào)用時實在參數(shù)的值,在函數(shù)體內(nèi)完成計算等接收函數(shù)調(diào)用時實在參數(shù)的值,在函數(shù)體內(nèi)完成計算等40函數(shù)體中的特殊語句:函數(shù)體中的特殊語句:return語句語句/返回語句返回語句p有返回值的函數(shù)必須有有返回值的函數(shù)必須有return語句語句return 表達式表達式; return;p遇遇return函數(shù)執(zhí)行結束函數(shù)
33、執(zhí)行結束p先算先算表達式表達式 ,以其值作為函數(shù)返回值,以其值作為函數(shù)返回值p表達式類型函數(shù)返回值類型應與一致。不一致轉換表達式類型函數(shù)返回值類型應與一致。不一致轉換函數(shù)的調(diào)用函數(shù)的調(diào)用41函數(shù)名函數(shù)名(實際參數(shù)表實際參數(shù)表)函數(shù)名函數(shù)名(實參實參1,實參,實參2, ,實參實參n)m=add(x,y);實參可以是實參可以是常量,變量或表達式常量,變量或表達式;實在參數(shù)的類型、個數(shù)與形參一一對應實在參數(shù)的類型、個數(shù)與形參一一對應有返回值的函數(shù)調(diào)用有返回值的函數(shù)調(diào)用看作表達式;看作表達式;無返回值的函數(shù)調(diào)用無返回值的函數(shù)調(diào)用相當于語句;相當于語句;函數(shù)的執(zhí)行函數(shù)的執(zhí)行n 函數(shù)的形參接收到實參傳遞的
34、數(shù)據(jù),帶入函數(shù)的形參接收到實參傳遞的數(shù)據(jù),帶入函數(shù)體復合語句開始執(zhí)行,遇到函數(shù)體復合語句開始執(zhí)行,遇到return語語句返回到調(diào)用語句后。句返回到調(diào)用語句后。42函數(shù)特征函數(shù)特征(函數(shù)原型函數(shù)原型)描述形式描述形式43 double sin(double) /標準函數(shù)標準函數(shù)sin double c_area (double) void pc_area (double) 函數(shù)返回值類型函數(shù)返回值類型 函數(shù)名函數(shù)名(參數(shù)類型參數(shù)類型,參數(shù)類型參數(shù)類型)與函數(shù)定義比較一下與函數(shù)定義比較一下,區(qū)別是什么區(qū)別是什么?注意:注意:nC語言中語言中函數(shù)內(nèi)部不允許再定義函數(shù)函數(shù)內(nèi)部不允許再定義函數(shù),即不,即
35、不能嵌套定義能嵌套定義;函數(shù)內(nèi)部可以調(diào)用函數(shù),甚;函數(shù)內(nèi)部可以調(diào)用函數(shù),甚至是調(diào)用自己(遞歸函數(shù))第四章講至是調(diào)用自己(遞歸函數(shù))第四章講.4445#includeint add(int,int);void main( ) int x, y, m; scanf(%d,%d, &x, &y); m = add(x, y); printf(%d+%d=%dn,x,y,m); int add(int x, int y) int z;z = x + y;return(z);完整的程序完整的程序4,64+6=1046例例:定義已知三角形三邊長度求面積的函數(shù)。:定義已知三角形三邊長度求面積的函數(shù)。t_ar
36、ea,3個個double參數(shù)返回參數(shù)返回double。類型特征:。類型特征:double t_area (double, double, double)函數(shù)定義:函數(shù)定義:double t_area(double a, double b, double c) double s = (a + b + c)/2.0; return(sqrt(s*(s-a)*(s-b)*(s-c); /*還可以怎么寫還可以怎么寫?*/函數(shù)調(diào)用函數(shù)調(diào)用area=t_area (x, y, z) 注意形參和實參的對應!注意形參和實參的對應!定義無返回值的函數(shù)定義無返回值的函數(shù)n若函數(shù)不需要返回值,可定義無返回值的函數(shù)若
37、函數(shù)不需要返回值,可定義無返回值的函數(shù)n形式:返回值類型處寫形式:返回值類型處寫 voidn無無return語句,或語句,或 return;n無返回值的函數(shù)不能用在表達式中無返回值的函數(shù)不能用在表達式中例:根據(jù)半徑計算并輸出圓盤面積的函數(shù):例:根據(jù)半徑計算并輸出圓盤面積的函數(shù):void pc_area (double r) printf (Radius:%f, area:%fn, r, 3.1416 * r * r);調(diào)用函數(shù):調(diào)用函數(shù):pc_area (3.4);/*相當于語句相當于語句*/48#include void pc_area (double r) printf (Radius:%
38、f, area:%fn, r, 3.1416 * r * r); int main () pc_area(3.24); pc_area(2.13); pc_area(0.865); pc_area(3.746); pc_area(12.3364); pc_area(8.421); return 0; return 0,將將0返回給調(diào)用返回給調(diào)用主函數(shù)的系統(tǒng),表示主主函數(shù)的系統(tǒng),表示主函數(shù)正常結束。函數(shù)正常結束。49n主函數(shù)主函數(shù)main: 完整完整C程序必須有一個名為程序必須有一個名為main的函數(shù)(主函數(shù))的函數(shù)(主函數(shù))int main () nmain在程序啟動時被自動調(diào)用(由運行系統(tǒng)調(diào)
39、用)在程序啟動時被自動調(diào)用(由運行系統(tǒng)調(diào)用)n程序從程序從main的函數(shù)體開始執(zhí)行,直到該復合結構結束的函數(shù)體開始執(zhí)行,直到該復合結構結束n其他函數(shù)不經(jīng)調(diào)用就不會執(zhí)行其他函數(shù)不經(jīng)調(diào)用就不會執(zhí)行n整個程序里不允許調(diào)用整個程序里不允許調(diào)用main。3 函數(shù)和程序函數(shù)和程序50定義時的類型問題定義時的類型問題n函數(shù)返回值類型與返回語句中表達式類型可能不一致函數(shù)返回值類型與返回語句中表達式類型可能不一致n返回語句中返回語句中表達式表達式的值轉換成函數(shù)返回值類型返回的值轉換成函數(shù)返回值類型返回 例:例:int fun(int m) return 3.2 * m + 5; /會丟失信息會丟失信息 調(diào)用時的
40、類型問題調(diào)用時的類型問題n實參個數(shù)應符合函數(shù)定義的要求,各實參應能轉換到對應形參實參個數(shù)應符合函數(shù)定義的要求,各實參應能轉換到對應形參的類型的類型n當實參類型與形參類型不同時,將當實參類型與形參類型不同時,將實參類型實參類型的值轉換成的值轉換成形參類形參類型型的值后再傳給形參的值后再傳給形參4 函數(shù)與類型函數(shù)與類型51例:例:int fun (int m) return 3.2 * m + 5; 語句:語句:x = fun(2.5 + 6);設設x是雙精度變量,語句是雙精度變量,語句執(zhí)行時有幾次轉換?執(zhí)行時有幾次轉換?類型轉換的各種情況:類型轉換的各種情況:n計算中可能出現(xiàn)類型轉換計算中可能出
41、現(xiàn)類型轉換n賦值時可能出現(xiàn)類型轉換賦值時可能出現(xiàn)類型轉換n參數(shù)傳遞時可能出現(xiàn)類型轉換參數(shù)傳遞時可能出現(xiàn)類型轉換n產(chǎn)生函數(shù)返回值時可能出現(xiàn)類型轉換產(chǎn)生函數(shù)返回值時可能出現(xiàn)類型轉換5次次525 函數(shù)調(diào)用與程序執(zhí)行函數(shù)調(diào)用與程序執(zhí)行53#include /*函數(shù)原型函數(shù)原型*/ /* 函數(shù)定義寫在這里函數(shù)定義寫在這里 */int main () /* 主程序體,包含函數(shù)調(diào)用主程序體,包含函數(shù)調(diào)用 */ /* 函數(shù)定義也可寫在這里函數(shù)定義也可寫在這里,但在但在main之前給出函數(shù)原之前給出函數(shù)原型型 */包含一個包含一個/多個函數(shù)定義的程序模式:多個函數(shù)定義的程序模式:54/*完成加法計算完成加法計算
42、*/#includeint add(int,int);void main( ) int x,y,m; scanf(%d,%d,&x,&y); m=add(x,y); printf(%d+%d=%dn,x,y,m); int add(int x,int y) int z;z=x+y;return(z);/*完成加法計算完成加法計算*/#includeint add(int x,int y) int z;z=x+y;return(z);void main( ) int x,y,m; scanf(%d,%d,&x,&y); m=add(x,y); printf(%d+%d=%dn,x,y,m); 55n函數(shù)中定義的形參,為局部變量,在未出現(xiàn)函數(shù)調(diào)用函數(shù)中定義的形參,為局部變量,在未出現(xiàn)函數(shù)調(diào)用時,并不占用內(nèi)存單元,只有調(diào)用該函數(shù)時才分配內(nèi)時,并不占用內(nèi)存單元,只有調(diào)用該函數(shù)時才分配內(nèi)存單元,調(diào)用結束
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- HO-PEG3-CH2-6-Cl-生命科學試劑-MCE-6427
- CP-LC-0743-生命科學試劑-MCE-6886
- 5-Hydroxy-9-S-hexahydrocannabinol-生命科學試劑-MCE-2639
- 二零二五年度互聯(lián)網(wǎng)醫(yī)療企業(yè)股權并購協(xié)議
- 二零二五年度白酒新品全國市場推廣與銷售代理協(xié)議
- 2025年度二零二五年度終止股權轉讓終止協(xié)議
- 二零二五年度終止體育賽事組織勞務終止合同
- 二零二五年度蔬菜大棚租賃與農(nóng)業(yè)循環(huán)經(jīng)濟合作協(xié)議
- 施工現(xiàn)場施工防生物戰(zhàn)爭威脅制度
- 施工圍蔽項目特征描述
- 沈陽市第一屆“舒心傳技 莘紳向陽”職業(yè)技能大賽技術工作文件-27-全媒體運營師
- 安全生產(chǎn)網(wǎng)格員培訓
- 統(tǒng)編版語文三年級下冊第三單元綜合性學習中華傳統(tǒng)節(jié)日 活動設計
- 降低順產(chǎn)產(chǎn)婦產(chǎn)后2小時失血率PDCA成果匯報書
- 小學數(shù)學分數(shù)四則混合運算300題帶答案
- 2024年考研(英語一)真題及參考答案
- 林下野雞養(yǎng)殖建設項目可行性研究報告
- 心肺復蘇術課件2024新版
- 苜蓿青貯料質量分級DB41-T 1906-2019
- 新鮮牛肉購銷合同模板
- 2024年內(nèi)蒙古呼和浩特市中考文科綜合試題卷(含答案)
評論
0/150
提交評論