c語言程序設計4第四講(第三章上)_第1頁
c語言程序設計4第四講(第三章上)_第2頁
c語言程序設計4第四講(第三章上)_第3頁
c語言程序設計4第四講(第三章上)_第4頁
c語言程序設計4第四講(第三章上)_第5頁
已閱讀5頁,還剩54頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、天道酬勤!11.constant 常量2. variable 變量3. identify 標識符4. keywords 關鍵字 5. sign 符號 6. operator 運算符 7. statement 語句8. syntax 語法 9. expression 表達式 10. initialization 初始化 11. number format 數(shù)據(jù)格式 12 declaration 說明 13. type conversion 類型轉換 14.define 、 definition 定義 常見術語的中英文對照2高級語言程序設計主講教師:賈彩燕計算機與信息技術學院計算機科學與技術系3上

2、機問題匯總printf(“%f”,1065/(24*13);C語言不做類型檢查格式字符與輸出項類型不一致,自動按指定格式輸出第7題:計算5x2+2x+6的兩個根。輸出它的兩個虛根注意C語言中確實會發(fā)生自動類型轉換,但在寫程序時,盡量使得一個表達式中的數(shù)據(jù)的類型保持一致。節(jié)省不必要的空間損失。防止不同類型轉換時的信息丟失。4回顧字符輸入、輸出函數(shù)?格式輸入、輸出函數(shù)是?其一般形式為?這些輸入輸出函數(shù)的庫函數(shù)的頭文件是?算術運算符及表達式 - * / %整數(shù)除整數(shù)仍為整數(shù)%的操作對象只能為整數(shù)混合類型算術表達式的轉換規(guī)則是?數(shù)學函數(shù)庫的頭文件名?如何調(diào)用?5前面:只能描述由基本數(shù)據(jù)出發(fā)的簡單計算實

3、現(xiàn)簡單的順序結構程序場景1:程序中有許多相同的計算場景2:解決的問題大而且比較復雜場景3:解決復雜問題所需的其它基本控制結構如何實現(xiàn) 選擇結構循環(huán)結構6第三章變量、函數(shù)和控制結構7語句、復合語句變量概念、定義、使用定義函數(shù)(初步,第五章深入)關系表達式、邏輯表達式、條件表達式語句與控制語句常用結構和問題主要內(nèi)容:程序設計的基本知識83.1 語句和復合結構語句是程序的基本單位,語句的結束標志是;。printf(); a = b + c;語法:語句的形式必須符合語言要求。語義:形式合法的語句表達了某種含義(程序執(zhí)行時的效果),稱為語句的語義。C語言描述執(zhí)行流程的一種最基本的結構是復合結構。9復合結

4、構(復合語句)語法:一對花括號.,后無分號,其中可有0個或多個語句。語義:順序執(zhí)行其中的各個語句。空復合結構中沒有語句,執(zhí)行時立即結束。 int main () printf(Good morning!n); printf(“PI=%fn”,3.1415); return 0;復合語句可以嵌套 這些語句順序執(zhí)行:順序結構10 C語言的語句空語句 : ;復合語句: 之間的部分表達式語句: a=b+c; 聲明語句: int a,b,c; 控制語句: if for while do-while switch11語句、復合語句變量概念、定義、使用定義函數(shù)(初步,第五章深入)關系表達式、邏輯表達式、條件

5、表達式語句與控制語句常用結構和問題主要內(nèi)容:程序設計的基本知識123.2 變量的概念、定義和使用變量程序運行過程中可以發(fā)生變化的量存儲數(shù)據(jù)的命名對象(變量名)變量名是標識符。使我們可能通過一個名字來使用存儲單元變量的特點變量能保存值,不會丟失。變量名是標識符。變量的值可以變化變量賦一個值之后,每次使用它總得到這個值,直到下次賦值。對變量基本操作賦值(寫)取值(讀)注意:要遵循命名規(guī)范1.變量的基本概念13變量定義形式:類型名 變量名1, , 變量名n;int k, n, sum, count;long double y, z;int m; double x;2. 變量的定義 聲明語句說明:變量

6、必須先定義后使用!變量有固定的類型,只能保存這個類型的值。整型變量(保存 int值的變量)雙精度變量(保存 double 值)字符變量等,但字符變量是按整數(shù)形式存儲的。14注意:變量的命名關鍵字不能用做變量名提倡采用有意義名字:area,number15變量命名的一般原則應當直觀且可以拼讀,可望文知意,不必進行“解碼” 例如不要把CurrentValue寫成NowValue 長度應當符合“min-length & max-information”原則如變量名maxVal比maxValueUntilOverflow好用。單字符的名字也是有用的,如i,j,k,m,n,x,y,z等,函數(shù)內(nèi)的局部變量

7、。盡量與所采用的操作系統(tǒng)或開發(fā)工具的風格保持一致 如Windows應用程序的標識符通常采用“大小寫”混排的方式,如AddChild。而Unix應用程序的標識符通常采用“小寫加下劃線”的方式,如add_child。程序中不要出現(xiàn)僅靠大小寫區(qū)分的相似的標識符 int x, X; / 變量x 與 X 容易混淆 變量的名字應當使用“名詞”或者“形容詞名詞” 例如:float value;float oldValue;float newValue;盡量避免名字中出現(xiàn)數(shù)字編號,如Value1,Value2等16變量命名普通規(guī)范變量名一般需要反映變量的用途如: int sum;如果變量名由多個單詞構成,每個

8、單詞的首字符要大寫如:int CurrentValue17注意:復合結構中可以定義變量(局部變量)。只能在該符合語句內(nèi)部使用變量定義應出現(xiàn)在所有語句之前變量定義序列語句序列一個復合結構里不能定義多個同名的變量。復合結構的執(zhí)行: 先定義變量,而后順序執(zhí)行各語句順序結構。18/復合語句內(nèi)部定義變量#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(c=%dn d=%d, c, d); return 0;/重復定義變量的錯誤情況#includ

9、eint main() int a, b, c, c; a = 1; b = 5; c = 8; c = a + b; int d, d; d = a + c; printf(d=%dn, d); printf(c=%dn d=%d, c, d); return 0;復合結構示例193.變量的取值與賦值取值:計算中遇到變量,取其值參與計算x + sin(3.2 * y) - pow(x, 2); printf(“%dn”, n * 2);賦值:用賦值運算符(=,賦值號)表示x = 5.0; x = y; x = y + sin(a);左邊是賦值目標,右邊是提供值的表達式賦值運算的主要效果是把表

10、達式的值賦給左邊變量賦值語句:賦值表達式后加分號(語法)20說明:賦值運算符優(yōu)先級很低例:x = 2 + 3 * y賦值運算符的值與結合性賦值表達式本身也有值,就是賦給左邊變量的那個值賦值表達式的值可以作為更大表達式的一部分,但不提倡 y = (x = 5) + 8; y = (z = (x = 1.0); 賦值運算符從右向左結合y = z = x = 1.0;賦值與類型被賦值變量有類型(由變量定義確定);賦值號右邊表達式的值有類型。不一致將發(fā)生類型轉換21規(guī)定:若表達式值與被賦值變量類型不同,該值先轉換到變量類型的值,然后賦值。#includeint main() int n;double

11、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) * (3+5+7)/2.0 - 3) * (3+5+7)/2.0 - 5) * (3+5+7)/2.0 - 7); return 0;23/程序功能:已知三

12、角形三邊長求面積#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求三角形面積的程序。24/程序功能:輸入三角形三邊長,求面積#include#includeint main( ) double a, b, c, s, area; printf(Please input a,b and c: n); scanf(%lf,%lf,%lf,

13、&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.2fn,area);return 0;例:從鍵盤輸入三角形三邊邊長,求三角形的面積并輸出程序更具有通用性程序完備嗎?25double s = (3 + 5 + 7)/2.0;long double x = 4.5L, y = 3.24L;4.幾個問題變量初始化在定義變量時,用類似賦值的寫法給被定義變量

14、指定初值,稱為變量的初始化??捎脭?shù)值或者數(shù)值表達式為類型合適的變量做初始化只能一個變量一個變量的做初始化,即使這些變量需要完全相同的初值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;比

15、較兩個程序?27變量的名字:訪問變量變量的類型:可參與的運算形式變量的值:參與計算變量的地址:計算機內(nèi)的具體實現(xiàn)變量的屬性(四個屬性)例 double x1 = 35.70;28變量進階(第七章深入)指針變量用于保存某種類型的存儲空間的起始地址的變量。語法: 基類型 * 變量名;例int *pInt;double *pDouble;char *pChar;29#includeint main() int x = 5, y; y = (x = 8) + x; printf(x=%d,y=%dn, x, y); return 0;執(zhí)行后y 的值是什么?賦值與 “等于”:在C中“ = ”不是“等于”

16、x = x+1; C中合法,數(shù)學里為矛盾;注意:C語言未規(guī)定加法對兩個運算對象的求值順序,盡量不寫這樣的表達式30注釋:為幫助人閱讀/理解程序而寫在程序里,起注解作用的說明性文字。注釋對程序意義(執(zhí)行)沒有影響。形式:/* 任何字符的序列 */ 或 /* */程序中加入必要注釋是一種好的編程習慣。對于復雜的大程序,注釋的意義更大。程序中的注釋31簡單計算程序 基本結構(順序結構)#include /* 如用數(shù)學函數(shù),要寫#include */int main () /* 若干變量定義(及可能的初始化) */ /* 若干計算和賦值語句 */ /* 若干輸出語句 */ return 0;這是 C

17、程序的基本形式,后面逐步擴充可能會用到函數(shù),復合結構等32語句、復合語句變量概念、定義、使用定義函數(shù)(初步,第五章深入)關系表達式、邏輯表達式、條件表達式語句與控制語句常用結構和問題主要內(nèi)容:程序設計的基本知識333.3 定義函數(shù)(初步)問題的提出-為什么定義函數(shù)?例:標準函數(shù) sin:1.0/2.0*a*b*sin(alpha); sin函數(shù)原型:double sin(double);函數(shù)是特定計算過程的抽象,有通用性,可按規(guī)定方式(參數(shù)個數(shù)/類型)對具體數(shù)據(jù)使用。標準函數(shù)有限,需求無限C中函數(shù)分: 標準函數(shù)和用戶自定義函數(shù)34例:求一些圓盤的面積,圓盤半徑分別為:3.24、2.13、0.8

18、65、3.746、12.3364、8.421設圓周率用 3.1416。#includeint main() printf(radius:%f, area:%fn, 3.24, 3.24 * 3.24 * 3.1416); printf(radius:%f, area:%fn, 2.13, 2.13 * 2.12 * 3.1415); /* 實際程序里不能有省略號 */繁瑣?有解決問題的辦法?35辦法:有以半徑為參數(shù)計算圓盤面積的函數(shù):double c_area(double) 函數(shù)的類型特征程序中就可簡化: printf(radius: %f, area:%fn, 3.24, c_area(3

19、.24);辦法:如有打印圓盤面積的函數(shù): void pc_area(double)程序中就可簡化: pc_area(3.24); pc_area(2.13); . .函數(shù)能使程序變短,變得易寫/易理解/易修改36函數(shù)如何定義:把一段計算定義成函數(shù)并給以命名。定義函數(shù) c_area 的程序片段:double c_area (double r) return r * r * 3.1416;定義后就可以通過名字調(diào)用,用在任何需要的地方。外半徑5.3,內(nèi)半徑3.07,高4.2的空心圓柱: (c_area(5.3) - c_area(3.07)*4.2如何使用函數(shù):有返回值的函數(shù)可作為表達式使用。半徑3

20、.24高2.4的圓錐體積:2.4 * c_area(3.24) / 3.037/* 定義函數(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 (Radiu

21、s:%f, area:%fn, 3.746, c_area(3.746); printf (Radius:%f, area:%fn, 12.3364, c_area(12.3364); printf (Radius:%f, area:%fn, 8.421, c_area(8.421); return 0; 任意給出半徑求出圓的面積,如何改寫程序?38/* 定義函數(shù),重寫程序 */#include double c_area (double r) return r * r * 3.1416; void pc_area (double r) printf(Radius:%f, area:%fn,

22、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ù)的調(diào)用相當于語句39函數(shù)返回值類型 函數(shù)名(類型1 參數(shù)名1,類型2 參數(shù)名2,)參數(shù)(形式參數(shù))表 變量定義部分 語句部分 return (表達式 )函數(shù)頭部函數(shù)體函數(shù)定義int add(int x,int y) int z; z = x + y; return (z);函數(shù)調(diào)用(使用)m =

23、add(78, 89);完整的程序?返回函數(shù)值2. 函數(shù)的定義40#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=1041 形式參數(shù)表 聲明各參數(shù)的名字和各參數(shù)的類型(一一對應)。 形式參數(shù)(形參) 命名是為了在函數(shù)里使用實際參數(shù)(實參)的值。函數(shù)體:復合結構,其中定義的變量是本函數(shù)的局部變量。 參數(shù)

24、也看作局部變量. 只在該函數(shù)內(nèi)有效42函數(shù)體里的特殊語句:return/返回語句:return 表達式;return;使函數(shù)結束:先算表達式 ,以其值作為函數(shù)返回值。函數(shù)調(diào)用函數(shù)名(實際參數(shù)表) 多個參數(shù)用逗號分隔。函數(shù)的執(zhí)行 函數(shù)體的復合語句在參數(shù)具有特定實參值的情況下開始執(zhí)行。實在參數(shù),類型個數(shù)與形參一一對應43例:定義已知三角形三邊長度求面積的函數(shù)。t_area,3個double參數(shù)返回double。類型特征:double t_area (double, double, double)函數(shù)定義:double t_area(double a, double b, double c) dou

25、ble s = (a + b + c)/2.0; return(sqrt(s*(s-a)*(s-b)*(s-c); /*還可以怎么寫?*/函數(shù)調(diào)用area=t_area (x, y, z) 注意形參和實參的對應!44定義無返回值的函數(shù)形式:返回值類型處寫 void 。若函數(shù)不需要返回值,可定義無返回值的函數(shù)。無返回值的函數(shù)不能用在表達式中.例:根據(jù)半徑計算并輸出圓盤面積的函數(shù):void pc_area (double r) printf (Radius:%f, area:%fn, r, 3.1416 * r * r);45#include void pc_area (double r) pri

26、ntf (Radius:%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?463.函數(shù)和程序主函數(shù)main: 完整C程序必須有一個名為main的函數(shù)(主函數(shù))int main () main在程序啟動時被自動調(diào)用(由運行系統(tǒng)調(diào)用)程序從main的函數(shù)體開始執(zhí)行,直到該復合結構結束其他函數(shù)不經(jīng)調(diào)用就不會執(zhí)行整個程序里不允許

27、調(diào)用main。474.函數(shù)與類型定義時的類型問題函數(shù)返回值類型與返回語句中表達式類型可能不一致返回語句中表達式的值轉換成函數(shù)返回值類型返回例:int fun(int m) return 3.2 * m + 5; 調(diào)用時的類型問題實參個數(shù)應符合函數(shù)定義的要求,各實參應能轉換到對應形參的類型當實參類型與形參類型不同時,將實參類型的值轉換成形參類型的值后再傳給形參48例int fun (int m) return 3.2 * m + 5;語句:x = fun(2.5 + 6);設x是雙精度變量,語句執(zhí)行時有幾次轉換?類型轉換的各種情況:計算中可能出現(xiàn)類型轉換賦值時可能出現(xiàn)類型轉換參數(shù)傳遞時可能出現(xiàn)類

28、型轉換產(chǎn)生函數(shù)返回值時可能出現(xiàn)類型轉換495.函數(shù)調(diào)用50#include /*函數(shù)原型*/ /* 函數(shù)定義寫在這里 */int main () /* 主程序體,包含函數(shù)調(diào)用 */ /* 函數(shù)定義也可寫在這里,但在main之前給出函數(shù)原型 */包含一個/多個函數(shù)定義的程序模式:51說明函數(shù)中定義的形參,為局部變量,在未出現(xiàn)函數(shù)調(diào)用時,并不占用內(nèi)存單元,只有調(diào)用該函數(shù)時才分配內(nèi)存單元,調(diào)用結束后釋放所占用的內(nèi)存單元。C中實參和形參類型應相同或賦值相容。C中實參向形參傳遞數(shù)據(jù)是“值傳遞”,單向傳遞。C中實參可以是變量或表達式。函數(shù)返回值類型未加說明的,自動按整型處理。函數(shù)返回值類型應與函數(shù)中return中表達式類型一致,不一致時以函數(shù)類型為準。52值傳遞方式方式:函數(shù)調(diào)用時,為形參分配單元,并將實參的值復制到形參中;調(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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論