




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、C語(yǔ)言C語(yǔ)言是一種計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言。它既具有高級(jí)語(yǔ)言的特點(diǎn),又具有匯編語(yǔ)言的特點(diǎn)。它D.M.Ritchie于1972。它可以作為工作系統(tǒng)設(shè)計(jì)語(yǔ)言,編寫系統(tǒng)應(yīng)用程序,也可以作為應(yīng)用程序設(shè)計(jì)語(yǔ)言,編寫不依賴計(jì)算機(jī)硬件的應(yīng)用程序。具體以及嵌入式系統(tǒng)開發(fā)。1優(yōu)點(diǎn)簡(jiǎn)潔緊湊、靈活方便 C語(yǔ)言一共只有32個(gè)關(guān)鍵字,9種控制語(yǔ)句,程序書寫形式自由,區(qū)分大小寫。運(yùn)算符豐富 運(yùn)算符:括號(hào)、賦值、強(qiáng)制類型轉(zhuǎn)換等,共有34種運(yùn)算符。從而使C語(yǔ)言的運(yùn)算類型極其豐富,表達(dá)式類型多樣化。靈活使用各種運(yùn)算符可以實(shí)現(xiàn)在其它高級(jí)語(yǔ)言中難以實(shí)現(xiàn)的運(yùn)算。 數(shù)據(jù)類型豐富 C語(yǔ)言的數(shù)據(jù)類型有:整型、實(shí)型、字符型、數(shù)組類型、指針類型、結(jié)
2、構(gòu)體類型、共用體類型等。能用來(lái)實(shí)現(xiàn)各種復(fù)雜的數(shù)據(jù)結(jié)構(gòu)的運(yùn)算。C語(yǔ)言具有強(qiáng)大的圖形功能,支持多種顯示器和驅(qū)動(dòng)器。同時(shí)對(duì)于不同的編譯器也有支持引入了指針概念,可使程序效率更高。而且計(jì)算功能、邏輯判斷功能也比較強(qiáng)大,可以實(shí)現(xiàn)決策目的的游戲。 2語(yǔ)法限制不太嚴(yán)格,程序設(shè)計(jì)自由度大 雖然C語(yǔ)言也是強(qiáng)類型語(yǔ)言,但它的語(yǔ)法比較靈活,允許程序編寫者有較大的自由度。 允許直接訪問(wèn)物理地址,對(duì)硬件進(jìn)行操作 它把高級(jí)語(yǔ)言的基本結(jié)構(gòu)和語(yǔ)句與低級(jí)語(yǔ)言的實(shí)用性結(jié)合起來(lái)。允許直接訪問(wèn)物理地址:可以像匯編語(yǔ)言一樣對(duì)位、字節(jié)和地址(這三者是計(jì)算機(jī)最基本的工作單元)進(jìn)行操作。 生成目標(biāo)代碼質(zhì)量高,程序執(zhí)行效率高 一般只比匯編程序
3、生成的目標(biāo)代碼效率低1020%。 適用范圍大,可移植性好 C語(yǔ)言有一個(gè)突出的優(yōu)點(diǎn)就是適合于多種操作系統(tǒng),如DOS、UNIX、windows 98windows NT;也適用于多種機(jī)型。C語(yǔ)言具有強(qiáng)大的繪圖能力,可移植性好,并具備很強(qiáng)的數(shù)據(jù)處理能力,因此適于編寫系統(tǒng)軟件,三維,二維圖形和動(dòng)畫,它也是數(shù)值計(jì)算的高級(jí)語(yǔ)言。結(jié)構(gòu)式語(yǔ)言顯著特點(diǎn)是代碼及數(shù)據(jù)的分隔化,即程序的各個(gè)部分除了必要的信息交流外彼此獨(dú)立。使程序?qū)哟吻逦阌谑褂?、維護(hù)以及調(diào)試。C語(yǔ)言是以函數(shù)形式提供給用戶的,這些函數(shù)可方便的調(diào)用,并具有多種循環(huán)、條件語(yǔ)句控制程序流向,從而使程序完全結(jié)構(gòu)化。 3缺點(diǎn)1 C語(yǔ)言的缺點(diǎn)主要表現(xiàn)在數(shù)據(jù)的封
4、裝性上,這一點(diǎn)使得C在數(shù)據(jù)的安全性上有很大缺陷,這也是C和C+的一大區(qū)別。 2 C語(yǔ)言的語(yǔ)法限制不太嚴(yán)格,對(duì)變量的類型約束不嚴(yán)格,影響程序的安全性,對(duì)數(shù)組下標(biāo)越界不作檢查等。從應(yīng)用的角度,C語(yǔ)言比其他高級(jí)語(yǔ)言較難掌握。4入門1一個(gè)C語(yǔ)言源程序可以由一個(gè)或多個(gè)源文件組成。 2每個(gè)源文件可由一個(gè)或多個(gè)函數(shù)組成。 3一個(gè)源程序不論由多少個(gè)文件組成,都有一個(gè)且只能有一個(gè)main函數(shù),即主函數(shù)。 4源程序中可以有預(yù)處理命令(包括include 命令、if命令、pragma命令).預(yù)處理命令 通常應(yīng)放在源文件或源程序的最前面。 5每一個(gè)說(shuō)明,每一個(gè)語(yǔ)句都必須以分號(hào) ; 結(jié)尾。但預(yù)處理命令 函數(shù)頭 花括號(hào)
5、之后不能加分號(hào)。 6標(biāo)識(shí)符,關(guān)鍵字之間必須加至少 一個(gè)空格 以示間隔。若已有明顯的間隔符,也可不再加空格來(lái)間隔。5特色C:指針是C語(yǔ)言的一大特色,可以說(shuō)是C語(yǔ)言優(yōu)于其它高級(jí)語(yǔ)言的一個(gè)重要原因。就是因?yàn)樗兄羔?,可以直接進(jìn)行靠近硬件的操作,但是C的指針操作不做保護(hù),也給它帶來(lái)了很多不安全的因素。C+:在指針這方面做了改進(jìn),在保留了指針操作的同時(shí)又增強(qiáng)了安全性,受到了一些用戶的支持,但是,由于這些改進(jìn)增加語(yǔ)言的復(fù)雜度,也為另一部分所詬病。Java:則吸取了C+的教訓(xùn),取消了指針操作,也取消了C+改進(jìn)中一些備受爭(zhēng)議的地方,在安全性和適合性方面均取得良好的效果,但其本身解釋在虛擬機(jī)中運(yùn)行,運(yùn)行效率低于
6、C+/C。程序使用榜的前三名C,C+,java同一系的語(yǔ)言。6C :是最起初的語(yǔ)言, 更多的是面向過(guò)程.然后是C+,C#是最近微軟推出的。C+:算是C的升級(jí),但是其中一些語(yǔ)言發(fā)生了變化。最近微軟推出.C#:微軟極度不情愿用J這樣的稱謂,所以就出現(xiàn)了.最近微軟推出.Java:原名OAK,從C+中脫胎而來(lái)的。目前用的比較多的是JAVA,語(yǔ)言簡(jiǎn)單,易編程(對(duì)人而言).純JAVA語(yǔ)言編寫的程序不受平臺(tái)限制。足夠強(qiáng)大,沒(méi)有C+的繁雜(摒棄了多繼承這點(diǎn)就很好).論實(shí)質(zhì)JAVA其實(shí)還是稱為C語(yǔ)言的子集比較客觀(語(yǔ)法幾乎沒(méi)區(qū)別)72022/7/288C程序的執(zhí)行過(guò)程 1源程序文件的建立和編輯 編寫源程序,形成
7、 .C文件需用編輯工具:tc.exe、記事本2編譯 編譯源程序,形成目標(biāo)程序 . Obj文件需用編譯工具 :tcc.exe3連接 連接OBJ文件和調(diào)用的庫(kù)函數(shù),形成運(yùn)行程序 .exe 文件需用連接工具 :tlink.exe4運(yùn)行 .exe 文件C程序由函數(shù)構(gòu)成必須有,且只能有一個(gè)main(主函數(shù))總是從main函數(shù)開始執(zhí)行函數(shù)由函數(shù)首部和函數(shù)體組成函數(shù)首部指定函數(shù)名、函數(shù)參數(shù)、類型函數(shù)體從 開始,到 結(jié)束函數(shù)內(nèi)有語(yǔ)句語(yǔ)句包括說(shuō)明性語(yǔ)句、可執(zhí)行語(yǔ)句以 ;表示語(yǔ)句結(jié)束注釋可以出現(xiàn)在程序的任何位置 用 /* 和 */ 括起來(lái),必須成對(duì)出現(xiàn)書寫格式C語(yǔ)言沒(méi)有行的概念,書寫格式自由。習(xí)慣小寫字母,縮進(jìn)格
8、式。9運(yùn)算C語(yǔ)言的運(yùn)算非常靈活,功能十分豐富,運(yùn)算種類遠(yuǎn)多于其它程序設(shè)計(jì)語(yǔ)言。在表達(dá)式方面較其它程序語(yǔ)言更為簡(jiǎn)潔,如自加、自減、逗號(hào)運(yùn)算和三目運(yùn)算使表達(dá)式更為簡(jiǎn)單。當(dāng)多種不同運(yùn)算組成一個(gè)運(yùn)算表達(dá)式,即一個(gè)運(yùn)算式中出現(xiàn)多種運(yùn)算符時(shí),運(yùn)算的優(yōu)先順序和結(jié)合規(guī)則顯得十分重要。運(yùn)算符按優(yōu)先級(jí)不同分類.C程序設(shè)計(jì)運(yùn)算符可分為15種優(yōu)先級(jí):決定同級(jí)運(yùn)算符的運(yùn)算順序.優(yōu)先級(jí)(排名)從高到低為:1 15.右至左結(jié)合:213 14左至右結(jié)合:1312 15102022/7/2811關(guān)系、等式和邏輯運(yùn)算符關(guān)于優(yōu)先次序,=為同一級(jí)別, =和!=為同一級(jí)別。在同一級(jí)別中,采取由左至右的結(jié)合方向。 算術(shù)運(yùn)算符關(guān)系運(yùn)算符賦
9、值運(yùn)算符高低例 ca+b c(a+b)ab!=c (ab)!=ca=bc a = = (bc a = (bc) 等式運(yùn)算符算術(shù)運(yùn)算符和算術(shù)表達(dá)式基本算術(shù)運(yùn)算符: + - * / %結(jié)合方向:從左向右優(yōu)先級(jí): - -* / % - + - (2) (3) (4)說(shuō)明:“-”可為單目運(yùn)算符時(shí),右結(jié)合性兩整數(shù)相除,結(jié)果為整數(shù)%要求兩側(cè)均為整型數(shù)據(jù)+ - * / 運(yùn)算的兩個(gè)數(shù)中有一個(gè)數(shù)為實(shí)數(shù),結(jié)果是double型例 5/2 = -5/2.0 =例 5%2 = -5%2 = 1%10 = 5%1 = 5.5%2例 5/2 = 2 -5/2.0 = -2.5例 5%2 = 1 -5%2 = -1 1%10
10、 = 1 5%1 = 0 5.5%2 ()12自增、自減運(yùn)算符+ 作用:使變量值加1或減1種類:前置 :先加錢再做事(少) +i, -i (先執(zhí)行i+1或i-1,再使用i值)后置 :先做事再給錢(多) i+,i- (先使用i值,再執(zhí)行i+1或i-1)例j=3; k=+j; j=3; k=j+; j=3; printf(“%d”,+j); j=3; printf(“%d”,j+); a=3;b=5;c=(+a)*b; a=3;b=5;c=(a+)*b; /k=4,j=4/k=3,j=4/4,j=4/3,j=4/c=20,a=4/c=15,a=413幾點(diǎn)說(shuō)明:例 -i+ i=3; printf(“
11、%d”,-i+); -(i+)/-3 + - 不能用于常量和表達(dá)式,如 5+,(a+b)+ - 結(jié)合方向: 自右向左優(yōu)先級(jí):- + - -* / % -+ - (2) (3) (4)該運(yùn)算符常用于循環(huán)語(yǔ)句中,使循環(huán)變量加減1有關(guān)表達(dá)式使用中的問(wèn)題說(shuō)明不同系統(tǒng)對(duì)運(yùn)算符和表達(dá)式的處理次序不同,盡可能寫通用性強(qiáng)的語(yǔ)句不要寫有歧義和不知系統(tǒng)如何執(zhí)行的程序142022/7/2815賦值運(yùn)算符和賦值表達(dá)式1.賦值運(yùn)算符:“=” 。2.復(fù)合賦值運(yùn)算:在賦值符號(hào)前加上其它運(yùn)算符號(hào)。 +=,-=,*=,/=,%=,=,&=,=,|= 例如: a + = 3; 等價(jià)于a = a + 3; x * = y + 8;
12、 等價(jià)于x = x * ( y + 8 ); x % = 3; 等價(jià)于x = x % 3;賦值運(yùn)算符僅優(yōu)先于“,” ,且具有右結(jié)合性例如: a= b= b*c 等價(jià)于:a= (b=(b*c) )賦值號(hào)與數(shù)學(xué)中的等號(hào)含義不同例如:數(shù)學(xué)中 a=b 等價(jià)于 b=a C語(yǔ)言中 a=b 不等價(jià)于 b=a3.賦值運(yùn)算中的類型轉(zhuǎn)換 = 小數(shù)部分自動(dòng)補(bǔ)0 = 自動(dòng)舍去實(shí)型表達(dá)式的小數(shù)部分(注意不進(jìn)行四舍五入) = = 自動(dòng)截取表達(dá)式值的低字節(jié)賦值,舍去高字節(jié) = = 自動(dòng)給高字節(jié)補(bǔ)0 或補(bǔ)116數(shù)據(jù)類型、運(yùn)算符與表達(dá)式 運(yùn)算符和表達(dá)式4.賦值表達(dá)式: 由賦值運(yùn)算符將一個(gè)變量和一個(gè)表達(dá)式連接起來(lái)的式子。 一般形
13、式為:例如:int a=12;求下列運(yùn)算的結(jié)果 aaa * a aaa * a=12-12 * 12=-132)a-132aa(-132)=(-132)+(-132)=-264a=-264172022/7/2818數(shù)據(jù)類型、運(yùn)算符與表達(dá)式3.10 逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式逗號(hào)運(yùn)算符又稱為“順序求值運(yùn)算符”,是所有運(yùn)算符中級(jí)別最低的,它將兩個(gè)表達(dá)式連接起來(lái)。 一般形式為:表達(dá)式1,表達(dá)式2求解過(guò)程是:先求解表達(dá)式1,再求解表達(dá)式2,整個(gè)逗號(hào)表達(dá)式的值是表達(dá)式2的值。 例如: a=3*5, a*4; a的值為15,表達(dá)式的值為60 (a=3*5, a*4), a+5; a的值為15, 表達(dá)式的值為2
14、0 又如: x=(a=3, 6*3); x的值為18 x=a=3, 6*a x的值為3, 表達(dá)式的值為182022/7/2819數(shù)據(jù)輸入輸出的概念 1. 所謂輸入輸出是以計(jì)算機(jī)主機(jī)為主體而言的。主機(jī)向外部設(shè)備 “輸出” ,外部設(shè)備向主機(jī)“輸入”。 2.C語(yǔ)言本身不提供輸入輸出語(yǔ)句,輸入和輸出操作是由函數(shù)實(shí)現(xiàn)。 C語(yǔ)言通過(guò)調(diào)用四個(gè)系統(tǒng)函數(shù)來(lái)實(shí)現(xiàn)輸入輸出。 printf(),scanf(),getchar(), putchar() 3.在使用C語(yǔ)言庫(kù)函數(shù)時(shí),要用到預(yù)編譯命令“#include”將有關(guān)的“頭文件包括到用戶源文件中。 在調(diào)用標(biāo)準(zhǔn)輸入輸出庫(kù)函數(shù)時(shí),文件開頭應(yīng)有以下預(yù)編譯命令: #incl
15、ude 或 #include”stdio.h”程序包括兩方面內(nèi)容:1.對(duì)數(shù)據(jù)的描述:數(shù)據(jù)元素及各元素之間的關(guān)系,即數(shù)據(jù)結(jié)構(gòu)。2.對(duì)操作的描述:即操作步驟,也就是算法。程序 = 數(shù)據(jù)結(jié)構(gòu) + 算法程序 =數(shù)據(jù)結(jié)構(gòu) + 算法 + 程序設(shè)計(jì)方法 + 語(yǔ)言工具環(huán)境說(shuō)明:高級(jí)語(yǔ)言的數(shù)據(jù)結(jié)構(gòu)是以數(shù)據(jù)類型來(lái)體現(xiàn)的。209種控制語(yǔ)句:主要用于循環(huán)/判斷1.if(判斷體&) 循環(huán)體 ;/不滿足就到else或停止,運(yùn)行(末值-初值)次/ else 循環(huán)體 ;/不滿足就停止,運(yùn)行(末值-初值)次/2.for(循環(huán)體初值,;判斷體;循環(huán)體) 循環(huán)體; /不滿足就停止,運(yùn)行(末值-初值)次/3.while(a ) 循環(huán)
16、體;/a為0就停止,運(yùn)行a次循環(huán)體,至少運(yùn)行0次/4.do循環(huán)體;while( a);/a為0就停止,運(yùn)行a次循環(huán)體,至少運(yùn)行1次/215.Continue/結(jié)束本次循環(huán),回到開頭/6.Break/結(jié)束本輪循環(huán),去到末尾/7.Switch(int/char)case 1/a:;break; case 2/b:;break;.default: ; /上面不滿足就到下面/8.Goto9.return225類C語(yǔ)句 和其他高級(jí)語(yǔ)言一樣,C語(yǔ)言的語(yǔ)句也是用來(lái)向計(jì)算機(jī)發(fā)出操作命令的。一條語(yǔ)句經(jīng)過(guò)編譯后生成若干條機(jī)器指令。在C語(yǔ)言中只有可執(zhí)行語(yǔ)句,沒(méi)有非執(zhí)行語(yǔ)句。23 控制語(yǔ)句,完成一定的控制功能 if(
17、 ) else (條件語(yǔ)句) for( ) (循環(huán)語(yǔ)句) while( ) (循環(huán)語(yǔ)句) do while ( ) (循環(huán)語(yǔ)句) continue (結(jié)束本次循環(huán)語(yǔ)句) break (中止執(zhí)行switch或循環(huán)語(yǔ)句) Switch (多分支選擇語(yǔ)句) goto (轉(zhuǎn)向語(yǔ)句) return (從函數(shù)返回語(yǔ)句)24 函數(shù)調(diào)用語(yǔ)句,由一次函數(shù)調(diào)用加一個(gè)分號(hào)構(gòu)成一個(gè)語(yǔ)句, 如:printf (“This is a C statement.”); 表達(dá)式語(yǔ)句,由一個(gè)表達(dá)式構(gòu)成一個(gè)語(yǔ)句, 如: a=3 (是表達(dá)式,不是語(yǔ)句) a=3; (是語(yǔ)句) 空語(yǔ)句,只有一個(gè)分號(hào),什么也不做; 復(fù)合語(yǔ)句,用 把一些語(yǔ)
18、句括起來(lái)成為復(fù)合語(yǔ)句。相當(dāng)一條語(yǔ)句,哪里有語(yǔ)句,哪里就可用復(fù)合語(yǔ)句。 if (ab) max=a; min=b; 復(fù)合語(yǔ)句最后一個(gè)語(yǔ)句中最后的分號(hào)不能忽略不寫。2534種運(yùn)算符算術(shù)運(yùn)算符 :+ - * / % + -關(guān)系運(yùn)算符 : = !=邏輯運(yùn)算符 :! & |位運(yùn)算符 : | &賦值運(yùn)算符 := 及其擴(kuò)展條件運(yùn)算符 :?:逗號(hào)運(yùn)算符 :,指針運(yùn)算符 :* &求字節(jié)數(shù) :sizeof強(qiáng)制類型轉(zhuǎn)換:(類型)分量運(yùn)算符 :. -下標(biāo)運(yùn)算符 :其它 :( ) -262022/7/2827關(guān)系、等式和邏輯運(yùn)算符邏輯運(yùn)算符的優(yōu)先級(jí)! & | 邏輯運(yùn)算符 “&” 和 “|” 低于關(guān)系運(yùn)算符,“!”高于算
19、術(shù)運(yùn)算符 ab & xy 相當(dāng)于: (ab) & (xy) a=b|x=y 相當(dāng)于: (a=b) | (x=y) !a | ab 相當(dāng)于: (!a ) | (ab)! 算術(shù) 關(guān)系 邏輯 賦值C語(yǔ)言提供的數(shù)據(jù)結(jié)構(gòu)是以數(shù)據(jù)類型形式出現(xiàn)的數(shù)據(jù)在內(nèi)存中存放的情況由數(shù)據(jù)類型決定 數(shù)據(jù)的操作要依靠運(yùn)算符實(shí)現(xiàn)數(shù)據(jù)+運(yùn)算符=表達(dá)式28常量和符號(hào)常量常量:在運(yùn)行過(guò)程中,其值不能被改變的量稱為常量。 4類:整型實(shí)型字符字符串符號(hào)常量:用一個(gè)標(biāo)識(shí)符代表的常量。 習(xí)慣上符號(hào)常量名用大寫,變量用小寫,以示區(qū)別。類型示例直接常量整型常量12 、 0 、 -3實(shí)型常量4.6 、 -1.23字符常量a 、 b 符號(hào)常量PRI
20、CE 、 PAI29符號(hào)常量:用標(biāo)識(shí)符代表常量一般用大寫字母: PRICE 、 PI定義格式: #define 符號(hào)常量 常量其值在作用域內(nèi)不能改變和再賦值。例3.1 符號(hào)常量舉例#define PRICE 30#include void main() int num,total; num=10; total=num*PRICE; printf(total=%dn,total);total=300運(yùn)行結(jié)果:符號(hào)常量的優(yōu)點(diǎn)是:見名知意、一改全改30標(biāo)識(shí)符定義:標(biāo)識(shí)變量名、符號(hào)常量名、函數(shù)名、數(shù)組名、 文件名的字符串序列名字。命名規(guī)則:只能由字母、數(shù)字、下劃線組成,且第一個(gè)字符必須是字母或下劃線大
21、小寫字母含義不同,一般用小寫不能使用關(guān)鍵字TC允許最長(zhǎng)32個(gè)字符,建議長(zhǎng)度不超過(guò)8個(gè)字符使用:先定義、后使用標(biāo)識(shí)符應(yīng)該“見名知意”,如 total , max標(biāo)識(shí)符應(yīng)該“不宜混淆”,如 l與1 , O與031變 量變量:在程序運(yùn)行過(guò)程中,其值可以改變的量稱為變量。標(biāo)識(shí)符:用來(lái)標(biāo)識(shí)變量名、符號(hào)常量名、函數(shù)名、類型名、數(shù)組名、文件名的有效字符序列稱為標(biāo)識(shí)符。 由字母、數(shù)字和下劃線3種字符組成,且第一個(gè)字符必須為字母或下劃線。合法的變量名如: average,abd, a, s2, student_name, _init不合法的變量名:M.D.John, 1a, #33, abC 語(yǔ)言要求對(duì)變量:“
22、先定義,后使用”。32變量 定義:其值可以改變的量。 定義格式:數(shù)據(jù)類型 變量名; 變量應(yīng)該有名字,并在內(nèi)存中占據(jù)一定的存儲(chǔ)單元。 變量名和變量值有不同的含義變量名實(shí)為一個(gè)符號(hào)地址 a3例 變量的使用main() int a; a=3; printf(“a=%d,a);變量名變量值存儲(chǔ)單元33字符型數(shù)據(jù)1.字符常量:用一對(duì)單引號(hào)括起來(lái)的單個(gè)字符,稱為字符常量。例如,A、等。2.轉(zhuǎn)義字符:語(yǔ)言還允許使用一種特殊形式的字符常量,就是以反斜杠“ ”開頭的字符序列。0字符串結(jié)束標(biāo)志n回車換行t跳到下一個(gè)輸出位置雙引號(hào)字符dddddd為1到3位八進(jìn)制數(shù)所代表的字符65 =A=101xhhhh為1到2位十
23、六進(jìn)制數(shù)所代表的字符65=A=x4134C的數(shù)據(jù)類型C數(shù)據(jù)類型基本類型構(gòu)造類型指針類型空類型 void字符型 char整 型實(shí) 型(浮點(diǎn)型)單精度型 float雙精度型 double數(shù)組類型結(jié)構(gòu)體類型struct共用體類型union短整型 short長(zhǎng)整型 long整型 int枚舉類型 enum數(shù)據(jù)類型決定:1. 數(shù)據(jù)占內(nèi)存字節(jié)數(shù)2. 數(shù)據(jù)取值范圍3. 可以進(jìn)行的操作35doublefloatlongunsignedintchar,short低高說(shuō)明:必定的轉(zhuǎn)換運(yùn)算對(duì)象類型不同時(shí)轉(zhuǎn)換例 char ch; int i; float f; double d;ch/i + f*d - (f+i)in
24、tintdoubledoubledoubledoubledoubledoubleintintdoubledoubledoubledoubledoubledouble10+a +i*f - d/l例 int i; float f; double d; long l;36廣義的語(yǔ)句結(jié)構(gòu)順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)的聯(lián)系順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)并不彼此孤立的,在循環(huán)中可以有選擇、順序結(jié)構(gòu),選擇中也可以有循環(huán)、順序結(jié)構(gòu)在實(shí)際編程過(guò)程中常將這三種結(jié)構(gòu)相互結(jié)合以實(shí)現(xiàn)各種算法,設(shè)計(jì)出相應(yīng)程序.但如果要編程的問(wèn)題較大,編寫出的程序往往就很長(zhǎng)、結(jié)構(gòu)重復(fù)多,造成可讀性差,難以理解,解決這個(gè)問(wèn)題的方法是將C程序
25、設(shè)計(jì)成模塊化結(jié)構(gòu)。37程序的3種基本結(jié)構(gòu)順序結(jié)構(gòu)程序:按照書寫順序依次執(zhí)行語(yǔ)句選擇結(jié)構(gòu)程序:按照條件判斷選擇執(zhí)行語(yǔ)句循環(huán)結(jié)構(gòu)程序:通過(guò)條件控制循環(huán)執(zhí)行語(yǔ)句AB開始/入口結(jié)束/出口ABPT FPA順序結(jié)構(gòu)程序選擇結(jié)構(gòu)程序循環(huán)結(jié)構(gòu)程序結(jié)束/出口結(jié)束/出口開始/入口開始/入口PA結(jié)束/出口開始/入口T 38順序結(jié)構(gòu)順序結(jié)構(gòu)的程序設(shè)計(jì)是最簡(jiǎn)單的,只要按照解決問(wèn)題的順序?qū)懗鱿鄳?yīng)的語(yǔ)句就行,它的執(zhí)行順序是自上而下,依次執(zhí)行。 例如:a = 3,b = 5,現(xiàn)交換a,b的值,這個(gè)問(wèn)題就好像交換兩個(gè)杯子水,這當(dāng)然要用到第三個(gè)杯子,假如第三個(gè)杯子是c,那么正確的程序(右倒入左)為:c = a; a = b; b
26、 = c;執(zhí)行結(jié)果是a = 5,b = c = 3。順序結(jié)構(gòu)可以獨(dú)立使用構(gòu)成一個(gè)簡(jiǎn)單的完整程序,常見的輸入、計(jì)算,輸出三步曲的程序就是順序結(jié)構(gòu).例如計(jì)算圓的面積,其程序的語(yǔ)句順序就是輸入圓的半徑r,計(jì)算s = 3.14159*r*r,輸出圓的面積s。不過(guò)大多數(shù)情況下順序結(jié)構(gòu)都是作為程序的一部分,與其它結(jié)構(gòu)一起構(gòu)成一個(gè)復(fù)雜的程序,例如選擇結(jié)構(gòu)中的復(fù)合語(yǔ)句、循環(huán)結(jié)構(gòu)中的循環(huán)體等。 39選擇結(jié)構(gòu)(分支結(jié)構(gòu))順序結(jié)構(gòu)的程序雖然能解決計(jì)算、輸出等問(wèn)題,但不能做判斷再選擇。對(duì)于要先做判斷再選擇的問(wèn)題就要使用選擇結(jié)構(gòu)。選擇結(jié)構(gòu)的執(zhí)行是依據(jù)一定的條件選擇執(zhí)行路徑,而不是嚴(yán)格按照語(yǔ)句出現(xiàn)的物理順序。選擇結(jié)構(gòu)的程
27、序設(shè)計(jì)方法的關(guān)鍵:在于構(gòu)造合適的分支(選擇)條件和分析程序流程,根據(jù)不同的程序流程選擇適當(dāng)?shù)倪x擇語(yǔ)句。選擇結(jié)構(gòu)適合于帶有邏輯或關(guān)系比較等條件判斷的計(jì)算,設(shè)計(jì)這類程序時(shí)往往都可以把程序設(shè)計(jì)分析與語(yǔ)言分開,使得問(wèn)題簡(jiǎn)單化:先繪制其程序流程圖:根據(jù)解題分析所繪制的程序執(zhí)行流程圖.然后根據(jù)程序流程寫出源程序.40循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)可以減少源程序重復(fù)書寫的工作量,用來(lái)描述重復(fù)執(zhí)行某段算法的問(wèn)題,這是程序設(shè)計(jì)中最能發(fā)揮計(jì)算機(jī)特長(zhǎng)的程序結(jié)構(gòu),C語(yǔ)言中提供四種循環(huán),即goto循環(huán)、while循環(huán)、do while循環(huán)和for循環(huán)。四種循環(huán)可以用來(lái)處理同一問(wèn)題.一般情況下它們可以互相代替換,但一般不提倡用goto
28、循環(huán),因?yàn)閺?qiáng)制改變程序的順序經(jīng)常會(huì)給程序的運(yùn)行帶來(lái)不可預(yù)料的錯(cuò)誤。 特別要注意在循環(huán)體內(nèi)應(yīng)包含趨于結(jié)束的語(yǔ)句(即循環(huán)變量值的改變),否則就可能成了一個(gè)死循環(huán),這是初學(xué)者的一個(gè)常見錯(cuò)誤。 三個(gè)循環(huán)的異同點(diǎn): while循環(huán)、do while循環(huán)和for循環(huán)都可用continue語(yǔ)句結(jié)束本次循環(huán).break語(yǔ)句跳出循環(huán)循環(huán)變量的初始化的操作在循環(huán)體之前: while和dowhile循環(huán).在語(yǔ)句1中進(jìn)行的: for循環(huán);先判斷表達(dá)式,后執(zhí)行循環(huán)體:while循環(huán)和for循環(huán).可能一次都不執(zhí)行.先執(zhí)行循環(huán)體,后判斷表達(dá)式: dowhile循環(huán).最少被執(zhí)行一次.注:goto語(yǔ)句與if構(gòu)成的循環(huán),不能用b
29、reak和 continue語(yǔ)句進(jìn)行控制的。 41模塊化程序結(jié)構(gòu)C語(yǔ)言的模塊化程序結(jié)構(gòu)用函數(shù)來(lái)實(shí)現(xiàn):先將復(fù)雜的C程序分為若干模塊,每個(gè)模塊都編寫成一個(gè)C函數(shù),然后通過(guò)主函數(shù)調(diào)用函數(shù)及函數(shù)調(diào)用函數(shù)來(lái)實(shí)現(xiàn)一大型問(wèn)題的C程序編寫.因此,常說(shuō):C程序=主函數(shù)+子函數(shù)。因此,對(duì)函數(shù)的定義、調(diào)用、值的返回等中要尤其注重理解和應(yīng)用,并通過(guò)上機(jī)調(diào)試加以鞏固。4232關(guān)鍵字關(guān)鍵字就是已被C語(yǔ)言本身使用,不能作其它用途使用的字。例如關(guān)鍵字不能用作變量名、函數(shù)名等 由ANSI標(biāo)準(zhǔn)定義的C語(yǔ)言關(guān)鍵字共32個(gè): auto double int struct break else long switch case enu
30、m register typedef charextern return union const float short unsigned continue for signed void default goto sizeof volatile do if while static 43 數(shù)據(jù)類型關(guān)鍵字A.基本數(shù)據(jù)類型(5個(gè))void:聲明函數(shù)無(wú)返回值或無(wú)參數(shù),聲明無(wú)類型指針,顯式丟棄運(yùn)算結(jié)果 char:字符型類型數(shù)據(jù),屬于整型數(shù)據(jù)的一種 int:整型數(shù)據(jù),通常為編譯器指定的機(jī)器字長(zhǎng) float:?jiǎn)尉雀↑c(diǎn)型數(shù)據(jù),屬于浮點(diǎn)數(shù)據(jù)的一種 double:雙精度浮點(diǎn)型數(shù)據(jù),屬于浮點(diǎn)數(shù)據(jù)的一種B .類
31、型修飾關(guān)鍵字(4個(gè))short:修飾int,短整型數(shù)據(jù),可省略被修飾的int。 long:修飾int,長(zhǎng)整形數(shù)據(jù),可省略被修飾的int。 signed:修飾整型數(shù)據(jù),有符號(hào)數(shù)據(jù)類型 unsigned:修飾整型數(shù)據(jù),無(wú)符號(hào)數(shù)據(jù)類型C .復(fù)雜類型關(guān)鍵字(5個(gè))struct:結(jié)構(gòu)體聲明 union:共用體聲明 enum:枚舉聲明 typedef:聲明類型別名 sizeof:得到特定類型或特定類型變量的大小D .存儲(chǔ)級(jí)別關(guān)鍵字(6個(gè))auto:指定為自動(dòng)變量,由編譯器自動(dòng)分配及釋放。通常在棧上分配 static:指定為靜態(tài)變量,分配在靜態(tài)變量區(qū),修飾函數(shù)時(shí),指定函數(shù)作用域?yàn)槲募?nèi)部 register:
32、指定為寄存器變量,建議編譯器將變量存儲(chǔ)到寄存器中使用,也可以修飾函數(shù)形參,建議編譯器通過(guò)寄存器而不是堆棧傳遞參數(shù) extern:指定對(duì)應(yīng)變量為外部變量,即標(biāo)示變量或者函數(shù)的定義在別的文件中,提示編譯器遇到此變量和函數(shù)時(shí)在其他模塊中尋找其定義。 const:與volatile合稱“cv特性”,指定變量不可被當(dāng)前線程/進(jìn)程改變(但有可能被系統(tǒng)或其他線程/進(jìn)程改變) volatile:與const合稱“cv特性”,指定變量的值有可能會(huì)被系統(tǒng)或其他進(jìn)程/線程改變,強(qiáng)制編譯器每次從內(nèi)存中取得該變量的值44 流程控制關(guān)鍵字A .跳轉(zhuǎn)結(jié)構(gòu)(4個(gè))return:用在函數(shù)體中,返回特定值(或者是void值,即不
33、返回值) continue:結(jié)束當(dāng)前循環(huán),開始下一輪循環(huán) break:跳出當(dāng)前循環(huán)或switch結(jié)構(gòu) goto:無(wú)條件跳轉(zhuǎn)語(yǔ)句B .選擇結(jié)構(gòu) (5個(gè))if:條件語(yǔ)句,后面不需要放分號(hào) else:條件語(yǔ)句否定分支(與if連用) switch:開關(guān)語(yǔ)句(多重分支語(yǔ)句) case:開關(guān)語(yǔ)句中的分支標(biāo)記 default:開關(guān)語(yǔ)句中的“其他”分支,可選。C .循環(huán)結(jié)構(gòu)(3個(gè))for:for循環(huán)結(jié)構(gòu),for(1;2;3)4;的執(zhí)行順序?yàn)?-2-4-3-2.循環(huán),其中2為循環(huán)條件。在整個(gè)for循環(huán)過(guò)程中,表達(dá)式1只計(jì)算一次,表達(dá)式2和表達(dá)式3則可能計(jì)算多次,也可能一次也不計(jì)算。循環(huán)體可能多次執(zhí)行,也可能一次
34、都不執(zhí)行。 do:do循環(huán)結(jié)構(gòu),do 1 while(2); 的執(zhí)行順序是1-2-1.循環(huán),2為循環(huán)條件 while:while循環(huán)結(jié)構(gòu),while(1) 2; 的執(zhí)行順序是1-2-1.循環(huán),1為循環(huán)條件 以上循環(huán)語(yǔ)句,當(dāng)循環(huán)條件表達(dá)式為真則繼續(xù)循環(huán),為假則跳出循環(huán)。45經(jīng)典錯(cuò)誤: void main()void main()的用法并不是任何標(biāo)準(zhǔn)制定的,是Microsoft制定的。大部分編譯器不支持這種寫法。C語(yǔ)言正確的語(yǔ)法是int main(void)。在 C+ 標(biāo)準(zhǔn)中,雖然 main 的標(biāo)準(zhǔn)型態(tài)應(yīng)是int,但編譯器實(shí)現(xiàn)中也可以自行定義型態(tài),不過(guò),所有實(shí)現(xiàn)均應(yīng)接受 int main(void)的。如果堅(jiān)持使用void main()會(huì)使C程序失去跨平臺(tái)的移植特性。46開發(fā)環(huán)境常用的C語(yǔ)言IDE(集成開發(fā)環(huán)境):Microsoft Visual C+Dev-C+Code:BlocksBorland C+Watcom C+Borland C+ BuilderGNU DJGPP C+Lccwin32
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年教育創(chuàng)新:過(guò)秦論公開課課件的卓越設(shè)計(jì)方法
- 中學(xué)生房租賃合同(30篇)
- 手機(jī)零售知識(shí)培訓(xùn)課件
- 2025年建筑施工圖設(shè)計(jì):柱平法施工圖詳解
- 基于大數(shù)據(jù)的物流行業(yè)智能配送平臺(tái)構(gòu)建
- 建設(shè)工程消防施工合同
- 兒科搶救車備用藥品基數(shù)目錄
- 圣魯門窗銷售合同
- 酒店行業(yè)經(jīng)營(yíng)管理實(shí)戰(zhàn)指南
- 多數(shù)據(jù)中心同步部署方案
- 消防維保年度工作計(jì)劃
- 棗莊學(xué)院《電力拖動(dòng)與自動(dòng)控制系統(tǒng)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024年江蘇經(jīng)貿(mào)職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)
- 綠化遷移專項(xiàng)施工方案
- 2025屆高三化學(xué)一輪復(fù)習(xí) 原電池 化學(xué)電源(第一課時(shí))課件
- 全院護(hù)理查房(食管裂孔疝)
- 2024-2025學(xué)年統(tǒng)編版語(yǔ)文九年級(jí)下冊(cè)第7課《溜索》任務(wù)驅(qū)動(dòng)型教學(xué)設(shè)計(jì)
- 2023-2024學(xué)年五年級(jí)科學(xué)下冊(cè)(冀人版)第4課露和霜(教學(xué)設(shè)計(jì))
- 《管理學(xué)》第一章-管理導(dǎo)論
- 2024年國(guó)考公務(wù)員行測(cè)真題及參考答案
- 二手車交易定金合同范本5篇
評(píng)論
0/150
提交評(píng)論