《C語言程序設(shè)計教程(第二版)》第二版全套電子課件完整版ppt整本書電子教案最全教學(xué)教程整套課件_第1頁
《C語言程序設(shè)計教程(第二版)》第二版全套電子課件完整版ppt整本書電子教案最全教學(xué)教程整套課件_第2頁
《C語言程序設(shè)計教程(第二版)》第二版全套電子課件完整版ppt整本書電子教案最全教學(xué)教程整套課件_第3頁
《C語言程序設(shè)計教程(第二版)》第二版全套電子課件完整版ppt整本書電子教案最全教學(xué)教程整套課件_第4頁
《C語言程序設(shè)計教程(第二版)》第二版全套電子課件完整版ppt整本書電子教案最全教學(xué)教程整套課件_第5頁
已閱讀5頁,還剩505頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、2022/7/6121世紀(jì)高職高專新概念教材C語言程序設(shè)計教程(第二版)2022/7/62第1章 語言概述教學(xué)目的:掌握C語言的程序結(jié)構(gòu),函數(shù)結(jié)構(gòu),源程序書寫規(guī)則,以及TC+3.0的基本操作。了解C語言的特點和語句。2022/7/63教學(xué)內(nèi)容:1.1 發(fā)展簡史和特點1.2* 程序結(jié)構(gòu)與函數(shù)結(jié)構(gòu)1.3* 源程序書寫規(guī)則1.4 C語言的語句1.5* TC+3.0基本操作本章要點2022/7/641.1 發(fā)展簡史和特點 1語言的誕生與發(fā)展貝爾實驗室于70年代初研制出來。80年代初,美國國家標(biāo)準(zhǔn)化協(xié)會(ANSI),制定了ANSI C標(biāo)準(zhǔn)(俗稱標(biāo)準(zhǔn)C),1989年再次做了修訂(稱新標(biāo)準(zhǔn)C) 。微機(jī)上廣泛

2、使用的語言編譯系統(tǒng)有MSC、TC 、BC:基本部分相同,但存在一些差異。本課程以ANSI C新標(biāo)準(zhǔn)來介紹,上機(jī)環(huán)境選擇TC +3.0。2022/7/652C語言的特點C語言兼有匯編和高級語言的優(yōu)點:(1) 匯編語言:可以直接操縱硬件。(2) 高級語言:可讀性和可移植性良好。返回2022/7/661.2* 程序結(jié)構(gòu)與函數(shù)結(jié)構(gòu)1.2.1 程序結(jié)構(gòu) 1最簡單的程序:僅由一個main( )函數(shù)(又稱主函數(shù))構(gòu)成。案例1.1 僅由main()函數(shù)構(gòu)成的語言程序。 #include “stdio.h”#include “conio.h”void main( ) printf(“This is a C pr

3、ogram.n”); getch(); 程序運(yùn)行結(jié)果:This is a C program. 2022/7/672一般化結(jié)構(gòu):由一個main()函數(shù)和若干個其它函數(shù)結(jié)合而成。案例1.2 由main()函數(shù)和1個max()函數(shù)構(gòu)成的語言程序。 #include “stdio.h”#include “conio.h”void main( ) int num1, num2; printf(“Input the first integer number: ”); scanf(“%d”, &num1); printf(“Input the second integer number: ”); scan

4、f(“%d”, &num2); printf(“max = %dn”, max(num1, num2); getch(); 2022/7/68int max( int x, int y) return( xy ? x : y ); 程序運(yùn)行情況: Input the first integer number: 6 Input the second integer number: 9 max = 92022/7/69案例1.3 交換案例1.2中main( )函數(shù)和max( )函數(shù)的位置。源程序略。程序運(yùn)行情況: Input the first integer number: 6 Input th

5、e second integer number: 9 max = 9思考:案例1.3說明了什么?2022/7/6103說明:函數(shù)是語言程序的基本構(gòu)成單位。(1)main()函數(shù): C語言程序總是從main( )函數(shù)開始執(zhí)行(不論其在程序中的位置),止于主函數(shù)結(jié)束。(2)其它函數(shù):通過被main( )函數(shù)直接或間接調(diào)用而執(zhí)行。習(xí)慣:將主函數(shù)main()放在最前頭。2022/7/611 1.2.2 函數(shù)結(jié)構(gòu) 任何函數(shù)(包括主函數(shù)main()都是由函數(shù)說明和函數(shù)體兩部分組成:函數(shù)類型 函數(shù)名( 函數(shù)參數(shù)表 ) 說明語句部分; 執(zhí)行語句部分; 函數(shù)說明函數(shù)體2022/7/6121語法符號約定 . 可選

6、(即可以指定,也可以缺省)前面的項可以重復(fù) | 多(含2)中選1 2022/7/6132函數(shù)說明:由函數(shù)類型(可缺省)、函數(shù)名和函數(shù)參數(shù)表(可缺省)組成。案例1.2中函數(shù)max()的函數(shù)說明如下: int max ( int x , int y )函數(shù)參數(shù)表的一般格式為:數(shù)據(jù)類型 形參,數(shù)據(jù)類型 形參2函數(shù)類型函數(shù)名函數(shù)參數(shù)表2022/7/6143函數(shù)體:在函數(shù)說明的下面、最外層1對大括號(必須配對使用)括起來的部分。案例1.2中main( )函數(shù)的函數(shù)體如下:void main( ) int num1, num2; printf(“Input the first integer number

7、: ”); scanf(“%d”, &num1); printf(“max = %dn”, max(num1, num2); 變量定義可執(zhí)行語句2022/7/615一般由兩部分構(gòu)成:(1)數(shù)據(jù)說明部分:由變量定義、自定義類型定義、自定義函數(shù)說明、外部變量說明等組成。(2)可執(zhí)行語句部分:一般由若干條可執(zhí)行語句構(gòu)成。注意:函數(shù)體中的變量定義語句,必須在所有可執(zhí)行語句之前。2022/7/616下面程序中 “int max;”的位置非法:#include “stdio.h”#include “conio.h”void main() int x , y;/*變量定義語句*/ x = 3; y = 6;

8、 /*可執(zhí)行的賦值語句*/ int max; max = x y ? x : y ; printf(“max = %dn”, max); getch(); 思考:如何解決?返回變量定義語句出現(xiàn)在可執(zhí)行的賦值語句之后2022/7/6171除字符串常量中的字符外,一律使用半角字符。例如,字母、數(shù)字、標(biāo)點符號等。2所有語句都必須以分號“;”結(jié)束,函數(shù)的最后一個語句也不例外。3允許1行內(nèi)寫幾條短語句,也允許將1條很長的語句分寫在幾行上。1.3* 源程序書寫規(guī)則2022/7/618案例1.2中的主函數(shù)main( ),也可寫成如下格式:void main() int num1, num2; printf(

9、“Input the first integer number: ”); scanf(“%d”, &num1); printf(“Input the second integer number: ”); scanf(“%d”, &num2); printf(“max=%dn”, max(num1, num2); 2022/7/619 4允許使用注釋: /* */(1) “/*”和“*/” 必須成對使用,且“/”和“*”、以及“*”和“/”之間不能有空格,否則都出錯。技巧:必須配對使用的符號(例如注釋符號、函數(shù)體的花括號、圓括號等等),可連續(xù)輸入這些起止標(biāo)識符,通過插入來完成內(nèi)容的編輯。2022

10、/7/620(2) 注釋可以單占1行,也可跟在語句的后面。(3) 如果1行寫不下,可另起1行繼續(xù)寫。(4)注釋中允許使用漢字。在非中文操作系統(tǒng)下,看到的是一串亂碼,但不影響程序運(yùn)行。 返回2022/7/6211.4 C語言的語句按照語句功能(或構(gòu)成)的不同,將語言的語句分為五類。1. 控制語句(條,為三種)(1) 選擇結(jié)構(gòu)控制語句:if( ), switch( )(2)循環(huán)結(jié)構(gòu)控制語句:dowhile() , for(), while( ) , break , continue(3) 其它控制語句:goto , return2022/7/622 2. 函數(shù)調(diào)用語句由一次函數(shù)調(diào)用加一個分號(語句

11、結(jié)束標(biāo)志)構(gòu)成。例如,printf(This is a C function statement.) ;3. 表達(dá)式語句由表達(dá)式后加一個分號構(gòu)成。最典型的是賦值語句:num = 5 ;/*賦值語句*/4. 空語句僅由一個分號構(gòu)成。例如: ;2022/7/6235. 復(fù)合語句由大括號括起來的若干條語句構(gòu)成。main() /*右括號后不需要分號!*/ 復(fù)合語句的性質(zhì): (1)在語法上和單一語句相同,即單一語句可以出現(xiàn)的地方,也可以使用復(fù)合語句。(2)允許嵌套,即復(fù)合語句中也可出現(xiàn)復(fù)合語句。2022/7/624C語言的控制語句9條:用于實現(xiàn)選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)和其它控制。輸入輸出(I/O)操作,均由標(biāo)

12、準(zhǔn)庫函數(shù)來實現(xiàn)。所以學(xué)習(xí)C語言,不僅要學(xué)習(xí)這9條控制語句,而且要學(xué)習(xí)并掌握常用標(biāo)準(zhǔn)庫函數(shù)的使用。返回不是C語言的組成部分2022/7/6251.5* TC+3.0的基本操作1. 運(yùn)行一個語言程序的一般過程 2. TC+的啟動、退出與命令菜單 3. 選擇工作目錄4. 新建一個語言源程序 5. 編譯、連接、運(yùn)行、查看結(jié)果 、新建下一個返回2022/7/6261. 運(yùn)行一個語言程序的一般過程 TC+是一個集源程序編輯、編譯、連接、運(yùn)行與調(diào)試于一體、 用菜單驅(qū)動的集成開發(fā)環(huán)境。(1) 啟動TC,進(jìn)入TC集成開發(fā)環(huán)境。(2) 選擇工作目錄 存放用戶文件的目錄。(3) 新建 (或編輯)源程序。(4) 編譯

13、。成功,轉(zhuǎn)下一步;失敗,返回(3) 。2022/7/627(5)連接。成功,轉(zhuǎn)下一步;失敗,根據(jù)系統(tǒng)的錯誤提示,進(jìn)行相應(yīng)修改,再重新連接。(6)運(yùn)行。如果出現(xiàn)邏輯錯誤,則返回(3),重新修改源程序,再編譯、連接和運(yùn)行。(7)退出TC集成環(huán)境,結(jié)束本次程序運(yùn)行。返回2022/7/6282. TC+的啟動、退出與命令菜單 (1)啟動Turbo C + : 雙擊桌面圖標(biāo) 雙擊主程序文件名TC.EXE (在TC+3.0下的文件夾BIN中)。首次啟動TC+的初始畫面如圖1-3所示:2022/7/629(2)命令菜單的使用鼠標(biāo) / 鍵盤:F10激活,F(xiàn)10Esc關(guān)閉。(3)退出Turbo C 菜單法:Fi

14、le | Quit 快捷鍵法:Alt + X (先按下Alt鍵并保持,再按字母鍵,然后同時放開)返回2022/7/6303選擇工作目錄 存放用戶文件的目錄。選擇并執(zhí)行File | Change Dir.項,系統(tǒng)彈出一個“Change Directory”窗口,如圖1-4所示:在“Directory Name”下的文本框中輸入工作目錄,或者在“Directory Tree”下的目錄樹中選擇工作目錄(C:TC30CASE),然后單擊“OK”按鈕。返回2022/7/6314. 新建一個語言源程序 (File | New)選擇并執(zhí)行File | New項,系統(tǒng)給出一個空白編輯窗口,如圖1-5所示:20

15、22/7/632常用編輯操作:F2鍵(或File | Save)將當(dāng)前編輯的文件存盤,然后繼續(xù)編輯。這是一個良好的習(xí)慣!F1鍵激活活動窗口(或狀態(tài))的在線幫助,Esc返回原窗口(或狀態(tài))。F1查詢庫函數(shù)的在線幫助信息:將光標(biāo)移到需要查詢函數(shù)名的首字符上,然后鍵入F1即可。返回 Ctrl2022/7/6335. 編譯、連接、運(yùn)行單個源程序文件 :F9 / Run | Run6. 查看結(jié)果: Alt+F5 / Windows | User Screen 7. 新建下一個源程序:File | New。返回2022/7/634本 章 要 點1、C語言有多種版本,本課程以ANSI C新標(biāo)準(zhǔn)為藍(lán)本介紹 。

16、2、C語言的特點:兼有匯編和高級語言的優(yōu)點。3、C語言程序的一般結(jié)構(gòu)由一個main()函數(shù)和若干個其它函數(shù)結(jié)合而成。2022/7/6354、C語言函數(shù)的結(jié)構(gòu)函數(shù)類型 函數(shù)名(函數(shù)參數(shù)表) 函數(shù)說明 說明語句部分; 執(zhí)行語句部分; 函數(shù)體 2022/7/6365、源程序書寫規(guī)則(1) 除字符串常量中的字符外,一律使用半角字符。(2) 所有語句必須以分號“ ;”結(jié)束;(3) 注釋: /* */。2022/7/6376、TC的基本操作(1) 啟動、退出與命令菜單 (2) 新建(或編輯)(3) 編譯、連接、運(yùn)行(4) 查看結(jié)果返回2022/7/638 第2章 數(shù)據(jù)類型、運(yùn)算與表達(dá)式教學(xué)目的:掌握變量命

17、名規(guī)則與定義、整型數(shù)據(jù)值域、字符(串)常量的表達(dá)與存儲,賦值運(yùn)算以及運(yùn)算符的結(jié)合性;了解常量及其表達(dá)、實型數(shù)據(jù)分類,自增、自減運(yùn)算等 。2022/7/639教學(xué)內(nèi)容:2.1 程序設(shè)計概述2.2 數(shù)據(jù)類型2.3* 常量和變量2.4* 整型數(shù)據(jù)2.5 實型數(shù)據(jù)2.6* 字符型數(shù)據(jù)2.7 算術(shù)運(yùn)算與算術(shù)表達(dá)式2.8* 賦值運(yùn)算與賦值表達(dá)式2.9 自增、自減與逗號運(yùn)算簡介本章要點本章作業(yè)與上機(jī)實踐2022/7/6402.1 程序設(shè)計概述一個程序應(yīng)包括對數(shù)據(jù)的描述和對數(shù)據(jù)處理的描述。1對數(shù)據(jù)的描述數(shù)據(jù)結(jié)構(gòu)C語言提供的數(shù)據(jù)結(jié)構(gòu),以數(shù)據(jù)類型的形式出現(xiàn)。2022/7/6412對數(shù)據(jù)處理的描述算法著名計算機(jī)科學(xué)

18、家沃思提出一個經(jīng)典公式: 數(shù)據(jù)結(jié)構(gòu) + 算法 = 程序在軟件工程中,除了數(shù)據(jù)結(jié)構(gòu)和算法外,還必須編制相關(guān)文檔。 返回2022/7/6422.2 數(shù)據(jù)類型C語言提供的數(shù)據(jù)結(jié)構(gòu),以數(shù)據(jù)類型形式出現(xiàn)。常用的有以下3類6種:1. 基本類型:整型、實型(浮點型)、字符型等。2. 構(gòu)造類型:數(shù)組、結(jié)構(gòu)類型等。3. 指針類型。C語言中的數(shù)據(jù),有常量和變量之分,它們分別屬于某種數(shù)據(jù)類型。返回2022/7/6432.3* 常量和變量2.3.1 常量1. 概念在程序運(yùn)行過程中,其值不能被改變的量。2. 分類(通過書寫形式來判別)(1)整型常量:1,7,12(2)實型常量:3.14,9.80(3)字符(串)常量:a

19、,1 / ”ABC”,”中國北京”(4)符號常量:PI(3.14)。2022/7/6442.3.2* 變量1. 概念在程序運(yùn)行過程中,其值可以被改變的量。2. 兩個要素(1)變量名:每個變量都必須有一個名字,變量命名遵循標(biāo)識符命名規(guī)則。(2)變量值:在程序運(yùn)行過程中,變量值存儲在內(nèi)存中。在程序中,通過變量名來引用。2022/7/645. 標(biāo)識符命名規(guī)則(1)有效字符:只能由大寫字母、小寫字母、數(shù)字和下劃線組成,且以字母或下劃線開頭。注意:在C語言中,同一字母的大小寫,被認(rèn)為是兩個不同的字符。關(guān)鍵字中,除個別外,絕大多數(shù)也是如此。思考:在C語言中,變量名total與TOTAL、ToTaL、tOt

20、Al等是同一個變量嗎?2022/7/646(2) 有效長度:隨系統(tǒng)而異;但,超長部分被舍棄。思考:假設(shè)某系統(tǒng)標(biāo)識符的有效長度為8,則student_name和student_number是一回事嗎?(3) C語言的關(guān)鍵字不能用作標(biāo)識符名。2022/7/6474. 標(biāo)識符命名的軟件工程要求見名知義所謂“見名知義”是指,通過標(biāo)識符名就知道標(biāo)識符所代表的含義。方法:英文單詞(或縮寫) ,或漢語拼音字頭。例如,name/xm(姓名)、sex/xb(性別)、age/nl(年齡)、salary/gz(工資)。比較:a、b、c、d與上述4個變量名的可讀性?2022/7/6485. 變量的定義與初始化在語言中

21、,變量必須先定義、后使用。變量初始化定義變量的同時賦初值的操作。 存儲類型 數(shù)據(jù)類型 變量名=初值,變量名2=初值2;例如,float radius, length, area ;例如,float radius = 2.5 ; 返回2022/7/6492.4* 整型數(shù)據(jù)2.4.1* 整型變量1分類根據(jù)占用內(nèi)存字節(jié)數(shù)的不同,分為4種。常用的有:(1) 基本整型(int)(簡稱為整型)(2) 長整型(long int)一般:long型(字節(jié)) int型(字節(jié)) 。2022/7/6502值域可使用sizeof( 類型|變量 )運(yùn)算符,求得某種整型(變量)占用的內(nèi)存字節(jié)數(shù)n 。其值域如下: 有符號整型

22、變量的值域為:-2n*8-1 ( 2n*8-1 - 1); 無符號整型變量的值域為:0 ( 2n*8 1 )。例如,在16位系統(tǒng)(如IBM-PC)中, sizeof( int ) = 2,即int變量占用字節(jié),其值域為-22*8-1(22*8-1-1),即-32768 32767。2022/7/651思考:假設(shè)被處理數(shù)據(jù)的取值范圍為-1000至+100,000的整數(shù),那么對應(yīng)的變量應(yīng)定義為什么類型?2022/7/6522.4.2 整型常量1表示形式三種(十、八、十六進(jìn)制),最常用的是十進(jìn)制:10,36。2022/7/6532分類(1)基本整型:在16位機(jī)中,用2字節(jié)存儲,其值域與int變量一樣

23、。(2)長整型(在數(shù)值后面加“L|l”)對超出int型值域的整型常量,應(yīng)使用長整型常量表示。例如,long n = 100000L;2022/7/6543賦值規(guī)則一個整型常量,可以賦給值域它的整型變量,即:基本整型常量 int、long型變量;長整型常量 long 型變量。返回2022/7/6552.5 實型數(shù)據(jù)2.5.1 實型變量分類1單精度型(float):一般占字節(jié)(32位) 。2雙精度型(double):一般占8個字節(jié)。2022/7/6562.5.2 實型常量實型常量即實數(shù)(浮點數(shù)),有兩種表達(dá)形式:(1)十進(jìn)制小數(shù)形式:3.14,9.8。 (2)指數(shù)形式:尾數(shù) E(e) 整型指數(shù)。例

24、如,3.0+5。實型常量不分float型和double型,可以賦給一個實型變量(float或double型)。返回2022/7/6572.6* 字符數(shù)據(jù)2.6.1 字符常量1. 定義用一對單引號括起來的單個字符。例如,A、等。2. 轉(zhuǎn)義字符以反斜杠“ ”開頭的字符常量。常用轉(zhuǎn)義字符參見表2-1,最常用的是n。注意:如果反斜杠或單引號本身作為字符常量,必須使用轉(zhuǎn)義字符:、。2022/7/6582.6.2 字符變量(char) 一般占用1字節(jié)內(nèi)存單元,用于存儲字符常量。1變量值的存儲將一個字符常量存儲到一個字符變量中,實際上是將該字符的ASCII碼值 (無符號整數(shù))存儲到內(nèi)存單元中。例如:char

25、 ch1= a ; /*給字符變量賦值*/2022/7/6592特性字符數(shù)據(jù)與整型數(shù)據(jù)之間通用因為字符數(shù)據(jù)在內(nèi)存中存儲,與整數(shù)一樣:A: 0100000165:00000000, 01000001具體:(1) 輸出:字符 + 整數(shù)(ASCII碼值)(2) 允許參與算術(shù)運(yùn)算(ASCII碼值)2022/7/6602.6.3 (字符)串常量1用一對雙引號括起來的若干字符稱為(字符)串常量。2字符串中的字符個數(shù)稱為字符串長度(簡稱串長)。例如, “Good morning.”、“A”、 “ ” (一對緊連的雙引號) ,串長分別為13 (空格也是一個字符) 、1和0(長度為0的字符串稱為空串)。2022

26、/7/661注意:如果反斜杠和雙引號作為字符串中的有效字符,則必須使用轉(zhuǎn)義字符。例如:C:msdosv6.22 C:msdosv6.22I say:Goodbye! I say:Goodbye! 2022/7/6623串常量的存儲由系統(tǒng)在字符串的末尾自動添加一個0作為字符串的結(jié)束標(biāo)志。例如,字符串“CHINA”,在內(nèi)存中的實際存儲如下:CHINA0返回2022/7/6632.7 算術(shù)運(yùn)算與算術(shù)表達(dá)式1. 算術(shù)運(yùn)算符+、-(減法/取負(fù))、*、/、%(求余數(shù))C語言規(guī)定:兩個整數(shù)相除,其商為整數(shù),小數(shù)部分被舍棄。例如,5 / 2 = 2,-5 / 2 = -2。2022/7/6642. 表達(dá)式和算

27、術(shù)表達(dá)式(1)表達(dá)式用運(yùn)算符和括號,將運(yùn)算對象(常量、變量和函數(shù)等)連接起來的、符合語言語法規(guī)則的式子。例如, ( x + y ) / 2 1。(2)算術(shù)表達(dá)式表達(dá)式中的運(yùn)算符都是算術(shù)運(yùn)算符。例如,3 + 6 * 9。2022/7/6653求表達(dá)式的值(1)優(yōu)先級:高低。例如,先乘除后加減: a b * c。(2)如果某個操作數(shù)兩側(cè)運(yùn)算符的優(yōu)先級相同,則按結(jié)合性進(jìn)行: 左結(jié)合性(先左后右的結(jié)合方向)運(yùn)算符:操作數(shù)先與左邊的運(yùn)算符結(jié)合。例如, 1 - 2 + 3:先執(zhí)行“1 - 2”,再“+ 3” 。2022/7/666 右結(jié)合性(先右后左的結(jié)合方向)運(yùn)算符:操作數(shù)先與右邊的運(yùn)算符結(jié)合。例如,

28、a = b = 1:先執(zhí)行“b = 1”,再執(zhí)行“a = (b = 1)” 。說明:除單目、賦值和條件運(yùn)算符是右結(jié)合性外,其它運(yùn)算符都是左結(jié)合性。詳見附錄B。2022/7/6674. 數(shù)據(jù)類型轉(zhuǎn)換(1) 不同類型數(shù)據(jù)間混合運(yùn)算時,系統(tǒng)“先轉(zhuǎn)換、后運(yùn)算”先將數(shù)據(jù)自動轉(zhuǎn)換成同一類型,然后再運(yùn)算。轉(zhuǎn)換規(guī)則如圖2-5所示:1) 必須的轉(zhuǎn)換。2) 不同類型的轉(zhuǎn)換方向。例如,int型與double型混合運(yùn)算,則int型double型,結(jié)果為double型。2022/7/668(2) 語言也允許強(qiáng)制轉(zhuǎn)換: (目標(biāo)數(shù)據(jù)類型) ( 被轉(zhuǎn)換表達(dá)式 )(double) (a) / (double) a(float)

29、5 / 2 = ?(float)(5 / 2) = ?注意:原表達(dá)式類型并不發(fā)生變化。例如,(double)a。返回單個對象時,括號可缺省2022/7/6692.8* 賦值運(yùn)算與賦值表達(dá)式1. 賦值運(yùn)算 變量 = 表達(dá)式 例如,x = 5,y = (float)5 / 2 注意:如果“表達(dá)式”類型與變量不一致,則系統(tǒng)將“表達(dá)式” 的值轉(zhuǎn)換成變量的數(shù)據(jù)類型,再賦值。思考:假設(shè)有“float num=2.5;”,則執(zhí)行“num = (int)num”后,num的值等于多少?賦值運(yùn)算符2022/7/6702. 復(fù)合賦值運(yùn)算 變量 雙目運(yùn)算符 = 表達(dá)式 變量 = 變量 雙目運(yùn)算符 ( 表達(dá)式 )例如

30、:x += 3 x = x + 3y *= x + 6y = y * ( x + 6 ) /*不是y = y * x + 6*/單個對象時,圓括號才可缺省,否則可能出錯。2022/7/6713. 賦值表達(dá)式由(復(fù)合)賦值運(yùn)算符,將一個變量和一個表達(dá)式連接起來的表達(dá)式。(1)一般格式:變量 (復(fù)合)賦值運(yùn)算符 表達(dá)式(2)賦值表達(dá)式的值被賦值變量的值,就是賦值表達(dá)式的值。例如,賦值表達(dá)式“a = 5”,變量a的值“”就是賦值表達(dá)式的值。返回2022/7/6722.9 自增、自減與逗號運(yùn)算2.9.1 自增(+)、自減(-)運(yùn)算1. 作用:使單個變量的值增(+ +) 、減(-)。2. 用法及其運(yùn)算規(guī)

31、則2022/7/673(1)前置運(yùn)算 + +變量、-變量運(yùn)算規(guī)則:先增減、后運(yùn)算,即先使變量的值增(減),然后再以變化后的值參與其它運(yùn)算。例如:num1 = + num2; num2 = num2+1;/*先增減*/ num1 = num2;/*后運(yùn)算*/2022/7/674(2)后置運(yùn)算變量+ +、變量-運(yùn)算規(guī)則:先運(yùn)算、后增減,即變量先參與其它運(yùn)算,然后再使變量的值增(減)。例如:num1 = num2-; num1 = num2;/*先運(yùn)算*/ num2 = num2 1;/*后增減*/注:自增/減單獨運(yùn)算時,前置與后置等價。num+; + num; num-; - num;2022/7

32、/675案例2.4自增、自減運(yùn)算的用法與運(yùn)算規(guī)則示例。 #include “stdio.h”#include “conio.h”void main() int x = 6, y; printf(x = %dn, 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); getch(); 程序運(yùn)行結(jié)果:2022/7/676x = 6y = +x: x = 7, y = 7y = x-: x = 6, y = 7思考:如果將“y

33、= +x;” 改為“y = x+;”,“y = x-;” 改為“y = -x;”,程序運(yùn)行結(jié)果會如何?注意:自增、自減運(yùn)算符,只能用于單個變量,不能用于常量和表達(dá)式。例如,5+、-(a+b)等都是非法的。2022/7/6772.9.2 逗號運(yùn)算(,)及其表達(dá)式1.一般形式:表達(dá)式1, 表達(dá)式2, , 表達(dá)式n2.求解過程:自左至右,依次計算各表達(dá)式的值,最后1個 “表達(dá)式n” 的值即為整個逗號表達(dá)式的值。例如:(1) a = 3 * 5, a * 4 :?(2) (a = 3 * 5, a * 4), a + 5 :?2022/7/678(1) a = 3 * 5, a * 4 :先求解a =

34、 3 * 5,得a=15;再求a * 4 = 60,所以逗號表達(dá)式的值=60。(2) (a = 3 * 5, a * 4), a + 5 :先求解a = 3 * 5,得a=15;再求a * 4=60;最后求解a + 5=20,所以逗號表達(dá)式的值=20。返回2022/7/679本 章 要 點標(biāo)識符命名規(guī)則:有效字符、有效長度+關(guān)鍵字英文字母大小寫敏感,見名知義整型變量:不同類型整型變量,占用的內(nèi)存字節(jié)數(shù)不同,其值域不同。2022/7/680字符型數(shù)據(jù):字符常量:單引號,單個字符;轉(zhuǎn)義字符:反斜杠“ ”,反斜杠和單引號本身:,。字符變量:1B,ASCII碼值。字符串常量:雙引號,若干字符;存儲時,

35、系統(tǒng)自動在串尾添加一個0 。2022/7/681運(yùn)算整數(shù)相除:商為整數(shù)。賦值表達(dá)式的值:被賦值變量的值。前置運(yùn)算規(guī)則:先增減、后運(yùn)算后置運(yùn)算規(guī)則:先運(yùn)算、后增減返回2022/7/682本章作業(yè)與上機(jī)實踐作業(yè):1,3,4,6上機(jī)實踐: (1)掌握TC+下開發(fā)C語言程序的基本操作。 (2)自己設(shè)計方案,驗證作業(yè)6。 (3)自己設(shè)計方案,找出用字符形式輸出一個256的數(shù)值,會得到什么結(jié)果?返回2022/7/683第3章 順序結(jié)構(gòu)程序設(shè)計數(shù)據(jù)處理的一般過程是:輸入 處理 輸出。在C語言中,輸入輸出操作是由編譯系統(tǒng)提供的庫函數(shù)來實現(xiàn)。教學(xué)目的:掌握printf() 、scanf()函數(shù),以及順序結(jié)構(gòu)程序

36、設(shè)計。2022/7/684教學(xué)內(nèi)容:3.1* 格式化輸出printf()函數(shù)3.2* 格式化輸入scanf()函數(shù)3.3 順序結(jié)構(gòu)程序設(shè)計本章要點本章作業(yè)與上機(jī)實踐2022/7/6853.1* 格式化輸出printf()函數(shù)3.1.1 printf()函數(shù)的一般格式 案例3.1 已知圓半徑radius=1.5,求圓周長(2r)和圓面積(r2) 。2022/7/686#include “stdio.h”#include “conio.h”void main( ) float radius = 1.5, length, area, pi=3.14; length = 2 * pi * radius

37、; area = pi * radius * radius; printf(“radius = %fn”, radius); printf(“l(fā)ength = %7.2f, area=%7.2fn”, length, area); getch(); radius = 1.500000length = 9.42, area = 7.072022/7/687printf()函數(shù)的一般格式: printf(格式字符串 ,輸出項表);1格式字符串(1)格式指示符: %標(biāo)志寬度.精度F|N|h|L類型例如,%7.2f。各類常用指示符,參見表3-1至表3-5。2022/7/688在表3-1中,最常用的標(biāo)志

38、字符是“-” :左對齊,右端補(bǔ)空格。缺省時為右對齊,左端補(bǔ)空格。在表3-2中,最常用寬度字符“n”:指定輸出域的寬度。若超長,則按實際寬度輸出;若不足,則補(bǔ)空格。在表3-3中,最常用精度字符“ .n”:指定保留的小數(shù)位數(shù)(實數(shù),超長則4舍5入),或截取左起的前n個字符(字符串)。在表3-4中,最常用的長度字符“l(fā)”:長整型。2022/7/689在表3-5 中,最常用的數(shù)據(jù)類型轉(zhuǎn)換字符如下表所示: 數(shù)據(jù)類型類型轉(zhuǎn)換字符功 能整 數(shù)d 帶符號十進(jìn)制整數(shù)實 數(shù)f十進(jìn)制小數(shù)形式(默認(rèn)6位小數(shù))字 符c輸出1個字符s輸出1個字符串2022/7/690(2)轉(zhuǎn)義字符。特點:通常是產(chǎn)生一個控制操作。例如,轉(zhuǎn)

39、義字符n,輸出時產(chǎn)生一個“換行”操作。 (3)普通字符除格式指示符和轉(zhuǎn)義字符之外的其它字符。特點:原樣輸出。例如,“radius=”、“l(fā)ength=”、“area=”、“,”。2022/7/6912輸出項表如果不止1個,則相鄰2個之間用逗號分開。下面的用法都是合法的:(1)printf(I am a student.n);(2)printf(%d,3+2);(3)printf(a=%f b=%5dn, a, a+3);2022/7/6923.1.2 常用的類型轉(zhuǎn)換字符輸出不同類型數(shù)據(jù),要使用不同類型轉(zhuǎn)換字符。2022/7/6931類型轉(zhuǎn)換字符d以帶符號的十進(jìn)制整數(shù)形式輸出。案例3.2 類型轉(zhuǎn)

40、換字符d的使用。#include “stdio.h”#include “conio.h”void main() int num1=123; long num2=123456; printf(num1=%d,num1=%5d,num1=%-5d,num1=%2dn, num1,num1,num1,num1); printf(num2=%ld,num2=%8ld,num2=%5ldn, num2,num2,num2); printf(num1=%ldn,num1); getch(); 2022/7/694程序運(yùn)行結(jié)果如下:num1=123,num1=123,num1=123,num1=123num

41、2=123456,num2=123456,num2=123456num1=16908411(1)格式指示符,必須與輸出項的數(shù)據(jù)類型一致,否則會引起輸出錯誤。(2)對于整數(shù),還可用%o(八進(jìn)制無符號形式)、 %x(十六進(jìn)制無符號形式)、 %u(十進(jìn)制無符號形式)輸出。類型匹配錯誤,輸出結(jié)果是隨機(jī)的。2022/7/6952類型轉(zhuǎn)換字符f以小數(shù)形式輸出實數(shù)。案例3.3 類型轉(zhuǎn)換字符f的使用。#include “stdio.h”#include “conio.h”void main( ) float f = 123.456; double d1,d2; d1 = 1111111111111.11111

42、1111; d2 = 2222222222222.222222222; printf(%f, %12f, %12.2f, %-12.2f, %.2fn, f, f, f, f, f ) ; printf(d1 + d2 = %fn, d1 + d2); getch(); 2022/7/696程序運(yùn)行結(jié)果如下:123.456001,123.456001,123.46,123.46,123.46d1+d2=3333333333333.333010提示:對于實數(shù)也可使用%e,以標(biāo)準(zhǔn)指數(shù)形式輸出;或使用%g,讓系統(tǒng)根據(jù)數(shù)值的大小,自動選擇%f或%e格式、且不輸出無意義的零。2022/7/6973類型轉(zhuǎn)

43、換字符c輸出1個字符(占1列寬度)案例3.4 類型轉(zhuǎn)換字符c的使用。#include “stdio.h”#include “conio.h”void main() char c=A; int i=65; printf(c= %c, %5c, %dn, c, c, c ); printf(i = %d, %c, i, i); getch(); 程序運(yùn)行結(jié)果如下: c = A, A, 65 I = 65, A2022/7/6984類型轉(zhuǎn)換字符s輸出一個字符串。案例3.5 類型轉(zhuǎn)換字符s的使用。#include “stdio.h”#include “conio.h”void main() print

44、f(%s, %5s, %-10s,Internet,Internet,Internet); printf(%10.5s, %-10.5s, %4.5sn,Internet,Internet,Internet); getch(); 程序運(yùn)行結(jié)果如下:Internet,Internet,Internet,Inter,Inter,Inter 注意:系統(tǒng)輸出字符(串),不輸出單引號和雙引號。2022/7/6993.1.3 使用說明1格式指示符,必須按從左到右的順序,與輸出項表中的每個數(shù)據(jù)一一對應(yīng),否則出錯。例如,printf(str = %s, f = %d, i = %fn, Internet, 1

45、.0 / 2, 3 + 5, CHINA);是錯誤的。2類型轉(zhuǎn)換字符的緊前字符不是“%”時,將作普通字符處理(原樣輸出)。例如,“printf(”c = %c, f = %fn“, c, f);”中的第一個c和f,都是普通字符。2022/7/61003類型轉(zhuǎn)換字符x、e、g,大小寫均可。大寫時,輸出數(shù)據(jù)中包含的字母也大寫。其它類型轉(zhuǎn)換字符,必須小寫。例如,%f不能寫成%F。返回2022/7/61013.2* 格式化輸入scanf()函數(shù)3.2.1 一般格式 案例3.6 已知圓柱體的底半徑radius=1.5,高h(yuǎn)igh = 2.0 ,求其體積(r2 h) 。2022/7/6102#includ

46、e “stdio.h”#include “conio.h”void main() float radius, high, pi=3.14159, vol; radius=1.5; high=2.0; vol = pi * radius * radius * high; printf(“vol = %7.2fn”, vol); getch(); 思考:使用賦值語句給出初值的方式的局限性?2022/7/6103 案例3.7 已知圓柱體的底半徑為radius、高為high,求其體積。#include “stdio.h”#include “conio.h”void main() float radiu

47、s, high, vol, pi=3.1415926; printf(Please input radius & high: ); scanf(%f%f, &radius, &high); vol = pi * radius * radius * high; printf(radius=%7.2f, high=%7.2f, vol=%7.2fn, radius, high, vol); getch(); Please input radius & high: 1.52.0radius=1.50,high=2.00,vol=14.142022/7/6104給計算機(jī)提供數(shù)據(jù),可以使用:(1)賦值語

48、句。只能解決1個特定的問題。例如,案例3.6。(2)輸入函數(shù)scanf() 。能解決1類特定的問題。例如,案例3.7。顯然,采用scanf( )函數(shù),使得程序具有更好的適應(yīng)性。2022/7/6105scanf( )函數(shù)的一般格式: scanf(格式字符串, 輸入項首地址表);(1)格式字符串 格式指示符:與printf()函數(shù)的相似; 普通字符:必須原樣輸入。2022/7/6106(2)輸入項首地址表可以是變量首地址、數(shù)組名,或者指針變量。變量首地址的表示: &變量名相鄰2個輸入項首地址,用逗號分開。地址運(yùn)算符2022/7/61073.2.2 數(shù)據(jù)輸入操作(假設(shè)num1=12、num2=36)

49、1默認(rèn)分隔符空格、 Tab鍵、回車如果不指定分隔符(例如逗號、冒號),則使用默認(rèn)分隔符。例如,scanf(%d%d,&num1,&num2);正確的輸入操作為: 1236 或者:12 362022/7/61082普通字符務(wù)必原樣輸入。(1) scanf(%d ,%d,&num1,&num2); 正確的輸入操作為:12 , 36(2) scanf(num1=%d , num2=%dn,&num1,&num2); 正確的輸入操作為: num1=12 ,num2=36n提示:scanf()格式字符串中,沒有轉(zhuǎn)義字符概念。比較(1)、(2)兩種設(shè)計方式的優(yōu)缺點?2022/7/6109比較(1)、(2)

50、兩種設(shè)計方式的優(yōu)缺點?(1) 僅輸入數(shù)據(jù),輸入量小,但人機(jī)交互性差(用戶不知道該輸入什么,以及輸入給誰)。(2) 同時輸入說明和數(shù)據(jù),人機(jī)交互友好性好,但輸入量大。思考:如何改進(jìn)設(shè)計,既保持良好的人機(jī)交互性,又不增加輸入量?2022/7/6110提高人機(jī)交互性的設(shè)計思路:先用printf()函數(shù)輸出提示信息,再用scanf()函數(shù)進(jìn)行數(shù)據(jù)輸入。scanf(num1=%d,num2=%dn,&num1,&num2);printf(num1=); scanf(%d,&num1);printf(num2=); scanf(%d,&num2);2022/7/61113使用 “%c”輸入時,空格和轉(zhuǎn)義字

51、符均作為有效字符被輸入。例如:scanf(%c%c%c,&ch1,&ch2,&ch3);printf(ch1=%c,ch2=%c,ch3=%cn,ch1,ch2,ch3);思考:假設(shè)輸入“ABC”,printf()輸出的內(nèi)容是什么?輸出結(jié)果:ch1= A,ch2=,ch3= B返回2022/7/61123.3 順序結(jié)構(gòu)程序設(shè)計順序結(jié)構(gòu)程序一般包括兩部分:1程序開頭的編譯預(yù)處理命令。如果要在程序中使用標(biāo)準(zhǔn)庫函數(shù),則必須使用編譯預(yù)處理命令#include,將相應(yīng)的頭文件包含進(jìn)來。2022/7/61132函數(shù)體主要包括:(1)變量定義語句;(2)輸入語句;(3)運(yùn)算語句;(4)輸出語句。 3 執(zhí)行流

52、程:各語句是按照物理位置次序,被順序執(zhí)行,且每個語句都會被執(zhí)行到。2022/7/6114案例 輸入3個整數(shù),求它們的和及平均值。#include “stdio.h”#include “conio.h”void main() int num1,num2,num3,sum; float aver; printf(Please input three numbers:); scanf(%d, %d, %d, &num1, &num2, &num3); sum = num1 + num2 + num3;/*求累計和*/ aver = sum / 3.0; /*求平均值*/ printf(num1=%d

53、,num2=%d,num3=%dn, num1, num2, num3); printf(sum=%d, aver=%7.2fn,sum, aver); getch(); 2022/7/6115案例3.11 設(shè)計一個進(jìn)行加、減、乘、除和求余數(shù)運(yùn)算練習(xí)的程序。對程序功能的基本要求如下:(1) 使用菜單驅(qū)動;(2) 隨機(jī)產(chǎn)生運(yùn)算所需的2個操作數(shù)(0-99);(3) 程序自動判斷用戶的計算結(jié)果是否正確。由于所學(xué)內(nèi)容的限制,本案例的設(shè)計要求將在本章,以及隨后的第4 第7章中分階段逐步實現(xiàn)并完善。本案例首先實現(xiàn)設(shè)計要求(1) 。 2022/7/6116/*功能:菜單程序段*/#include stdio

54、.h#include conio.hvoid main() char options; clrscr( );/*清屏。函數(shù)原型在conio.h中*/2022/7/6117 printf( 加、減、乘、除和求余數(shù)運(yùn)算練習(xí)程序 n); printf(n); printf( + (Addition) + / a n); printf( - (Subtraction) - / s n); printf( * (Multiplication) * / m n); printf( / (Division) / / d n); printf( % (Remainder) % / r n); printf(

55、E x i t e n); printf(n); printf( Please choose one option: ); scanf(%1c , &options); getch(); 2022/7/6118程序運(yùn)行情況如下: 加、減、乘、除和求余數(shù)運(yùn)算練習(xí)程序 + (Addition) + / a - (Subtraction) - / s * (Multiplication) * / m / (Division) / / d % (Remainder) % / r E x i t e Please choose one option: _返回2022/7/61191. printf()函

56、數(shù) printf(格式字符串 ,輸出項表);本 章 要 點(1)格式指示符 %標(biāo)志寬度.精度F|N|h|L類型(2)轉(zhuǎn)義字符(3)普通字符原樣輸出。2022/7/61202. scanf()函數(shù) scanf(格式字符串, 輸入項首地址表);(1)格式指示符(2)普通字符:原樣輸入。&變量名2022/7/61213. 源程序書寫風(fēng)格順序程序段左對齊順序程序段中的所有語句(包括說明語句),一律與本順序程序段的首行左對齊。4.良好的人機(jī)交互性提示輸入/輸出數(shù)據(jù)的含義(1)輸入:printf(姓名:); scanf(%s, name);(2)輸出:printf(姓名:%sn, name);返回2022

57、/7/6122本章作業(yè)與上機(jī)實踐作業(yè):2,3,6上機(jī)實踐:驗證本章作業(yè)。返回2022/7/6123第4章 選擇結(jié)構(gòu)程序設(shè)計選擇結(jié)構(gòu)程序設(shè)計,要解決兩個問題:(1)選擇條件如何表示:關(guān)系/邏輯表達(dá)式(2)實現(xiàn)選擇結(jié)構(gòu)語句: if、switch語句教學(xué)目的:掌握關(guān)系和邏輯運(yùn)算,if語句、switch語句,選擇結(jié)構(gòu)程序設(shè)計。2022/7/6124教學(xué)內(nèi)容:4.1 關(guān)系運(yùn)算及其表達(dá)式4.2 邏輯運(yùn)算及其表達(dá)式4.3* if語句4.4* switch語句4.5 選擇結(jié)構(gòu)程序設(shè)計本章要點本章作業(yè)與上機(jī)實踐2022/7/61254.1 關(guān)系運(yùn)算及其表達(dá)式關(guān)系運(yùn)算將兩個數(shù)據(jù)進(jìn)行比較,判定是否符合給定的關(guān)系。例

58、如,“a b”中的“”,表示一個大于關(guān)系:如果a=5、b=3,則大于關(guān)系成立;如果a=2、b=3,則大于關(guān)系不成立。2022/7/61264.1.1 關(guān)系運(yùn)算符及其優(yōu)先次序1關(guān)系運(yùn)算符(小于), (大于), =(大于等于)=(等于), !=(不等于)2與其它種類運(yùn)算符的優(yōu)先關(guān)系算術(shù)運(yùn)算符 關(guān)系運(yùn)算符 賦值運(yùn)算符思考:在混合運(yùn)算時,如何增強(qiáng)程序可讀性(明確運(yùn)算的優(yōu)先關(guān)系)?不是 “= ”2022/7/61274.1.2 關(guān)系表達(dá)式1概念用關(guān)系運(yùn)算符,將兩個表達(dá)式連接起來的式子。例如:a b,a = b ,a + b c - d2關(guān)系表達(dá)式的值邏輯真 / 邏輯假如果關(guān)系成立,則表達(dá)式的值為邏輯真;

59、如果關(guān)系不成立,則表達(dá)式的值為邏輯假。語言沒有邏輯型數(shù)據(jù),用整數(shù)表示“邏輯真”,用整數(shù)表示“邏輯假”。2022/7/6128假設(shè)num1=3,num2=4,num3=5,則:(1) num1 num2 := 0(2) (num1 num2) != num3: = 1(3) num1 num2 num3 := 1思考:任意改變num1或num2的值,會影響整個表達(dá)式的值嗎?為什么?x(1,100):1x=0) & (x10) ,(x5) ,! (x= =0), (year%4= =0) & (year%100!=0) | | (year%400= =0)2022/7/61302. 運(yùn)算規(guī)則(1)

60、&:當(dāng)且僅當(dāng)兩個運(yùn)算對象的值都為“邏輯真”時,結(jié)果為“邏輯真”,否則為“邏輯假”。運(yùn)算口訣:同時為真才為真,否則為假。(2) | :當(dāng)且僅當(dāng)兩個運(yùn)算對象的值都為“邏輯假”時,結(jié)果為“邏輯假”,否則為“邏輯真”。運(yùn)算口訣:同時為假才為假,否則為真。2022/7/6131(3) ! :當(dāng)運(yùn)算對象的值為“邏輯真”時,結(jié)果為“邏輯假”;當(dāng)運(yùn)算對象的值為“邏輯假”時,結(jié)果為“邏輯真”。運(yùn)算口訣:取反。2022/7/61324.2.2 邏輯表達(dá)式1. 概念用邏輯運(yùn)算符,將若干表達(dá)式連接起來的式子。例如,邏輯表達(dá)式(year%4= =0) & (year%100!=0) | (year%400= =0),判

溫馨提示

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

評論

0/150

提交評論