C語言程序設(shè)計(jì)講稿完整版_第1頁
C語言程序設(shè)計(jì)講稿完整版_第2頁
C語言程序設(shè)計(jì)講稿完整版_第3頁
C語言程序設(shè)計(jì)講稿完整版_第4頁
C語言程序設(shè)計(jì)講稿完整版_第5頁
已閱讀5頁,還剩373頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、C語言程序設(shè)計(jì)教程目 錄第1章 語言概述第2章 數(shù)據(jù)類型、運(yùn)算符與表達(dá)式第3章 順序結(jié)構(gòu)程序設(shè)計(jì)第4章 選擇結(jié)構(gòu)程序設(shè)計(jì)第5章 循環(huán)結(jié)構(gòu)程序設(shè)計(jì)第6章 數(shù) 組第7章 函 數(shù)第8章 編譯預(yù)處理第9章 指 針第10章 結(jié)構(gòu)與鏈表第11章 位運(yùn)算第12章 文 件第1章 語言概述本章主要介紹C語言程序的結(jié)構(gòu)和書寫規(guī)那么,以及Turbo C V2.0的根本操作。1.1 C語言的開展簡(jiǎn)史和特點(diǎn)1.2 語言程序的結(jié)構(gòu)與書寫規(guī)那么1.3 C語言的語句和關(guān)鍵字1.4 Turbo C V2.0的根本操作Return1.1 C語言的開展簡(jiǎn)史和特點(diǎn) 1語言的誕生與開展1在C語言誕生以前,系統(tǒng)軟件主要是用匯編語言編寫的

2、。由于匯編語言程序依賴于計(jì)算機(jī)硬件,其可讀性和可移植性都很差;但一般的高級(jí)語言又難以實(shí)現(xiàn)對(duì)計(jì)算機(jī)硬件的直接操作這正是匯編語言的優(yōu)勢(shì),于是人們盼望有一種兼有匯編語言和高級(jí)語言特性的新語言。2語言是貝爾實(shí)驗(yàn)室于70年代初研制出來的,后來又被屢次改進(jìn),并出現(xiàn)了多種版本。80年代初,美國國家標(biāo)準(zhǔn)化協(xié)會(huì)ANSI,根據(jù)語言問世以來各種版本對(duì)語言的開展和擴(kuò)充,制定了ANSI C標(biāo)準(zhǔn)1989年再次做了修訂。本書以ANSI C新標(biāo)準(zhǔn)來介紹。3目前,在微機(jī)上廣泛使用的語言編譯系統(tǒng)有Microsoft C、Turbo C 、Borland C等。雖然它們的根本局部都是相同的,但還是有一些差異, 所以請(qǐng)大家注意自己所

3、使用的編譯系統(tǒng)的特點(diǎn)和規(guī)定參閱相應(yīng)的手冊(cè)。本書選定的上機(jī)環(huán)境是TC V2.0DOS操作系統(tǒng)。 2C語言的特點(diǎn) C語言同時(shí)具有匯編語言和高級(jí)語言的優(yōu)勢(shì)。1語言簡(jiǎn)潔、緊湊,使用方便、靈活。 2運(yùn)算符極其豐富。3生成的目標(biāo)代碼質(zhì)量高,程序執(zhí)行效率高。4可移植性好較之匯編語言。5可以直接操縱硬件。 3. 在C語言中,除實(shí)現(xiàn)順序、選擇和循環(huán)三種根本結(jié)構(gòu)等的9條控制語句外,輸入輸出操作均由標(biāo)準(zhǔn)庫函數(shù)不是C語言的組成局部來實(shí)現(xiàn)。所以學(xué)習(xí)C語言,不僅要學(xué)習(xí)這9條控制語句和各種運(yùn)算符,而且要學(xué)習(xí)并掌握常用標(biāo)準(zhǔn)庫函數(shù)的使用。Return1.2 語言程序的結(jié)構(gòu)與書寫規(guī)那么1.2.1 語言程序的總體結(jié)構(gòu) 一個(gè)完整的語

4、言程序,是由一個(gè)main()函數(shù)又稱主函數(shù)和假設(shè)干個(gè)其它函數(shù)結(jié)合而成的,或僅由一個(gè)main()函數(shù)構(gòu)成。案例1.1 僅由main()函數(shù)構(gòu)成的語言程序。/*案例代碼文件名:AL1_1.C*/*功能:僅由main()函數(shù)構(gòu)成的語言程序例如*/main() printf(“This is a C program.n); 程序運(yùn)行結(jié)果: This is a C program. 程序演示案例1.2 由main()函數(shù)和1個(gè)其它函數(shù)max()構(gòu)成的語言程序。/*案例代碼文件名:AL1_2.C*/*功能:由main()函數(shù)和1個(gè)其它函數(shù)max()構(gòu)成的語言程序例如*/int max(int x, int

5、 y) return( xy ? x : y ); main() int num1,num2; printf(“Input the first integer number: ); scanf(“%d, &num1); printf(“Input the second integer number: ); scanf(“%d, &num2); printf(“max=%dn, max(num1, num2); 程序運(yùn)行情況: Input the first integer number:6 Input the second integer number:9 max=9 程序演示案例1.3 改寫

6、案例1.2,交換main()函數(shù)和max()函數(shù)的前后位置。源程序略。程序運(yùn)行情況: Input the first integer number:6 Input the second integer number:9 max=91.函數(shù)是語言程序的根本單位。main()函數(shù)的作用,相當(dāng)于其它高級(jí)語言中的主程序;其它函數(shù)的作用,相當(dāng)于子程序。2.C語言程序總是從main()函數(shù)開始執(zhí)行。一個(gè)語言程序,總是從main()函數(shù)開始執(zhí)行,而不管其在程序中的位置。當(dāng)主函數(shù)執(zhí)行完畢時(shí),亦即程序執(zhí)行完畢。習(xí)慣上,將主函數(shù)main()放在最前頭。 1.2.2 函數(shù)的一般結(jié)構(gòu) 任何函數(shù)包括主函數(shù)main()都

7、是由函數(shù)說明和函數(shù)體兩局部組成。其一般結(jié)構(gòu)如下: 函數(shù)類型 函數(shù)名(函數(shù)參數(shù)表) 函數(shù)說明局部 說明語句局部; 執(zhí)行語句局部; 函數(shù)體局部 1. 使用的語法符號(hào)約定 .方括號(hào)表示可選即可以指定,也可以缺省 省略號(hào)表示前面的項(xiàng)可以重復(fù) | 多含2中選1 2.函數(shù)說明 由函數(shù)類型可缺省、函數(shù)名和函數(shù)參數(shù)表三局部組成,其中函數(shù)參數(shù)表的格式為: 數(shù)據(jù)類型 形參, 數(shù)據(jù)類型 形參2例如,案例1.2中的函數(shù)max(),其函數(shù)說明各局部如圖1-1所示。 函數(shù)類型 函數(shù)名 函數(shù)參數(shù)表 int max ( int x , int y ) 圖1-1 函數(shù)說明局部結(jié)構(gòu)圖注意:在舊標(biāo)準(zhǔn)中,函數(shù)可以缺省參數(shù)表。3.函數(shù)

8、體在函數(shù)說明局部的下面、大括號(hào)必須配對(duì)使用內(nèi)的局部。函數(shù)體一般由說明語句和可執(zhí)行語句兩局部構(gòu)成:1說明語句局部說明語句局部由變量定義、自定義類型定義、自定義函數(shù)說明、外部變量說明等組成。 2可執(zhí)行語句 一般由假設(shè)干條可執(zhí)行語句構(gòu)成。圖1-2是案例1.2的main()函數(shù)體的示意圖。/*主函數(shù)main()*/main() int num1,num2; 變量定義局部 printf(“Input the first integer number: ); scanf(“%d, &num1); printf(“Input the second integer number: ); 可執(zhí)行語句局部 函數(shù)體

9、 scanf(“%d, &num2); printf(“max=%dn, max(num1, num2); 圖1-2 函數(shù)體結(jié)構(gòu)示意圖 4.說明1函數(shù)體中的變量定義語句,必須在所有可執(zhí)行語句之前。 下面程序中變量定義語句“int max;的位置是非法的:main() int x,y;/*變量定義語句:定義2個(gè)整型變量x、y*/ x=3; /*可執(zhí)行的賦值語句:將3賦值給變量x*/ y=6;/*可執(zhí)行的賦值語句:將6賦值給變量y*/ int max;/*變量定義語句:出現(xiàn)在可執(zhí)行的 賦值語句“x=3;和“ y=6;之后,非法!*/ max=xy?x:y; printf(“max=%dn,max)

10、; 解決方法很簡(jiǎn)單,請(qǐng)讀者自己思考。2如果不需要,也可以缺省變量定義語句。1.2.3 源程序書寫格式1.所有語句都必須以分號(hào)“;結(jié)束,函數(shù)的最后一個(gè)語句也不例外。2.程序行的書寫格式自由,既允許1行內(nèi)寫幾條語句,也允許1條語句分寫在幾行上。例如,案例1.2的主函數(shù)main(),也可改寫成如下所示的格式:main() int num1,num2; printf(“Input the first integer number: ); scanf(“%d, &num1); printf(“Input the second integer number: ); scanf(“%d, &num2); p

11、rintf(“max=%dn, max(num1, num2); 如果某條語句很長(zhǎng),一般需要將其分寫在幾行上。3.允許使用注釋。C語言的注釋格式為: /* */例如,在案例1.1和案例1.2中,以及本節(jié)其它局部給出的源程序中,但凡用“/*和“*/括起來的文字,都是注釋。1 “/*和“*/ 必須成對(duì)使用,且“/和“*、以及“*和“/之間不能有空格,否那么都出錯(cuò)。 技巧:為防止遺漏必須配對(duì)使用的符號(hào),例如注釋符號(hào)、函數(shù)體的起止標(biāo)識(shí)符花括號(hào)、圓括號(hào)等等,在輸入時(shí),可連續(xù)輸入這些起止標(biāo)識(shí)符,然后再在其中進(jìn)行插入來完成內(nèi)容的編輯。在起止標(biāo)識(shí)符嵌套時(shí),以及相距較遠(yuǎn)時(shí),這樣做更有必要。 2注釋的位置,可以單

12、占1行,也可以跟在語句的后面。 3如果1行寫不下,可另起1行繼續(xù)寫。 4注釋中允許使用漢字。在非中文操作系統(tǒng)下,看到的是一串亂碼,但不影響程序運(yùn)行。 Return1.3 C語言的語句和關(guān)鍵字 1.3.1 C語言的語句 與其它高級(jí)語言一樣,語言也是利用函數(shù)體中的可執(zhí)行語句,向計(jì)算機(jī)系統(tǒng)發(fā)出操作命令。按照語句功能或構(gòu)成的不同,可將語言的語句分為五類。1.控制語句控制語句完成一定的控制功能。語言只有條控制語句,又可細(xì)分為三種: 1選擇結(jié)構(gòu)控制語句 if()else, switch()2循環(huán)結(jié)構(gòu)控制語句 dowhile(), for(), while(), break, continue3其它控制語句

13、 goto, return 2. 函數(shù)調(diào)用語句 函數(shù)調(diào)用語句由一次函數(shù)調(diào)用加一個(gè)分號(hào)語句結(jié)束標(biāo)志構(gòu)成。例如,printf(This is a C function statement.);3. 表達(dá)式語句表達(dá)式語句由表達(dá)式后加一個(gè)分號(hào)構(gòu)成。最典型的表達(dá)式語句是,在賦值表達(dá)式后加一個(gè)分號(hào)構(gòu)成的賦值語句。例如,“num=5 是一個(gè)賦值表達(dá)式,而“num=5;卻是一個(gè)賦值語句。4. 空語句空語句僅由一個(gè)分號(hào)構(gòu)成。顯然,空語句什么操作也不執(zhí)行。 例如,下面就是一個(gè)空語句: ;5. 復(fù)合語句復(fù)合語句是由大括號(hào)括起來的一組也可以是1條語句構(gòu)成。例如: main() /*復(fù)合語句。注意:右括號(hào)后不需要分號(hào)。

14、*/ 復(fù)合語句的性質(zhì): 1在語法上和單一語句相同,即單一語句可以出現(xiàn)的地方,也可以使用復(fù)合語句。2復(fù)合語句可以嵌套,即復(fù)合語句中也可出現(xiàn)復(fù)合語句。 1.3.2 關(guān)鍵字 C語言的關(guān)鍵字共有32個(gè),根據(jù)關(guān)鍵字的作用,可分其為數(shù)據(jù)類型關(guān)鍵字、控制語句關(guān)鍵字、存儲(chǔ)類型關(guān)鍵字和其它關(guān)鍵字四類。 1數(shù)據(jù)類型關(guān)鍵字12個(gè):char, double, enum, float, int, long, short, signed, struct, union, unsigned, void 2控制語句關(guān)鍵字12個(gè):break, case, continue, default, do, else, for, got

15、o, if, return, switch, while 3存儲(chǔ)類型關(guān)鍵字4個(gè):auto, extern, register, static 4其它關(guān)鍵字4個(gè):const, sizeof, typedef, volatileReturn1.4 Turbo C V2.0的根本操作1.運(yùn)行一個(gè)語言程序的一般過程 2.TC的啟動(dòng)、退出與命令菜單 3.編輯并保存一個(gè)語言源程序 4.編譯、連接單個(gè)源程序文件 5.運(yùn)行與查看結(jié)果 6.編輯下一個(gè)新的源程序 Return1.運(yùn)行一個(gè)語言程序的一般過程 urbo 是一個(gè)集源程序編輯、編譯、連接、運(yùn)行與調(diào)試于一體、 用菜單驅(qū)動(dòng)的集成軟件環(huán)境。 運(yùn)行一個(gè)語言程序的

16、一般過程: 1啟動(dòng)TC,進(jìn)入TC集成環(huán)境。2編輯或修改源程序。3編譯。如果編譯成功,那么可進(jìn)行下一步操作;否那么,返回2修改源程序,再重新編譯,直至編譯成功。 4連接。如果連接成功,那么可進(jìn)行下一步操作;否那么,根據(jù)系統(tǒng)的錯(cuò)誤提示,進(jìn)行相應(yīng)修改,再重新連接,直至連接成功。5運(yùn)行。通過觀察程序運(yùn)行結(jié)果,驗(yàn)證程序的正確性。如果出現(xiàn)邏輯錯(cuò)誤,那么必須返回2修改源程序,再重新編譯、連接和運(yùn)行,直至程序正確。6退出TC集成環(huán)境,結(jié)束本次程序運(yùn)行。Return2.TC的啟動(dòng)、退出與命令菜單 1啟動(dòng)Turbo C: tc 畫面演示啟動(dòng)Turbo C后,其主菜單條橫向排列在屏幕頂端,并被激活,其中File主項(xiàng)

17、成為當(dāng)前項(xiàng)。 主菜單的下面,是Edit編輯窗口和Message消息窗口。兩個(gè)窗口中,頂端橫線為雙線顯示的,表示該窗口是活動(dòng)窗口。編輯窗口的頂端為狀態(tài)行,其中:Line 1 Col 1:顯示光標(biāo)所在的行號(hào)和列號(hào),即光標(biāo)位置。Insert:表示編輯狀態(tài)處于“插入。當(dāng)處于“改寫狀態(tài)時(shí),此處為空白。d: NONAME.C:顯示當(dāng)前正在編輯的文件名。顯示為“NONAME.C時(shí),表示用戶尚未給文件命名。屏幕底端是7個(gè)功能鍵的說明,以及Num Lock鍵的狀態(tài)顯示“NUM時(shí),表示處于“數(shù)字鍵狀態(tài);空白,表示“控制鍵狀態(tài)。 2命令菜單的使用 1按下功能鍵F10,激活主菜單。如果主菜單已經(jīng)被激活,那么直接轉(zhuǎn)下一

18、步。 2用左、右方向鍵移動(dòng)光帶,定位于需要的主項(xiàng)上,然后再按回車鍵,翻開其子菜單縱向排列。 3用上、下方向鍵移動(dòng)光帶,定位于需要的子項(xiàng)上,回車即可。執(zhí)行完選定的功能后,系統(tǒng)自動(dòng)關(guān)閉菜單。 注意:菜單激活后,又不使用,可再按F10Esc鍵關(guān)閉,返回原來狀態(tài)。 3退出Turbo C 退出TC有兩種方法: 1菜單法:File | Quit先選擇File主項(xiàng),再選擇并執(zhí)行Quit子項(xiàng) 2快捷鍵法:Alt+“X先按下Alt鍵并保持,再按字母鍵,然后同時(shí)放開Return3.編輯并保存一個(gè)語言源程序 1激活主菜單,選擇并執(zhí)行File | Load項(xiàng)快捷鍵鍵:F3。2在“Load File Name窗口,輸入

19、源程序文件名。文件名的輸入有兩種方法:直接輸入和選擇輸入。1直接輸入按照文件名的組成字符串,逐個(gè)字符輸入即可。如果是已經(jīng)存在的文件,系統(tǒng)就在編輯窗口顯示該文件的內(nèi)容,可供編輯、修改。如果是新文件,那么給出一個(gè)空白編輯窗口,可供輸入新的源程序。如果該文件不在當(dāng)前目錄下,那么需要冠以路徑名和或盤符。2選擇文件僅適用于已經(jīng)存在的源程序文件 空回車,翻開當(dāng)前目錄下、后綴為.的所有文件的文件名窗口。 用上、下、左、右方向鍵,將光帶定位于所需的文件名上。 按回車鍵。 3常用編輯操作 在編輯源程序過程中,隨時(shí)都可以按F2鍵或File | Save,將當(dāng)前編輯的文件存盤,然后繼續(xù)編輯。這是一個(gè)良好的習(xí)慣! 關(guān)

20、于在線幫助: 在任何窗口或狀態(tài)下,按F1鍵激活活動(dòng)窗口或狀態(tài)的在線幫助:下一頁P(yáng)ageDown,返回上一頁P(yáng)ageUp關(guān)閉在線幫助、返回原窗口或狀態(tài)Esc返回前一個(gè)在線幫助屏Alt+F1無論在線幫助是否被激活返回在線幫助索引F1:激活在線幫助后,再按F1,那么返回在線幫助索引,以便查詢其它類別在線幫助信息。查詢庫函數(shù)的在線幫助信息F1:將光標(biāo)移到需要查詢函數(shù)名的首字符上,然后鍵入F1,即可獲得該庫函數(shù)的在線幫助信息。 注:為簡(jiǎn)化描述,用“代表“Ctrl鍵。Fn就是Ctrl+Fn,下同。Return 4.編譯、連接單個(gè)源程序文件 選擇并執(zhí)行Compile | Make EXE File項(xiàng)快捷鍵:

21、F9,那么TC將自動(dòng)完成對(duì)當(dāng)前正在編輯的源程序文件的編譯、連接,并生成可執(zhí)行文件。 如果源程序有語法錯(cuò)誤,系統(tǒng)將在屏幕中央的“Compiling 編譯窗口底端提示“Error: Press any key錯(cuò)誤:按任意鍵。 此時(shí),按空格鍵,屏幕下端的“Message消息窗口被激活, 顯示出錯(cuò)或警告信息,光帶停在第一條消息上。這時(shí)“Edit編輯窗口中也有一條光帶,它總是停在編譯錯(cuò)誤在源代碼中的相應(yīng)位置。 注意:當(dāng)用上、下鍵移動(dòng)消息窗口中的光帶時(shí),編輯窗口中的光帶也隨之移動(dòng),始終跟蹤源代碼中的錯(cuò)誤位置!Return 5.運(yùn)行與查看結(jié)果 1運(yùn)行當(dāng)前正在編輯的源程序文件 選擇并執(zhí)行Run | Run項(xiàng)快

22、捷鍵:F9,程序運(yùn)行結(jié)束后, 仍返回到編輯窗口。 當(dāng)你認(rèn)為自己的源程序不會(huì)有編譯、連接錯(cuò)誤時(shí),也可直接運(yùn)行即跳過對(duì)源程序的編譯、連接步驟。這時(shí),TC將一次完成從編譯、連接到運(yùn)行的全過程。2查看運(yùn)行結(jié)果 選擇并執(zhí)行Run | User Screen項(xiàng)快捷鍵:Alt+F5。查看完畢后,按任一鍵返回編輯窗口。 如果發(fā)現(xiàn)邏輯錯(cuò)誤,那么可在返回編輯窗口后,進(jìn)行修改;然后再重新編譯、連接、運(yùn)行,直至正確為止。Return 6.編輯下一個(gè)新的源程序 選擇并執(zhí)行File | New項(xiàng)即可。 如果屏幕提示如下確認(rèn)信息: NONAME.C not saved. Save?Y/N 如果需要保存當(dāng)前正在編輯的源程序,

23、那么鍵入“,進(jìn)入下一步操作;否那么,鍵入“不保存,跳轉(zhuǎn)到2。1系統(tǒng)提示換名: NONAME.C直接輸入你給源程序文件起的名字即可。2系統(tǒng)給出一個(gè)空白的編輯窗口,可以開始編輯下一個(gè)新的源程序。Return 第2章 數(shù)據(jù)類型、運(yùn)算符與表達(dá)式2.1 程序設(shè)計(jì)概述2.2 C語言的數(shù)據(jù)類型2.3 常量和變量2.4 整型數(shù)據(jù)2.5 實(shí)型數(shù)據(jù)2.6 字符型數(shù)據(jù)2.7 算術(shù)運(yùn)算與算術(shù)表達(dá)式2.8 賦值運(yùn)算與賦值表達(dá)式2.9 C語言特有的運(yùn)算和運(yùn)算符Return2.1 程序設(shè)計(jì)概述一個(gè)程序應(yīng)包括對(duì)數(shù)據(jù)的描述和對(duì)數(shù)據(jù)處理的描述。 1對(duì)數(shù)據(jù)的描述,即數(shù)據(jù)結(jié)構(gòu)。數(shù)據(jù)結(jié)構(gòu)是計(jì)算機(jī)學(xué)科的核心課程之一,有許多專門著作論述,

24、本課程就不再贅述。 在C語言中,系統(tǒng)提供的數(shù)據(jù)結(jié)構(gòu),是以數(shù)據(jù)類型的形式出現(xiàn)的。 2對(duì)數(shù)據(jù)處理的描述,即計(jì)算機(jī)算法。算法是為解決一個(gè)問題而采取的方法和步驟,是程序的靈魂。為此,著名計(jì)算機(jī)科學(xué)家沃思Nikiklaus Wirth提出一個(gè)公式: 數(shù)據(jù)結(jié)構(gòu) + 算法 = 程序 實(shí)際上,一個(gè)程序除了數(shù)據(jù)結(jié)構(gòu)和算法外,還必須使用一種計(jì)算機(jī)語言,并采用結(jié)構(gòu)化方法來表示。 Return2.2 C語言的數(shù)據(jù)類型C語言提供的數(shù)據(jù)結(jié)構(gòu),是以數(shù)據(jù)類型形式出現(xiàn)的。具體分類如下:1.根本類型分為整型、實(shí)型又稱浮點(diǎn)型、字符型和枚舉型四種。2.構(gòu)造類型分為數(shù)組類型、結(jié)構(gòu)類型和共用類型三種。3.指針類型。在第9章中介紹。4.空

25、類型C語言中的數(shù)據(jù),有常量和變量之分,它們分別屬于上述這些類型。本章將介紹根本類型中的整型、實(shí)型和字符型三種數(shù)據(jù)。Return2.3 常量和變量2.3.1 常量 1.常量的概念 在程序運(yùn)行過程中,其值不能被改變的量稱為常量。 2.常量的分類 1整型常量2實(shí)型常量3字符常量。4符號(hào)常量。常量的類型,可通過書寫形式來判別。2.3.2 變量1.變量的概念在程序運(yùn)行過程中,其值可以被改變的量稱為變量。2.變量的兩個(gè)要素1變量名。每個(gè)變量都必須有一個(gè)名字變量名,變量命名遵循標(biāo)識(shí)符命名規(guī)那么。2變量值。在程序運(yùn)行過程中,變量值存儲(chǔ)在內(nèi)存中。在程序中,通過變量名來引用變量的值。.標(biāo)識(shí)符命名規(guī)那么1有效字符:

26、只能由字母、數(shù)字和下劃線組成,且以字母或下劃線開頭。2有效長(zhǎng)度:隨系統(tǒng)而異,但至少前個(gè)字符有效。如果超長(zhǎng),那么超長(zhǎng)局部被舍棄。例如,由于student_name和student_number的前個(gè)字符相同,有的系統(tǒng)認(rèn)為這兩個(gè)變量,是一回事而不加區(qū)別。在TC V2.0中,變量名標(biāo)識(shí)符的有效長(zhǎng)度為個(gè)字符,缺省值為。3C語言的關(guān)鍵字不能用作變量名。注意:C語言對(duì)英文字母的大小敏感,即同一字母的大小寫,被認(rèn)為是兩個(gè)不同的字符。習(xí)慣上,變量名和函數(shù)名中的英文字母用小寫,以增加可讀性。思考題:在C語言中,變量名total與變量名TOTAL、ToTaL、tOtAl等是同一個(gè)變量嗎?標(biāo)識(shí)符命名的良好習(xí)慣見名知

27、意:所謂“見名知意是指,通過變量名就知道變量值的含義。通常應(yīng)選擇能表示數(shù)據(jù)含義的英文單詞或縮寫作變量名,或漢語拼音字頭作變量名。例如,name/xm姓名、sex/xb性別、age/nl年齡、salary/gz工資。4.變量的定義與初始化在語言中,要求對(duì)所有用到的變量,必須先定義、后使用;且稱在定義變量的同時(shí)進(jìn)行賦初值的操作為變量初始化。1變量定義的一般格式 存儲(chǔ)類型 數(shù)據(jù)類型 變量名, 變量名2;例如,float radius, length, area; 2變量初始化的一般格式存儲(chǔ)類型 數(shù)據(jù)類型 變量名=初值, 變量名2=初值2;例如,float radius=2.5, length, ar

28、ea; Return2.4 整型數(shù)據(jù)2.4.1 整型變量 1.分類 根據(jù)占用內(nèi)存字節(jié)數(shù)的不同,整型變量又分為類:1根本整型類型關(guān)鍵字為int。2短整型類型關(guān)鍵字為short int。3長(zhǎng)整型類型關(guān)鍵字為long int。4無符號(hào)整型。無符號(hào)型又分為無符號(hào)根本整型unsigned int、無符號(hào)短整型unsigned short和無符號(hào)長(zhǎng)整型unsigned long三種,只能用來存儲(chǔ)無符號(hào)整數(shù)。2.占用內(nèi)存字節(jié)數(shù)與值域 上述各類型整型變量占用的內(nèi)存字節(jié)數(shù),隨系統(tǒng)而異。在16位操作系統(tǒng)中,一般用字節(jié)表示一個(gè)int型變量,且long型字節(jié)int型字節(jié)short型字節(jié)。顯然,不同類型的整型變量,其值

29、域不同。占用內(nèi)存字節(jié)數(shù)為n的有符號(hào)整型變量,其值域?yàn)椋?2n*8-12n*8-1-1;無符號(hào)整型變量的值域?yàn)椋?2n*8-1。 例如,PC機(jī)中的一個(gè)int型變量,其值域?yàn)?22*8-122*8-1-1,即-3276832767;一個(gè)unsigned型變量的值域?yàn)椋?22*8-1,即065535。 2.4.2 整型常量.三種表示形式整型常量即整常數(shù),在語言中可用三種形式表示:1十進(jìn)制。例如10、36。2八進(jìn)制以數(shù)字開頭。例如012。3十六進(jìn)制以數(shù)字+小寫字母x開頭。例如0 x36。.分類1根本整型。在16位機(jī)中,用2字節(jié)存儲(chǔ),其數(shù)據(jù)范圍與int型變量一樣。2長(zhǎng)整型在數(shù)值后面加“Ll。對(duì)超出根本整

30、型值域的整型常量,可使用長(zhǎng)整型常量表示,其取值范圍可達(dá)-。例如,123l、315等。.類型匹配規(guī)那么類型匹配規(guī)那么為:一個(gè)整型常量,可以賦給能容納下其值的整型變量。例如,其值在-的整型常量,可以賦給int型變量和long int型變量;其值在-的整型常量,就只能賦給long int型變量。 注意:常量無unsigned型。但一個(gè)非負(fù)整型常量,只要它的值不超過相應(yīng)變量的值域即取值范圍,也可以賦給unsigned型變量。Return2.5 實(shí)型數(shù)據(jù)2.5.1 實(shí)型變量 語言的實(shí)型變量,分為兩種: 1單精度型。類型關(guān)鍵字為float,一般占字節(jié)位、提供位有效數(shù)字。 2雙精度型。類型關(guān)鍵字為doubl

31、e,一般占個(gè)字節(jié)、提供1516位有效數(shù)字。2.5.2 實(shí)型常量 .表示形式實(shí)型常量即實(shí)數(shù),在語言中又稱浮點(diǎn)數(shù),其值有兩種表達(dá)形式: 1十進(jìn)制形式。例如3.14、9.8。 2指數(shù)形式:Ee。例如3.0+5等。 .關(guān)于類型 實(shí)型常量不分float型和double型。一個(gè)實(shí)型常量,可以賦給一個(gè)實(shí)型變量float型或double型。Return2.6 字符型數(shù)據(jù)2.6.1 字符常量1.字符常量的定義用一對(duì)單引號(hào)括起來的單個(gè)字符,稱為字符常量。例如,A、等。2.轉(zhuǎn)義字符語言還允許使用一種特殊形式的字符常量,就是以反斜杠“ 開頭的轉(zhuǎn)義字符。 注意:如果反斜杠或單引號(hào)本身作為字符常量,必須使用轉(zhuǎn)義字符:、。

32、案例2.1 用轉(zhuǎn)義字符輸出可打印字符和不可打印字符。 /*案例代碼文件名:AL2_1.C*/ /*程序功能:用轉(zhuǎn)義字符輸出可打印字符和不可打印字符*/main() printf(“x4Fx4Bx21n);/* 等價(jià)于printf(“OK!n); */ printf(“x15 xABn); 程序運(yùn)行結(jié)果如下: ! 程序演示 2.6.2 字符變量字符變量的類型關(guān)鍵字為char,一般占用1字節(jié)內(nèi)存單元。1.變量值的存儲(chǔ) 字符變量用來存儲(chǔ)字符常量。將一個(gè)字符常量存儲(chǔ)到一個(gè)字符變量中,實(shí)際上是將該字符的ASCII碼值無符號(hào)整數(shù)存儲(chǔ)到內(nèi)存單元中。例如,char ch1, ch2; /*定義兩個(gè)字符變量:c

33、h1,ch2*/ch1=a; ch2=b; /*給字符變量賦值*/2.特性字符數(shù)據(jù)在內(nèi)存中存儲(chǔ)的是字符的ASCII碼 一個(gè)無符號(hào)整數(shù),其形式與整數(shù)的存儲(chǔ)形式一樣如圖2-4所示,所以語言允許字符型數(shù)據(jù)與整型數(shù)據(jù)之間通用。1一個(gè)字符型數(shù)據(jù),既可以字符形式輸出,也可以整數(shù)形式輸出。 案例2.2 字符變量的字符形式輸出和整數(shù)形式輸出。 /*案例代碼文件名:AL2_2.C*/ /*程序功能:用字符形式和整數(shù)形式輸出字符變量*/ main() char ch1,ch2; ch1=a; ch2=b; printf(“ch1=%c,ch2=%cn,ch1,ch2); printf(“ch1=%d,ch2=%d

34、n,ch1,ch2); 程序運(yùn)行結(jié)果: ch1=a,ch2=b ch1=97,ch2=98 程序演示2允許對(duì)字符數(shù)據(jù)進(jìn)行算術(shù)運(yùn)算,此時(shí)就是對(duì)它們的ASCII碼值進(jìn)行算術(shù)運(yùn)算。 案例2.3 字符數(shù)據(jù)的算術(shù)運(yùn)算。 /*案例代碼文件名:AL2_3.C*/ /*程序功能:字符數(shù)據(jù)的算術(shù)運(yùn)算*/ main() char ch1,ch2; ch1=a; ch2=B; /*字母的大小寫轉(zhuǎn)換*/ printf(“ch1=%c,ch2=%cn,ch1-32,ch2+32); /*用字符形式輸出一個(gè)大于256的數(shù)值*/ printf(ch1+200=%dn, ch1+200); printf(ch1+200=%c

35、n, ch1+200); printf(ch1+256=%dn, ch1+256); printf(ch1+256=%cn, ch1+256); 程序運(yùn)行結(jié)果:ch1=A,ch2=bch1+200=297ch1+200=)ch1+256=353ch1+256=a 程序演示思考題:用字符形式輸出一個(gè)大于256的數(shù)值,會(huì)得到什么結(jié)果?2.6.3 字符串常量1.字符串常量的概念和字符串長(zhǎng)度字符串常量是用一對(duì)雙引號(hào)括起來的假設(shè)干字符序列。字符串中字符的個(gè)數(shù)稱為字符串長(zhǎng)度。長(zhǎng)度為0的字符串即一個(gè)字符都沒有的字符串稱為空串,表示為“ 一對(duì)緊連的雙引號(hào)。例如,“How do you do.、“Good mo

36、rning.等,都是字符串常量,其長(zhǎng)度分別為14和13空格也是一個(gè)字符。 如果反斜杠和雙引號(hào)作為字符串中的有效字符,那么必須使用轉(zhuǎn)義字符。例如:1C:msdosv6.22 C:msdosv6.22 2I say:Goodbye! I say:Goodbye!“2.字符串的存儲(chǔ)C語言規(guī)定:在存儲(chǔ)字符串常量時(shí),由系統(tǒng)在字符串的末尾自動(dòng)加一個(gè)0作為字符串的結(jié)束標(biāo)志。注意:在源程序中書寫字符串常量時(shí),不必加結(jié)束字符0,否那么畫蛇添足。 如果有一個(gè)字符串為“CHINA,那么它在內(nèi)存中的實(shí)際存儲(chǔ)如下所示:最后一個(gè)字符0是系統(tǒng)自動(dòng)加上的,它占用字節(jié)而非字節(jié)內(nèi)存空間。CHINA0綜上所述,字符常量A與字符串常

37、量A是兩回事:1定界符不同:字符常量使用單引號(hào),而字符串常量使用雙引號(hào);2長(zhǎng)度不同:字符常量的長(zhǎng)度固定為1,而字符串常量的長(zhǎng)度,可以是0,也可以是某個(gè)整數(shù);3存儲(chǔ)要求不同:字符常量存儲(chǔ)的是字符的ASCII碼值,而字符串常量,除了要存儲(chǔ)有效的字符外,還要存儲(chǔ)一個(gè)結(jié)束標(biāo)志0。Return2.7 算術(shù)運(yùn)算與算術(shù)表達(dá)式在語言中,除控制語句和輸入輸出函數(shù)外,其它所有根本操作都作為運(yùn)算符處理。 1.五種根本算術(shù)運(yùn)算符 +、-減法/取負(fù)、*、/、%求余數(shù)1關(guān)于除法運(yùn)算/C語言規(guī)定:兩個(gè)整數(shù)相除,其商為整數(shù),小數(shù)局部被舍棄。例如,5 / 2 = 2。 2關(guān)于求余數(shù)運(yùn)算要求兩側(cè)的操作數(shù)均為整型數(shù)據(jù),否那么出錯(cuò)。

38、 2.表達(dá)式和算術(shù)表達(dá)式1表達(dá)式的概念 用運(yùn)算符和括號(hào)將運(yùn)算對(duì)象常量、變量和函數(shù)等連接起來的、符合語言語法規(guī)那么的式子,稱為表達(dá)式。 單個(gè)常量、變量或函數(shù),可以看作是表達(dá)式的一種特例。將單個(gè)常量、變量或函數(shù)構(gòu)成的表達(dá)式稱為簡(jiǎn)單表達(dá)式,其它表達(dá)式稱之為復(fù)雜表達(dá)式。2算術(shù)表達(dá)式的概念表達(dá)式中的運(yùn)算符都是算術(shù)運(yùn)算符。例如,3 + 6 * 9、(x + y) / 2 - 1等,都是算術(shù)表達(dá)式。良好的源程序書寫習(xí)慣:在表達(dá)式中,在雙目運(yùn)算符的左右兩側(cè)各加一個(gè)空格,可增強(qiáng)程序的可讀性。請(qǐng)比較表達(dá)式“ (x + y) / 2 1與“(x+y)/21,您認(rèn)為哪個(gè)的可讀性更好一些?3.運(yùn)算符的優(yōu)先級(jí)與結(jié)合性1語

39、言規(guī)定了運(yùn)算符的優(yōu)先級(jí)和結(jié)合性。 所謂結(jié)合性是指,當(dāng)一個(gè)操作數(shù)兩側(cè)的運(yùn)算符具有相同的優(yōu)先級(jí)時(shí),該操作數(shù)是先與左邊的運(yùn)算符結(jié)合,還是先與右邊的運(yùn)算符結(jié)合。自左至右的結(jié)合方向,稱為左結(jié)合性。反之,稱為右結(jié)合性。結(jié)合性是語言的獨(dú)有概念。除單目運(yùn)算符、賦值運(yùn)算符和條件運(yùn)算符是右結(jié)合性外,其它運(yùn)算符都是左結(jié)合性。2表達(dá)式求值1按運(yùn)算符的優(yōu)先級(jí)上下次序執(zhí)行。例如,先乘除后加減。2如果在一個(gè)運(yùn)算對(duì)象或稱操作數(shù)兩側(cè)的運(yùn)算符的優(yōu)先級(jí)相同,那么按語言規(guī)定的結(jié)合方向結(jié)合性進(jìn)行。例如,算術(shù)運(yùn)算符的結(jié)合方向是“自左至右,即:在執(zhí)行“a b + c時(shí),變量b先與減號(hào)結(jié)合,執(zhí)行“a - b;然后再執(zhí)行加c的運(yùn)算。4.數(shù)據(jù)類

40、型轉(zhuǎn)換1 在語言中,整型、實(shí)型和字符型數(shù)據(jù)間可以混合運(yùn)算因?yàn)樽址麛?shù)據(jù)與整型數(shù)據(jù)可以通用。如果一個(gè)運(yùn)算符兩側(cè)的操作數(shù)的數(shù)據(jù)類型不同,那么系統(tǒng)按“先轉(zhuǎn)換、后運(yùn)算的原那么,首先將數(shù)據(jù)自動(dòng)轉(zhuǎn)換成同一類型,然后在同一類型數(shù)據(jù)間進(jìn)行運(yùn)算。轉(zhuǎn)換規(guī)那么如圖2-5所示。1橫向向左的箭頭,表示必須的轉(zhuǎn)換。char和short 型必須轉(zhuǎn)換成 int 型,float型必須轉(zhuǎn)換成double型。 2縱向向上的箭頭,表示不同類型的轉(zhuǎn)換方向。 例如,int型與double型數(shù)據(jù)進(jìn)行混合運(yùn)算,那么先將int型數(shù)據(jù)轉(zhuǎn)換成double型,然后在兩個(gè)同類型的數(shù)據(jù)間進(jìn)行運(yùn)算,結(jié)果為double型。 注意:箭頭方向只表示數(shù)據(jù)類型由低向

41、高轉(zhuǎn)換,不要理解為int型先轉(zhuǎn)換成unsigned型,再轉(zhuǎn)換成long型,最后轉(zhuǎn)換成double型。2除自動(dòng)轉(zhuǎn)換外,語言也允許強(qiáng)制轉(zhuǎn)換。數(shù)據(jù)類型強(qiáng)制轉(zhuǎn)換的一般格式為: (要轉(zhuǎn)換成的數(shù)據(jù)類型)(被轉(zhuǎn)換的表達(dá)式)當(dāng)被轉(zhuǎn)換的表達(dá)式是一個(gè)簡(jiǎn)單表達(dá)式時(shí),外面的一對(duì)圓括號(hào)可以缺省。例如,(double)a 等價(jià)于(double)(a) /*將變量a的值轉(zhuǎn)換成double型*/(int)(x + y) /*將x+y的結(jié)果轉(zhuǎn)換成int型*/(float)5 / 2等價(jià)于(float)(5)/2 /*將5轉(zhuǎn)換成實(shí)型,再除以2=2.5*/(float)(5 / 2) /*將5整除2的結(jié)果2轉(zhuǎn)換成實(shí)型2.0*/注意

42、:強(qiáng)制轉(zhuǎn)換類型得到的是一個(gè)所需類型的中間量,原表達(dá)式類型并不發(fā)生變化。例如,(double)a 只是將變量a的值轉(zhuǎn)換成一個(gè)double型的中間量,其數(shù)據(jù)類型并未轉(zhuǎn)換成double型。Return2.8 賦值運(yùn)算與賦值表達(dá)式 1.賦值運(yùn)算 賦值符號(hào)“=就是賦值運(yùn)算符,它的作用是將一個(gè)表達(dá)式的值賦給一個(gè)變量。 賦值運(yùn)算符的一般形式為: 變量 = 賦值表達(dá)式 例如,x = 5 y = (float)5 / 2 如果表達(dá)式值的類型,與被賦值變量的類型不一致,但都是數(shù)值型或字符型時(shí),系統(tǒng)自動(dòng)地將表達(dá)式的值轉(zhuǎn)換成被賦值變量的數(shù)據(jù)類型,然后再賦值給變量。 思考題:假設(shè)變量num的數(shù)據(jù)類型為float,其值為

43、2.5,那么執(zhí)行“num = (int)num后,num的值等于多少?2.復(fù)合賦值運(yùn)算復(fù)合賦值運(yùn)算符是由賦值運(yùn)算符之前再加一個(gè)雙目運(yùn)算符構(gòu)成的。復(fù)合賦值運(yùn)算的一般格式為: 變量 雙目運(yùn)算符 = 表達(dá)式 復(fù)合賦值運(yùn)算符它等價(jià)于:變量 = 變量 雙目運(yùn)算符 (表達(dá)式)。當(dāng)表達(dá)式為簡(jiǎn)單表達(dá)式時(shí),表達(dá)式外的一對(duì)圓括號(hào)才可缺省,否那么可能出錯(cuò)。例如,x += 3 /* 等價(jià)于x=x+3 */ y *= x + 6/* 等價(jià)于y=y*(x+6),而不是y=y*x+6 */C語言規(guī)定的10種復(fù)合賦值運(yùn)算符如下:+=,-=,*=,/=,%=; /*復(fù)合算術(shù)運(yùn)算符5個(gè)*/&=,=,|=,=;/*復(fù)合位運(yùn)算符5個(gè)

44、*/3.賦值表達(dá)式由賦值運(yùn)算符或復(fù)合賦值運(yùn)算符,將一個(gè)變量和一個(gè)表達(dá)式連接起來的表達(dá)式,稱為賦值表達(dá)式。1一般格式 變量 復(fù)合賦值運(yùn)算符 表達(dá)式2賦值表達(dá)式的值任何一個(gè)表達(dá)式都有一個(gè)值,賦值表達(dá)式也不例外。被賦值變量的值,就是賦值表達(dá)式的值。例如,“a = 5這個(gè)賦值表達(dá)式,變量a的值“就是它的值。Return2.9 C語言特有的運(yùn)算和運(yùn)算符2.9.1 自增+、自減-運(yùn)算 1.作用 自增運(yùn)算使單個(gè)變量的值增,自減運(yùn)算使單個(gè)變量的值減。 2.用法與運(yùn)算規(guī)那么 自增、自減運(yùn)算符都有兩種用法: 1前置運(yùn)算運(yùn)算符放在變量之前:變量、變量 先使變量的值增或減,然后再以變化后的值參與其它運(yùn)算,即先增減、后

45、運(yùn)算。 2后置運(yùn)算運(yùn)算符放在變量之后:變量、變量 變量先參與其它運(yùn)算,然后再使變量的值增或減,即先運(yùn)算、后增減。 案例2.4 自增、自減運(yùn)算符的用法與運(yùn)算規(guī)那么例如。/*案例代碼文件名:AL2_4.C*/*程序功能:自增、自減運(yùn)算符的用法與運(yùn)算規(guī)那么例如*/main() int x=6, y; printf(x=%dn,x); /*輸出x的初值*/ y = +x; /*前置運(yùn)算*/ printf(y=+x: x=%d,y=%dn,x,y); y = x-; /*后置運(yùn)算*/ printf(y=x-: x=%d,y=%dn,x,y); 程序運(yùn)行結(jié)果:x=6y=+x: x=7,y=7y=x-: x

46、=6,y=7 程序演示思考題:如果將案例“y=+x;語句中的前置運(yùn)算改為后置y=x+;,“y=x-;語句中的后置運(yùn)算改為前置y=-x;,程序運(yùn)行結(jié)果會(huì)如何?3.說明1自增、自減運(yùn)算,常用于循環(huán)語句中,使循環(huán)控制變量加或減,以及指針變量中,使指針指向下或上一個(gè)地址。2自增、自減運(yùn)算符,不能用于常量和表達(dá)式。例如,5+、-(a+b)等都是非法的。3在表達(dá)式中,連續(xù)使同一變量進(jìn)行自增或自減運(yùn)算時(shí),很容易出錯(cuò),所以最好防止這種用法。2.8.2 逗號(hào)運(yùn)算,及其表達(dá)式語言提供一種用逗號(hào)運(yùn)算符“,連接起來的式子,稱為逗號(hào)表達(dá)式。逗號(hào)運(yùn)算符又稱順序求值運(yùn)算符。1.一般形式 表達(dá)式, 表達(dá)式, , 表達(dá)式n2.

47、求解過程自左至右,依次計(jì)算各表達(dá)式的值,“表達(dá)式n 的值即為整個(gè)逗號(hào)表達(dá)式的值。例如,逗號(hào)表達(dá)式“a = 3 * 5, a * 4的值=60:先求解a = 3 * 5,得a=15;再求a * 4 = 60,所以逗號(hào)表達(dá)式的值=60。又例如,逗號(hào)表達(dá)式“(a = 3 * 5, a * 4), a + 5的值=20:先求解a = 3 * 5,得a=15;再求a * 4=60;最后求解a + 5=20,所以逗號(hào)表達(dá)式的值=20。注意:并不是任何地方出現(xiàn)的逗號(hào),都是逗號(hào)運(yùn)算符。很多情況下,逗號(hào)僅用作分隔符。Return第3章 順序結(jié)構(gòu)程序設(shè)計(jì)為了讓計(jì)算機(jī)處理各種數(shù)據(jù),首先就應(yīng)該把源數(shù)據(jù)輸入到計(jì)算機(jī)中;

48、計(jì)算機(jī)處理結(jié)束后,再將目標(biāo)數(shù)據(jù)信息以人能夠識(shí)別的方式輸出。C語言中的輸入輸出操作,是由C語言編譯系統(tǒng)提供的庫函數(shù)來實(shí)現(xiàn)。3.1 格式化輸出printf()函數(shù)3.2 格式化輸入scanf()函數(shù)3.3 單個(gè)字符輸入輸出getchar()和putchar()函數(shù)3.4 順序結(jié)構(gòu)程序設(shè)計(jì)良好的源程序書寫風(fēng)格順序程序段左對(duì)齊Return3.1 格式化輸出printf()函數(shù) printf()函數(shù)的作用:向計(jì)算機(jī)系統(tǒng)默認(rèn)的輸出設(shè)備一般指終端或顯示器輸出一個(gè)或多個(gè)任意類型的數(shù)據(jù)。3.1.1 printf()函數(shù)的一般格式案例3.1 圓半徑radius=1.5,求圓周長(zhǎng)和圓面積。/*案例代碼文件名:AL3

49、_1.C。*/main() float radius,length,area,pi=3.1415926; radius=1.5; length=2*pi*radius;/*求圓周長(zhǎng)*/ area=pi*radius*radius; /*求圓面積*/ printf(“radius=%fn,radius);/*輸出圓半徑*/ printf(“l(fā)ength=%7.2f,area=%7.2fn,length,area); /*輸出圓周長(zhǎng)、面積*/ 程序演示 程序運(yùn)行結(jié)果如下: radius=1.500000 length= 9.42,area= 7.07 printf()函數(shù)的一般格式如下:print

50、f(格式字符串 ,輸出項(xiàng)表); 1格式字符串?!案袷阶址卜Q“轉(zhuǎn)換控制字符串,可以包含三種字符: 1格式指示符。格式指示符的一般形式如下:%標(biāo)志寬度.精度F|N|h|L類型 常用的標(biāo)志字符如表3-1所示,常用的寬度指示符如表3-2所示,常用的精度指示符如表3-3所示,長(zhǎng)度修飾符如表3-4所示,類型轉(zhuǎn)換字符如表3-5所示。 2轉(zhuǎn)義字符 例如,案例3.1中printf()函數(shù)中的n就是轉(zhuǎn)義字符,輸出時(shí)產(chǎn)生一個(gè)“換行操作。 3普通字符除格式指示符和轉(zhuǎn)義字符之外的其它字符。格式字符串中的普通字符,原樣輸出。 例如,案例3.1中“printf(radius=%fn, radius);語句中的“radi

51、us=,“printf(length=%7.2f,area=%7.2fn, length,area);語句中的“l(fā)ength=、“area=等都是普通字符。 2輸出項(xiàng)表 輸出項(xiàng)表是可選的。如果要輸出的數(shù)據(jù)不止1個(gè),相鄰2個(gè)之間用逗號(hào)分開。下面的printf()函數(shù)都是合法的: 1printf(I am a student.n); 2printf(%d,3+2); 3printf(a=%f b=%5dn, a, a+3);必須強(qiáng)調(diào):“格式字符串中的格式指示符,必須與“輸出項(xiàng)表中、輸出項(xiàng)的數(shù)據(jù)類型一致,否那么會(huì)引起輸出錯(cuò)誤。 3.1.2 格式指示符 輸出不同類型的數(shù)據(jù),要使用不同的類型轉(zhuǎn)換字符。

52、1類型轉(zhuǎn)換字符d以帶符號(hào)的十進(jìn)制整數(shù)形式輸出。 案例3.2 類型轉(zhuǎn)換字符d的使用。/*案例代碼文件名:AL3_2.C。*/main() int num1=123; long num2=123456; /*用3種不同格式,輸出int型數(shù)據(jù)num1的值*/ printf(num1=%d,num1=%5d,num1=%-5d,num1=%2dn,num1,num1,num1,num1); /*用3種不同格式,輸出long型數(shù)據(jù)num2的值*/ printf(num2=%ld,num2=%8ld,num2=%5ldn,num2,num2,num2); printf(num1=%ldn,num1); 程

53、序演示程序運(yùn)行結(jié)果如下:num1=123,num1=123,num1=123,num1=123num2=123456,num2=123456,num2=123456num1=16908411對(duì)于整數(shù),還可用八進(jìn)制、無符號(hào)形式%o(小寫字母o)和十六進(jìn)制、無符號(hào)形式%x輸出。對(duì)于unsigned型數(shù)據(jù),也可用%u格式符,以十進(jìn)制、無符號(hào)形式輸出。所謂無符號(hào)形式是指,不管正數(shù)還是負(fù)數(shù),系統(tǒng)一律當(dāng)作無符號(hào)整數(shù)來輸出。例如,printf(%d,%o,%xn,-1,-1,-1); 2類型轉(zhuǎn)換字符f以小數(shù)形式、按系統(tǒng)默認(rèn)的寬度,輸出單精度和雙精度實(shí)數(shù)。案例3.3 類型轉(zhuǎn)換字符f的使用。/*案例代碼文件名:

54、AL3_3.C。*/main( )float f=123.456; double d1,d2; d2=2222222222222.222222222; printf(%f,%12f,%12.2f,%-12.2f,%.2fn,f,f,f,f,f); printf(d1+d2=%fn,d1+d2); 程序演示 程序運(yùn)行結(jié)果如下: 123.456001,123.456001,123.46,123.46,123.46 d1+d2=3333333333333.333010 本案例程序的輸出結(jié)果中,數(shù)據(jù)123.456001和3333333333333.333010中的001和010都是無意義的,因?yàn)樗鼈兂?/p>

55、出了有效數(shù)字的范圍。 對(duì)于實(shí)數(shù),也可使用格式符%e,以標(biāo)準(zhǔn)指數(shù)形式輸出:尾數(shù)中的整數(shù)局部大于等于1、小于10,小數(shù)點(diǎn)占一位,尾數(shù)中的小數(shù)局部占5位;指數(shù)局部占4位如e-03,其中e占一位,指數(shù)符號(hào)占一位,指數(shù)占2位,共計(jì)11位。 也可使用格式符%g,讓系統(tǒng)根據(jù)數(shù)值的大小,自動(dòng)選擇%f或%e格式、且不輸出無意義的零。3類型轉(zhuǎn)換字符c輸出一個(gè)字符只占一列寬度。案例3.4 類型轉(zhuǎn)換字符c的使用。/*案例代碼文件名:AL3_4.C。*/ main() char c=A; int i=65; printf(c=%c,%5c,%dn,c,c,c); printf(i=%d,%c,i,i); 程序運(yùn)行結(jié)果如

56、下: c=A,A,65 i=65,A程序演示 需要強(qiáng)調(diào)的是:在C語言中,整數(shù)可以用字符形式輸出,字符數(shù)據(jù)也可以用整數(shù)形式輸出。將整數(shù)用字符形式輸出時(shí),系統(tǒng)首先求該數(shù)與256的余數(shù),然后將余數(shù)作為ASCII碼,轉(zhuǎn)換成相應(yīng)的字符輸出。4類型轉(zhuǎn)換字符s輸出一個(gè)字符串。案例3.5 類型轉(zhuǎn)換字符s的使用。/*案例代碼文件名:AL3_10.C。*/ main() printf(%s,%5s,%-10s,Internet,Internet,Internet); printf(%10.5s,%-10.5s,%4.5sn,Internet,Internet,Internet); 程序演示程序運(yùn)行結(jié)果如下:Int

57、ernet,Internet,Internet,Inter,Inter,Inter注意:系統(tǒng)輸出字符和字符串時(shí),不輸出單引號(hào)和雙引號(hào)。 3.1.3 使用說明 1printf()可以輸出常量、變量和表達(dá)式的值。但格式控制中的格式說明符,必須按從左到右的順序,與輸出項(xiàng)表中的每個(gè)數(shù)據(jù)一一對(duì)應(yīng),否那么出錯(cuò)。 例如,printf(str=%s, f=%d, i=%fn, Internet, 1.0 / 2.0, 3 + 5, CHINA);是錯(cuò)誤的。 2格式字符x、e、g可以用小寫字母,也可以用大寫字母。使用大寫字母時(shí),輸出數(shù)據(jù)中包含的字母也大寫。除了x、e、g格式字符外,其它格式字符必須用小寫字母。

58、例如,%f不能寫成%F。 3格式字符緊跟在“%后面就作為格式字符,否那么將作為普通字符使用原樣輸出。 例如,“printf(c=%c, f=%fn“, c, f);中的第一個(gè)c和f,都是普通字符。Return3.2 格式化輸入scanf()函數(shù)scanf()函數(shù)是用來從外部輸入設(shè)備向計(jì)算機(jī)主機(jī)輸入數(shù)據(jù)的。 3.2.1 scanf()函數(shù)的一般格式 案例3.6 圓柱體的底半徑radius=1.5,高h(yuǎn)igh=2.0,求其體積。/*案例代碼文件名:AL3_6.C。*/main() float radius=1.5, high=2.0, pi=3.14159, vol; vol=pi*radius*

59、radius*high; /*求體積*/ printf(“vol=%7.2fn,vol);/*輸出求出的體積*/ 程序演示案例3.7 圓柱體的底半徑為radius,高為high,求其體積。/*案例代碼文件名:AL3_7.C。*/*功能:說明函數(shù)scanf()的格式及作用。*/main() float radius,high,vol,pi=3.1415926; printf(Please input radius & high: ); scanf(%f%f,&radius,&high);/*從鍵盤輸入兩個(gè)實(shí)數(shù)賦給變量r,h*/ vol=pi*radius*radius*high; printf(

60、radius=%7.2f, high=%7.2f, vol=%7.2fn,radius,high,vol); 程序演示程序運(yùn)行結(jié)果如下: Please input radius & high: 1.52.0 radius=1.50,high=2.00,vol=14.14 在程序中給計(jì)算機(jī)提供數(shù)據(jù),可以用賦值語句,也可以用輸入函數(shù)。在C語言中,可使用scanf()函數(shù),通過鍵盤輸入,給計(jì)算機(jī)同時(shí)提供多個(gè)、任意的數(shù)據(jù)。1. scanf()函數(shù)的一般格式scanf(格式字符串, 輸入項(xiàng)首地址表);1格式字符串。格式字符串可以包含3種類型的字符:格式指示符、空白字符空格、Tab鍵和回車鍵和非空白字符又

溫馨提示

  • 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)論