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

下載本文檔

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

文檔簡介

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

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

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

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

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

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

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

8、單詞的首字符要大寫如:int CurrentValue17注意:復(fù)合結(jié)構(gòu)中可以定義變量(局部變量)。只能在該符合語句內(nèi)部使用變量定義應(yīng)出現(xiàn)在所有語句之前變量定義序列語句序列一個(gè)復(fù)合結(jié)構(gòu)里不能定義多個(gè)同名的變量。復(fù)合結(jié)構(gòu)的執(zhí)行: 先定義變量,而后順序執(zhí)行各語句順序結(jié)構(gòu)。18/復(fù)合語句內(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;/重復(fù)定義變量的錯(cuò)誤情況#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;復(fù)合結(jié)構(gòu)示例193.變量的取值與賦值取值:計(jì)算中遇到變量,取其值參與計(jì)算x + sin(3.2 * y) - pow(x, 2); printf(“%dn”, n * 2);賦值:用賦值運(yùn)算符(=,賦值號(hào))表示x = 5.0; x = y; x = y + sin(a);左邊是賦值目標(biāo),右邊是提供值的表達(dá)式賦值運(yùn)算的主要效果是把表

10、達(dá)式的值賦給左邊變量賦值語句:賦值表達(dá)式后加分號(hào)(語法)20說明:賦值運(yùn)算符優(yōu)先級(jí)很低例:x = 2 + 3 * y賦值運(yùn)算符的值與結(jié)合性賦值表達(dá)式本身也有值,就是賦給左邊變量的那個(gè)值賦值表達(dá)式的值可以作為更大表達(dá)式的一部分,但不提倡 y = (x = 5) + 8; y = (z = (x = 1.0); 賦值運(yùn)算符從右向左結(jié)合y = z = x = 1.0;賦值與類型被賦值變量有類型(由變量定義確定);賦值號(hào)右邊表達(dá)式的值有類型。不一致將發(fā)生類型轉(zhuǎn)換21規(guī)定:若表達(dá)式值與被賦值變量類型不同,該值先轉(zhuǎn)換到變量類型的值,然后賦值。#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;比較運(yùn)行結(jié)果?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;*變量的最主要用途:保存計(jì)算的中間結(jié)果表達(dá)式例:重寫由三邊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.幾個(gè)問題變量初始化在定義變量時(shí),用類似賦值的寫法給被定義變量

14、指定初值,稱為變量的初始化??捎脭?shù)值或者數(shù)值表達(dá)式為類型合適的變量做初始化只能一個(gè)變量一個(gè)變量的做初始化,即使這些變量需要完全相同的初值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、較兩個(gè)程序?27變量的名字:訪問變量變量的類型:可參與的運(yùn)算形式變量的值:參與計(jì)算變量的地址:計(jì)算機(jī)內(nèi)的具體實(shí)現(xiàn)變量的屬性(四個(gè)屬性)例 double x1 = 35.70;28變量進(jìn)階(第七章深入)指針變量用于保存某種類型的存儲(chǔ)空間的起始地址的變量。語法: 基類型 * 變量名;例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ù)學(xué)里為矛盾;注意:C語言未規(guī)定加法對(duì)兩個(gè)運(yùn)算對(duì)象的求值順序,盡量不寫這樣的表達(dá)式30注釋:為幫助人閱讀/理解程序而寫在程序里,起注解作用的說明性文字。注釋對(duì)程序意義(執(zhí)行)沒有影響。形式:/* 任何字符的序列 */ 或 /* */程序中加入必要注釋是一種好的編程習(xí)慣。對(duì)于復(fù)雜的大程序,注釋的意義更大。程序中的注釋31簡單計(jì)算程序 基本結(jié)構(gòu)(順序結(jié)構(gòu))#include /* 如用數(shù)學(xué)函數(shù),要寫#include */int main () /* 若干變量定義(及可能的初始化) */ /* 若干計(jì)算和賦值語句 */ /* 若干輸出語句 */ return 0;這是 C

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

18、65、3.746、12.3364、8.421設(shè)圓周率用 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); /* 實(shí)際程序里不能有省略號(hào) */繁瑣?有解決問題的辦法?35辦法:有以半徑為參數(shù)計(jì)算圓盤面積的函數(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ù)如何定義:把一段計(jì)算定義成函數(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ù)可作為表達(dá)式使用。半徑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)用相當(dāng)于語句39函數(shù)返回值類型 函數(shù)名(類型1 參數(shù)名1,類型2 參數(shù)名2,)參數(shù)(形式參數(shù))表 變量定義部分 語句部分 return (表達(dá)式 )函數(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ù)的類型(一一對(duì)應(yīng))。 形式參數(shù)(形參) 命名是為了在函數(shù)里使用實(shí)際參數(shù)(實(shí)參)的值。函數(shù)體:復(fù)合結(jié)構(gòu),其中定義的變量是本函數(shù)的局部變量。 參數(shù)

24、也看作局部變量. 只在該函數(shù)內(nèi)有效42函數(shù)體里的特殊語句:return/返回語句:return 表達(dá)式;return;使函數(shù)結(jié)束:先算表達(dá)式 ,以其值作為函數(shù)返回值。函數(shù)調(diào)用函數(shù)名(實(shí)際參數(shù)表) 多個(gè)參數(shù)用逗號(hào)分隔。函數(shù)的執(zhí)行 函數(shù)體的復(fù)合語句在參數(shù)具有特定實(shí)參值的情況下開始執(zhí)行。實(shí)在參數(shù),類型個(gè)數(shù)與形參一一對(duì)應(yīng)43例:定義已知三角形三邊長度求面積的函數(shù)。t_area,3個(gè)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) 注意形參和實(shí)參的對(duì)應(yīng)!44定義無返回值的函數(shù)形式:返回值類型處寫 void 。若函數(shù)不需要返回值,可定義無返回值的函數(shù)。無返回值的函數(shù)不能用在表達(dá)式中.例:根據(jù)半徑計(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程序必須有一個(gè)名為main的函數(shù)(主函數(shù))int main () main在程序啟動(dòng)時(shí)被自動(dòng)調(diào)用(由運(yùn)行系統(tǒng)調(diào)用)程序從main的函數(shù)體開始執(zhí)行,直到該復(fù)合結(jié)構(gòu)結(jié)束其他函數(shù)不經(jīng)調(diào)用就不會(huì)執(zhí)行整個(gè)程序里不允許

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

28、型轉(zhuǎn)換產(chǎn)生函數(shù)返回值時(shí)可能出現(xiàn)類型轉(zhuǎn)換495.函數(shù)調(diào)用50#include /*函數(shù)原型*/ /* 函數(shù)定義寫在這里 */int main () /* 主程序體,包含函數(shù)調(diào)用 */ /* 函數(shù)定義也可寫在這里,但在main之前給出函數(shù)原型 */包含一個(gè)/多個(gè)函數(shù)定義的程序模式:51說明函數(shù)中定義的形參,為局部變量,在未出現(xiàn)函數(shù)調(diào)用時(shí),并不占用內(nèi)存單元,只有調(diào)用該函數(shù)時(shí)才分配內(nèi)存單元,調(diào)用結(jié)束后釋放所占用的內(nèi)存單元。C中實(shí)參和形參類型應(yīng)相同或賦值相容。C中實(shí)參向形參傳遞數(shù)據(jù)是“值傳遞”,單向傳遞。C中實(shí)參可以是變量或表達(dá)式。函數(shù)返回值類型未加說明的,自動(dòng)按整型處理。函數(shù)返回值類型應(yīng)與函數(shù)中return中表達(dá)式類型一致,不一致時(shí)以函數(shù)類型為準(zhǔn)。52值傳遞方式方式:函數(shù)調(diào)用時(shí),為形參分配單元,并將實(shí)參的值復(fù)制到形參中;調(diào)用結(jié)束,形參單元被釋放,實(shí)參單元仍保留并維持原值特點(diǎn)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論