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

下載本文檔

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

文檔簡介

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

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

3、頭文件名?如何調(diào)用?,6,前面:只能描述由基本數(shù)據(jù)出發(fā)的簡單計算 實現(xiàn)簡單的順序結(jié)構(gòu)程序,場景1:程序中有許多相同的計算 場景2:解決的問題大而且比較復雜 場景3:解決復雜問題所需的其它基本控制結(jié)構(gòu)如何實現(xiàn) 選擇結(jié)構(gòu)循環(huán)結(jié)構(gòu),7,第三章變量、函數(shù)和控制結(jié)構(gòu),8,語句、復合語句 變量概念、定義、使用 定義函數(shù)(初步,第五章深入) 關(guān)系表達式、邏輯表達式、條件表達式 語句與控制語句 常用結(jié)構(gòu)和問題,主要內(nèi)容:程序設計的基本知識,9,3.1 語句和復合結(jié)構(gòu),語句是程序的基本單位,語句的結(jié)束標志是;。 printf(); a = b + c; 語法:語句的形式必須符合語言要求。 語義:形式合法的語句表

4、達了某種含義(程序執(zhí)行時的效果),稱為語句的語義。,C語言描述執(zhí)行流程的一種最基本的結(jié)構(gòu)是復合結(jié)構(gòu)。,10,復合結(jié)構(gòu)(復合語句),語法:一對花括號.,后無分號,其中可有0個或多個語句。 語義:順序執(zhí)行其中的各個語句。,空復合結(jié)構(gòu)中沒有語句,執(zhí)行時立即結(jié)束。 ,int main () printf(Good morning!n); printf(“PI=%fn”,3.1415); return 0; ,復合語句可以嵌套, ,這些語句順序執(zhí)行:順序結(jié)構(gòu),11,C語言的語句,空語句 : ; 復合語句: 之間的部分 表達式語句: a=b+c; 聲明語句: int a,b,c; 控制語句: if for

5、 while do-while switch,12,語句、復合語句 變量概念、定義、使用 定義函數(shù)(初步,第五章深入) 關(guān)系表達式、邏輯表達式、條件表達式 語句與控制語句 常用結(jié)構(gòu)和問題,主要內(nèi)容:程序設計的基本知識,13,3.2 變量的概念、定義和使用,變量 程序運行過程中可以發(fā)生變化的量 存儲數(shù)據(jù)的命名對象(變量名) 變量名是標識符。 使我們可能通過一個名字來使用存儲單元 變量的特點 變量能保存值,不會丟失。變量名是標識符。 變量的值可以變化 變量賦一個值之后,每次使用它總得到這個值,直到下次賦值。 對變量基本操作 賦值(寫) 取值(讀),注意:要遵循命名規(guī)范,1.變量的基本概念,14,變

6、量定義形式:類型名 變量名1, , 變量名n;,int k, n, sum, count;long double y, z;,int m; double x;,2. 變量的定義,聲明語句,說明: 變量必須先定義后使用! 變量有固定的類型,只能保存這個類型的值。 整型變量(保存 int值的變量) 雙精度變量(保存 double 值) 字符變量等,但字符變量是按整數(shù)形式存儲的。,15,注意: 變量的命名 關(guān)鍵字不能用做變量名 提倡采用有意義名字:area,number,16,變量命名的一般原則,應當直觀且可以拼讀,可望文知意,不必進行“解碼” 例如不要把CurrentValue寫成NowValue

7、 長度應當符合“min-length 盡量避免名字中出現(xiàn)數(shù)字編號,如Value1,Value2等,17,變量命名普通規(guī)范,變量名一般需要反映變量的用途 如: int sum; 如果變量名由多個單詞構(gòu)成,每個單詞的首字符要大寫 如:int CurrentValue,18,注意: 復合結(jié)構(gòu)中可以定義變量(局部變量)。 只能在該符合語句內(nèi)部使用 變量定義應出現(xiàn)在所有語句之前 變量定義序列 語句序列 一個復合結(jié)構(gòu)里不能定義多個同名的變量。 復合結(jié)構(gòu)的執(zhí)行: 先定義變量,而后順序執(zhí)行各語句順序結(jié)構(gòu)。,19,/復合語句內(nèi)部定義變量 #include int main() int a, b, c; a =

8、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; ,/重復定義變量的錯誤情況 #include int 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; ,復合結(jié)構(gòu)示例,20,3.變量的取值與賦值,取值:計算中遇到變量,取其值參與計算 x +

9、 sin(3.2 * y) - pow(x, 2); printf(“%dn”, n * 2);,賦值:用賦值運算符(=,賦值號)表示 x = 5.0; x = y; x = y + sin(a); 左邊是賦值目標,右邊是提供值的表達式 賦值運算的主要效果是把表達式的值賦給左邊變量,賦值語句:賦值表達式后加分號(語法),21,說明:,賦值運算符優(yōu)先級很低 例:x = 2 + 3 * y,賦值運算符的值與結(jié)合性 賦值表達式本身也有值,就是賦給左邊變量的那個值 賦值表達式的值可以作為更大表達式的一部分,但不提倡 y = (x = 5) + 8; y = (z = (x = 1.0); 賦值運算符從

10、右向左結(jié)合 y = z = x = 1.0;,賦值與類型 被賦值變量有類型(由變量定義確定); 賦值號右邊表達式的值有類型。,22,規(guī)定: 若表達式值與被賦值變量類型不同,該值先轉(zhuǎn)換到變量類型的值,然后賦值。,#include int main() int n;double s; n=6;s=n; printf(s=%fn,s); return 0; ,#include int main() int n;double s; s=6.2;n=s; printf(n=%dn,n); return 0; ,比較運行結(jié)果?,23,例(第二章):三角形三邊長為3、5、7厘米,求其面積。,/程序功能:已知

11、三角形三邊長求面積 #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; ,24,/程序功能:已知三角形三邊長求面積 #include #include int main () double s; s = (3. + 5. + 7.) / 2.; printf(Area: %fn, sqrt(s*(s-3.)*(s-5.)*(s-7.); return 0; ,*變量的最主要用途:保存計算的中間結(jié)

12、果,表達式,例:重寫由三邊3、5、7求三角形面積的程序。,25,/程序功能:輸入三角形三邊長,求面積 #include #include int main( ) double a, b, c, s, area; printf(Please input a,b and c: n); scanf(%lf,%lf,%lf, ,例:從鍵盤輸入三角形三邊邊長,求三角形的面積并輸出,程序更具有通用性,程序完備嗎?,26,double s = (3 + 5 + 7)/2.0; long double x = 4.5L, y = 3.24L;,4.幾個問題,變量初始化 在定義變量時,用類似賦值的寫法給被定義變

13、量指定初值,稱為變量的初始化。 可用數(shù)值或者數(shù)值表達式為類型合適的變量做初始化 只能一個變量一個變量的做初始化,即使這些變量需要完全相同的初值,27,變量初始化,#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.); re

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

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

16、 */ /* 若干計算和賦值語句 */ /* 若干輸出語句 */ return 0; ,這是 C 程序的基本形式,后面逐步擴充,可能會用到函數(shù), 復合結(jié)構(gòu)等,33,語句、復合語句 變量概念、定義、使用 定義函數(shù)(初步,第五章深入) 關(guān)系表達式、邏輯表達式、條件表達式 語句與控制語句 常用結(jié)構(gòu)和問題,主要內(nèi)容:程序設計的基本知識,34,3.3 定義函數(shù)(初步),問題的提出-為什么定義函數(shù)?,例:標準函數(shù) sin: 1.0/2.0*a*b*sin(alpha); sin函數(shù)原型:double sin(double);,函數(shù)是特定計算過程的抽象,有通用性,可按規(guī)定方式(參數(shù)個數(shù)/類型)對具體數(shù)據(jù)使用

17、。 標準函數(shù)有限,需求無限 C中函數(shù)分: 標準函數(shù)和用戶自定義函數(shù),35,例:求一些圓盤的面積,圓盤半徑分別為: 3.24、2.13、0.865、3.746、12.3364、8.421 設圓周率用 3.1416。,#include int 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); /* 實際程序里不能有省略號 */ ,繁瑣?有解決問題的辦法?,36,辦法:有以半徑為參數(shù)計算圓盤面積的函數(shù): dou

18、ble c_area(double) 函數(shù)的類型特征 程序中就可簡化: printf(radius: %f, area:%fn, 3.24, c_area(3.24);,辦法:如有打印圓盤面積的函數(shù): void pc_area(double) 程序中就可簡化: pc_area(3.24); pc_area(2.13); . .,函數(shù)能使程序變短,變得易寫/易理解/易修改,37,函數(shù)如何定義:把一段計算定義成函數(shù)并給以命名。,定義函數(shù) c_area 的程序片段: double c_area (double r) return r * r * 3.1416; 定義后就可以通過名字調(diào)用,用在任何需要

19、的地方。,外半徑5.3,內(nèi)半徑3.07,高4.2的空心圓柱: (c_area(5.3) - c_area(3.07)*4.2,如何使用函數(shù):有返回值的函數(shù)可作為表達式使用。,半徑3.24高2.4的圓錐體積: 2.4 * c_area(3.24) / 3.0,38,/* 定義函數(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,

20、 area:%fn, 2.13, c_area(2.13); printf (Radius:%f, area:%fn, 0.865, c_area(0.865); printf (Radius:%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; ,任意給出半徑求出圓的面積,如何改寫程序?,39,/* 定義函數(shù),重寫程序 */ #include d

21、ouble c_area (double r) return r * r * 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ù)的調(diào)用相當于語句,40,函數(shù)返回值類型 函數(shù)名(類型1 參數(shù)名1,類型2 參數(shù)名2,),參數(shù)

22、(形式參數(shù))表, 變量定義部分 語句部分 return (表達式 ) ,函數(shù)頭部,函數(shù)體,函數(shù)定義 int add(int x,int y) int z; z = x + y; return (z); ,函數(shù)調(diào)用(使用) m = add(78, 89);,完整的程序?,返回函數(shù)值,2. 函數(shù)的定義,41,#include int add(int,int); void main( ) int x, y, m; scanf(%d,%d, ,完整的程序,4,6 4+6=10,42,形式參數(shù)表 聲明各參數(shù)的名字和各參數(shù)的類型(一一對應)。 形式參數(shù)(形參) 命名是為了在函數(shù)里使用實際參數(shù)(實參)的值。

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

24、uble 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)用 area=t_area (x, y, z),注意形參和實參的對應!,45,定義無返回值的函數(shù) 形式:返回值類型處寫 void 。 若函數(shù)不需要返回值,可定義無返回值的函數(shù)。 無返回值的函數(shù)不能用在表達式中.,例:根據(jù)半徑計算并輸出圓盤面積的函數(shù): void pc_area (double r) printf (Radius:%f, area:%fn, r,

25、3.1416 * r * r); ,46,#include void pc_area (double r) printf (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?,47,3.函數(shù)和程序,主函數(shù)main: 完整C程序必須有一個名為main的函數(shù)(主函數(shù)) int main () ,main在程序

26、啟動時被自動調(diào)用(由運行系統(tǒng)調(diào)用) 程序從main的函數(shù)體開始執(zhí)行,直到該復合結(jié)構(gòu)結(jié)束 其他函數(shù)不經(jīng)調(diào)用就不會執(zhí)行 整個程序里不允許調(diào)用main。,48,4.函數(shù)與類型,定義時的類型問題 函數(shù)返回值類型與返回語句中表達式類型可能不一致 返回語句中表達式的值轉(zhuǎn)換成函數(shù)返回值類型返回 例:int fun(int m) return 3.2 * m + 5; ,調(diào)用時的類型問題 實參個數(shù)應符合函數(shù)定義的要求,各實參應能轉(zhuǎn)換到對應形參的類型 當實參類型與形參類型不同時,將實參類型的值轉(zhuǎn)換成形參類型的值后再傳給形參,49,例int fun (int m) return 3.2 * m + 5; 語句:x

27、 = fun(2.5 + 6); 設x是雙精度變量,語句執(zhí)行時有幾次轉(zhuǎn)換?,類型轉(zhuǎn)換的各種情況: 計算中可能出現(xiàn)類型轉(zhuǎn)換 賦值時可能出現(xiàn)類型轉(zhuǎn)換 參數(shù)傳遞時可能出現(xiàn)類型轉(zhuǎn)換 產(chǎn)生函數(shù)返回值時可能出現(xiàn)類型轉(zhuǎn)換,50,5.函數(shù)調(diào)用,51,#include /*函數(shù)原型*/ /* 函數(shù)定義寫在這里 */ int main () /* 主程序體,包含函數(shù)調(diào)用 */ /* 函數(shù)定義也可寫在這里,但在main之前給出函數(shù)原型 */,包含一個/多個函數(shù)定義的程序模式:,52,說明,函數(shù)中定義的形參,為局部變量,在未出現(xiàn)函數(shù)調(diào)用時,并不占用內(nèi)存單元,只有調(diào)用該函數(shù)時才分配內(nèi)存單元,調(diào)用結(jié)束后釋放所占用的內(nèi)存單元。 C中實參和形參類型應相同或賦值相容。 C中實參向形參傳遞數(shù)據(jù)是“值傳遞”,單

溫馨提示

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

評論

0/150

提交評論