版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、C語(yǔ)言程序設(shè)計(jì),主講:高照艷,2024/3/19,2,第一章 C語(yǔ)言概述,主要內(nèi)容:C語(yǔ)言的發(fā)展C語(yǔ)言的特點(diǎn)簡(jiǎn)單C程序介紹算法結(jié)構(gòu)化程序設(shè)計(jì)C程序的執(zhí)行過(guò)程,2024/3/19,3,C語(yǔ)言出現(xiàn)的歷史背景(1)C語(yǔ)言的發(fā)展源于人們希望用高級(jí)語(yǔ)言編寫(xiě)操作系統(tǒng)。 ALGOL60(高級(jí)語(yǔ)言) 60 ->CPL(劍橋大學(xué)推出 接近硬件 規(guī)模大 難實(shí)現(xiàn)) 63 ->BCPL (劍橋大學(xué) 簡(jiǎn)化CPL)
2、 67 ->B 語(yǔ)言 (貝爾實(shí)驗(yàn)室用B寫(xiě)了UNIX操作系統(tǒng)) 70 ->C 語(yǔ)言 (用C改寫(xiě)了UNIX 90%,即第5版) 72-73 ->標(biāo)準(zhǔn)C (K&R 《The C Programming language》)78 -> ANSI C 83 (ANSI 美國(guó)國(guó)家標(biāo)準(zhǔn)化協(xié)會(huì)) -> 87 ANSI C -> ISO C
3、 90 (ISO-國(guó)際標(biāo)準(zhǔn)化組織) 版本:Microsoft C、Turbo C、Borland C、Quick C(2)C語(yǔ)言既具有高級(jí)語(yǔ)言特性,又具有低級(jí)語(yǔ)言特性-中級(jí)語(yǔ)言。,1.1C語(yǔ)言的發(fā)展,2024/3/19,4,1. 2 C語(yǔ)言的特點(diǎn),語(yǔ)言簡(jiǎn)潔,表達(dá)能力強(qiáng),易于理解只有32個(gè)關(guān)鍵字,9種控制語(yǔ)句,32個(gè)關(guān)鍵字:(由系統(tǒng)定義,不能重作其它定義)auto break case
4、 char constcontinue default do double elseenum extern float for gotoif int long register returnshort signed
5、 sizeof static structswitch typedef unsigned union voidvolatile while,2024/3/19,5,,9種控制語(yǔ)句:if( )~else~for( )~while( )~do~while( )continuebreakswitchgotoreturn,2024/3/19,6,,運(yùn)
6、算符豐富34種運(yùn)算符,運(yùn)算能力強(qiáng)、效率高。算術(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)算符:[]
7、其它 :( ) -,2024/3/19,7,數(shù)據(jù)類型豐富,2024/3/19,8,,具有結(jié)構(gòu)化的控制語(yǔ)句程序書(shū)寫(xiě)格式自由能進(jìn)行位操作,能實(shí)現(xiàn)匯編語(yǔ)言的大部分功能,可以直接對(duì)硬件進(jìn)行操作語(yǔ)言生成的代碼質(zhì)量高,程序執(zhí)行效率高可移植性好,2024/3/19,9,例1.1編寫(xiě)程序,在屏幕上打印字符串“This is a C program.\n”。main(){ printf(" This is a C pr
8、ogram.\n");},1. 3簡(jiǎn)單C程序介紹,2024/3/19,10,例1.2 /*求兩數(shù)之和*/ main( ){ int a , b , sum ; /*定義變量*/a=123 ; b=456 ;sum= a + b ; printf (“Sum is %d\n”, sum) ;} Sum
9、 is 579,,2024/3/19,11,例1.3 求兩數(shù)之最大值 main( ) { int a , b , c ; scanf (”%d,%d”, &a, &b) ; c=max(a , b) ; /*調(diào)用自定義函數(shù)max */ printf (“max=%d\n”, c) ;
10、} int max(int x , int y) /*自定義函數(shù)*/ { int z ; if (x>y) z=x ; else z=y ; return(z) ; },2024/3/19,12,C程序結(jié)構(gòu),C程序由函數(shù)構(gòu)成必須有,且只能有一個(gè)main(主函數(shù))總是從main函數(shù)開(kāi)始執(zhí)行函數(shù)由函數(shù)首部和函數(shù)體組成函數(shù)首
11、部指定函數(shù)名、函數(shù)參數(shù)、類型函數(shù)體從 { 開(kāi)始,到 } 結(jié)束函數(shù)內(nèi)有語(yǔ)句,2024/3/19,13,C程序結(jié)構(gòu)(續(xù)),語(yǔ)句包括說(shuō)明性語(yǔ)句、可執(zhí)行語(yǔ)句以 ;表示語(yǔ)句結(jié)束注釋可以出現(xiàn)在程序的任何位置 用 /* 和 */ 括起來(lái),必須成對(duì)出現(xiàn)書(shū)寫(xiě)格式C語(yǔ)言沒(méi)有行的概念,書(shū)寫(xiě)格式自由。習(xí)慣小寫(xiě)字母,縮進(jìn)格式。,2024/3/19,14,1.4 程序的靈魂-算法,程序包括兩方面內(nèi)容:1.對(duì)數(shù)據(jù)的描述。數(shù)據(jù)元素及各元素
12、之間的關(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)的。,2024/3/19,15,1.4.1 算法,什么是算法為解決某一應(yīng)用問(wèn)題而采用的解題步驟算法的描述方式 用自然語(yǔ)言描述算法 用流程圖描述算法 用N-S結(jié)構(gòu)圖描述算法用計(jì)算機(jī)語(yǔ)言
13、表示算法(即實(shí)現(xiàn)算法),例如:輸出兩個(gè)數(shù)中的最大數(shù),2024/3/19,16,用自然語(yǔ)言描述算法,第一步:輸入x和y的值第二步:比較x和y的值,如果x大于y,則輸出x的值,否則輸出y的值。,例如當(dāng)描述“輸出10個(gè)數(shù)中最大數(shù)”的算法時(shí),會(huì)冗長(zhǎng)、難于理解,2024/3/19,17,圖1.5 用流程圖描述算法,用流程圖描述算法,,起止框,輸入/輸出框,判斷框,處理框,流程線,2024/3/19,18,用N-S結(jié)構(gòu)圖描述算法,圖1.7 用
14、N-S結(jié)構(gòu)圖描述的算法,,2024/3/19,19,算法的特性,,(1)有窮性。,(2)確定性。,(3)有效性。,(4)輸入。,(5)輸出。,2024/3/19,20,1.4.2結(jié)構(gòu)化程序設(shè)計(jì),程序的三種基本結(jié)構(gòu)順序結(jié)構(gòu)程序:按照書(shū)寫(xiě)順序依次執(zhí)行語(yǔ)句選擇結(jié)構(gòu)程序:按照條件判斷選擇執(zhí)行語(yǔ)句循環(huán)結(jié)構(gòu)程序:通過(guò)條件控制循環(huán)執(zhí)行語(yǔ)句,三種基本結(jié)構(gòu)的共同點(diǎn):都是只有一個(gè)入口和一個(gè)出口;結(jié)構(gòu)內(nèi)的每一個(gè)框都有機(jī)會(huì)被執(zhí)行;結(jié)構(gòu)內(nèi)沒(méi)有死循環(huán)。
15、,2024/3/19,21,,,結(jié)構(gòu)化程序設(shè)計(jì)的三種基本結(jié)構(gòu):1) 順序結(jié)構(gòu) 傳統(tǒng)流程圖 N-S流程圖,,A,B,,,開(kāi)始,結(jié)束,其中:A、B為操作框,可由一條或多條語(yǔ)句實(shí)現(xiàn)。,2024/3/19,22,,,2) 選擇結(jié)構(gòu)(分支結(jié)構(gòu)) 傳統(tǒng)流程圖 N-S流程圖
16、 入口 出口,A,B,P,,,,,,,,,,,,,T F,T F,,其中:P為分支判斷條件; A、B必有一個(gè)且只有一個(gè)被執(zhí)行; A、B之一可是空操作,用? 表示。,2024/3/19,23,,,,3) 循環(huán)結(jié)構(gòu)當(dāng)型循環(huán)——先判斷后循環(huán),有可能一次也不
17、循環(huán)。 入口 F T,P,A,,,,,,,,,,,當(dāng)P為真 A,,,出口,其中:P為循環(huán)判斷條件; A為要重復(fù)執(zhí)行的操作,稱為循環(huán)體;,2024/3/19,24,,,,直到型循環(huán)——先循環(huán)后判斷,至少循環(huán)一次。
18、 入口 F T,P,A,,,A直到P為真,,,出口,其中:P為循環(huán)判斷條件; A為要重復(fù)執(zhí)行的操作,稱為循環(huán)體;,,,,,2024/3/19,25,算法舉例例:計(jì)算5! (1×2×3×4×5),,,,,,,
19、當(dāng)型循環(huán) 直到型循環(huán),2024/3/19,26,結(jié)構(gòu)化程序設(shè)計(jì)的基本原則:,結(jié)構(gòu)化程序設(shè)計(jì)的基本原則:采用自頂向下、逐步細(xì)化的方法進(jìn)行設(shè)計(jì);采用模塊化原則和方法進(jìn)行設(shè)計(jì)。即將大型任務(wù)從上向下劃分為多個(gè)功能模塊,每個(gè)模塊又可以劃分為若干子模塊,然后分別進(jìn)行模塊程序的編寫(xiě);每個(gè)模塊都是用結(jié)構(gòu)化程序?qū)崿F(xiàn),即都只能由三種基本結(jié)構(gòu)組成,并通過(guò)計(jì)算機(jī)語(yǔ)言的結(jié)構(gòu)化語(yǔ)句實(shí)現(xiàn)。,2024/3/19
20、,27,1.5 C語(yǔ)言的上機(jī)操作步驟,一. 上機(jī)過(guò)程:,編譯,,,,,,,,,正確,正確,正確,有錯(cuò)誤,有錯(cuò)誤,編輯,運(yùn)行,2024/3/19,28,C程序的執(zhí)行過(guò)程,1.源程序文件的建立和編輯 編寫(xiě)源程序,形成 .C文件需用編輯工具:tc.exe、記事本2.編譯 編譯源程序,形成目標(biāo)程序 . Obj文件需用編譯工具 :tcc.exe3.連接 連接OBJ文件和調(diào)用的庫(kù)函數(shù),形成運(yùn)行程序 .exe 文件需用連接工具 :t
21、link.exe4.運(yùn)行 .exe 文件,2024/3/19,29,,2.上機(jī)過(guò)程流程圖:,2024/3/19,30,3.編寫(xiě)、運(yùn)行C程序時(shí)常用功能鍵,,2024/3/19,31,三、需要記住的TC中一些常用功能鍵,F1:幫助。 F2:將當(dāng)前文件存盤(pán)。 F3:裝載原有文件或給新文件命名。 F4:程序運(yùn)行到光標(biāo)所在行。 F5:放大或縮小活動(dòng)窗口切換。F6:開(kāi)或關(guān)活動(dòng)窗口切換。F7:?jiǎn)尾竭\(yùn)行程序,跟蹤進(jìn)入函數(shù)內(nèi)部運(yùn)行。
22、F8:?jiǎn)尾竭\(yùn)行程序,不跟蹤進(jìn)入函數(shù)內(nèi)部。,2024/3/19,32,實(shí)驗(yàn)報(bào)告,實(shí)驗(yàn)一[實(shí)驗(yàn)?zāi)康腯[實(shí)驗(yàn)內(nèi)容和步驟]1.設(shè)計(jì)算法,寫(xiě)出程序2.在TurboC下編輯,得到源程序(.c)3.編譯,得到目標(biāo)文件(.obj)4.連接,得到可執(zhí)行文件(.exe)5.分析結(jié)果[實(shí)驗(yàn)體會(huì)],C程序設(shè)計(jì)數(shù)據(jù)類型、運(yùn)算符與表達(dá)式,,2024/3/19,34,,2.1 數(shù)據(jù)類型2.2 常量與變量2.3 整型數(shù)據(jù)2.4
23、 實(shí)型數(shù)據(jù)2.5 字符型數(shù)據(jù)2.6 變量賦初值2.7 混合運(yùn)算2.8 運(yùn)算符與表達(dá)式,,數(shù)據(jù)類型、運(yùn)算符與表達(dá)式 CHAPTER 2,2024/3/19,35,數(shù)據(jù)類型、運(yùn)算符與表達(dá)式 C的數(shù)據(jù)類型,C語(yǔ)言提供的數(shù)據(jù)結(jié)構(gòu)是以數(shù)據(jù)類型形式出現(xiàn)的
24、數(shù)據(jù)在內(nèi)存中存放的情況有數(shù)據(jù)類型決定 數(shù)據(jù)的操作要依靠運(yùn)算符實(shí)現(xiàn),而數(shù)據(jù)和運(yùn)算符共同組成了表達(dá)式。,2024/3/19,36,數(shù)據(jù)類型、運(yùn)算符與表達(dá)式 C的數(shù)據(jù)類型,,2024/3/19,37,3.2常量與變量,3.2.1常量和符號(hào)常量常量:在運(yùn)行過(guò)程中,其值不能被改變的量稱為常量。 分類:整型﹑實(shí)型﹑字符﹑字符串符號(hào)常量
25、,用一個(gè)標(biāo)識(shí)符代表的常量。 習(xí)慣上,符號(hào)常量名用大寫(xiě),變量用小寫(xiě),以示區(qū)別。-1,0,123為整型常量 4.6, -1.23為實(shí)型常量 ‘a(chǎn)’, ‘d’ 為字符常量 #define PRICE 255 A=PRICE*A+6 C=PRICE+C/120PRICE是標(biāo)識(shí)符,符號(hào)常量,2024/3/19,38,3.2.2 變 量變量:在程序運(yùn)行過(guò)程中,其值可以改變的量稱
26、為變量。標(biāo)識(shí)符:用來(lái)標(biāo)識(shí)變量名、符號(hào)常量名、函數(shù)名、類型名、數(shù)組名、文件名的有效字符序列稱為標(biāo)識(shí)符。 由字母、數(shù)字和下劃線三種字符組成,且第一個(gè)字符必須為字母或下劃線。合法的變量名如: average,abd, a, s2, student_name, _init不合法的變量名:M.D.John, 1a, #33, a>b
27、3. C 語(yǔ)言要求對(duì)變量“先定義,后使用”。,2024/3/19,39,3.3 整型數(shù)據(jù),3.3.1 整型常量由一系列數(shù)字組成。也可帶有減號(hào),但不使用加號(hào)。十進(jìn)制整數(shù):123,-456,0八進(jìn)制整數(shù):以0開(kāi)頭的數(shù)據(jù),如:-011,0123十六進(jìn)制整數(shù):以0x開(kāi)頭的數(shù)據(jù),如:0x123 整型常量的分類根據(jù)其值的范圍而決定其類型,并可以賦值給類型相匹配的整型變量。,2024/3/19,40,3.3.
28、2 整型變量,1.整數(shù)數(shù)據(jù)在內(nèi)存中的存放形式 數(shù)據(jù)在內(nèi)存中是以二進(jìn)制形式存放的。 例如:3 =(0000000000000011)2要區(qū)別:+3 和 -3 方法是:將符號(hào)也數(shù)碼化即:正的符號(hào) +用 0 表示 負(fù)的符號(hào) -用 1 表示 數(shù)值是以補(bǔ)碼表示的。 正數(shù)的補(bǔ)碼和其原碼的形式相同。 負(fù)數(shù)的補(bǔ)碼:將該數(shù)的絕對(duì)值的二進(jìn)制形式,按位取反再加1
29、 。 -3=(11111111111111101 )2,2024/3/19,41,2.整型變量的分類 整型… int 在內(nèi)存中以二進(jìn)制形式存放,每一個(gè)整型變量在內(nèi)存中占2個(gè)字節(jié)。短整型… 以short int表示或以short表示, 一般與int占有的內(nèi)存相同。長(zhǎng)整形…以long int表示或以long表示,一般占有在內(nèi)存中字節(jié)為int兩倍。無(wú)符號(hào)型…只能存放正整數(shù),它的表示是在上述三種類型之前加上unsigned
30、,2024/3/19,42,3. 整型變量的定義對(duì)變量的定義一般放在函數(shù)的開(kāi)頭部分。[例2.1]main(){ int a,b,c,d; unsigned u; a = 12; b =-24; u =10; c = a+u; d = b+u; printf(“a + u = %d, b + u = % d\n”, c, d); },a+u = 22, b+u =-14,不同類型的數(shù)可以直接運(yùn)算,2024/3
31、/19,43,4.整型數(shù)據(jù)的溢出main(){int a,b; a=32767; b=a+1; printf(“%d,%d”,a,b); } 運(yùn)行結(jié)果為 32767,-327683.3.3 整型常量的類型① 一個(gè)整常量,其值在-2^15~2^15-1內(nèi)可認(rèn)為是 int 型,并可賦值給 int 型和 long int 型變量;② 一個(gè)整常量,其值在 –2^31 ~ 2^3
32、1-1 范圍內(nèi)則認(rèn)為它是 long int 型,可賦值給一個(gè) long int 型變量;③ 常量中無(wú) unsigned 型,但一個(gè)非負(fù)值的整常量可以賦給 unsigned 型整變量;,2024/3/19,44,3.4 實(shí)型數(shù)據(jù),3.4.1 實(shí)型常量1.十進(jìn)制小數(shù)形式(日常記數(shù)形式) 1.0 +12.0 -12.0 0.02.指數(shù)形式(科學(xué)記數(shù)形式) E(e)。例如3.0E+5等。
33、3.4.2 實(shí)型變量1.類型: 單精度:float,分配4 Byte雙精度:double,分配 8 Byte2.存儲(chǔ):,2024/3/19,45,實(shí)型數(shù)據(jù)的類型及規(guī)定,實(shí)型常量不分float和double,根據(jù)范圍賦值給相應(yīng)的變量。如:float a; double b; a=111111.111; b=111111.111 a中實(shí)際存儲(chǔ)的是111111.1 (7位有效) b中實(shí)際存儲(chǔ)的是
34、111111.111 (全部有效),2024/3/19,46,3.5 字符型數(shù)據(jù),,3.5.1字符常量1. 定義用一對(duì)單引號(hào)括起來(lái)的單個(gè)字符,稱為字符常量。例如,‘A’、‘1’、‘+’等。2.轉(zhuǎn)義字符C語(yǔ)言還允許使用一種特殊形式的字符常量,就是以反斜杠“\ ”開(kāi)頭的字符序列。,2024/3/19,47,3.5.2 字符型變量 字符變量的類型關(guān)鍵字為char,一般占用1字節(jié)內(nèi)存單元。 1.
35、變量值的存儲(chǔ) 將一個(gè)字符常量存儲(chǔ)到一個(gè)字符變量中,實(shí)際上是將該字符的ASCII碼值(無(wú)符號(hào)整數(shù))存儲(chǔ)到內(nèi)存單元中。 例如: char ch1, ch2; /*定義兩個(gè)字符變量:ch1,ch2*/ ch1=’a’; ch2=’b’; /*給字符變量賦值*/ ’a’、’b’的ASCII碼為97、98 。 2.特性
36、 1)字符數(shù)據(jù)在內(nèi)存中存儲(chǔ)的是字符的ASCII碼; 2)C語(yǔ)言允許字符型數(shù)據(jù)與整型數(shù)據(jù)之間通用,可以互相賦值。 3)字符數(shù)據(jù)也可以整數(shù)形式輸出。,2024/3/19,48,[例1] 字符變量的字符形式輸出和整數(shù)形式輸出。 main() { char c1,c2; c1='a';
37、 c2='b'; printf(“c1=%c,c2=%c\n”,c1,c2); printf(“c1=%d,c2=%d\n”,c1,c2); } 程序運(yùn)行結(jié)果: c1=a,c2=b c1=97,c2=98,2024/3/
38、19,49,[例2] 大小寫(xiě)字母的轉(zhuǎn)換。 main() { char c1,c2; c1='a'; c2='b'; c1=c1-32;c2=c2-32; printf(“%c c2=%c\n”,c1,c2); }
39、 程序運(yùn)行結(jié)果: A B,2024/3/19,50,數(shù)據(jù)類型、運(yùn)算符與表達(dá)式 字符型數(shù)據(jù),3.5.3 字符串常量用雙引號(hào)括起來(lái)的字符序列。如: “How do you do”, “CHINA”, “a”, “$ 123.34” 等。字符串可以一次輸出。如: printf(“How do y
40、ou do”);C語(yǔ)言規(guī)定:在存儲(chǔ)字符串常量時(shí),由系統(tǒng)在字符串的末尾自動(dòng)加一個(gè)‘\0’作為字符串的結(jié)束標(biāo)志。在內(nèi)存中,對(duì)字符串常量是采用字符數(shù)組表示,即用一個(gè)字符型數(shù)組來(lái)存放一個(gè)字符串。 注意: ‘a(chǎn)’是字符常量,“a”是字符串常量,二者不同。,2024/3/19,51,綜上所述,字符常量'A'與字符串常量"A"是兩回事:(1)定界符不同:字符常量使用單引號(hào),而字符串常量使用雙引號(hào);(2)長(zhǎng)
41、度不同:字符常量的長(zhǎng)度固定為1,而字符串常量的長(zhǎng)度,可以是某個(gè)整數(shù);(3)存儲(chǔ)要求不同:字符常量存儲(chǔ)的是字符的ASCII碼值,而字符串常量,除了要存儲(chǔ)有效的字符外,還要存儲(chǔ)一個(gè)結(jié)束標(biāo)志’\0’。,2024/3/19,52,3.6 變量賦初值,在變量定義的同時(shí)可以為變量賦初值。 如: int a=3; (相當(dāng)于 int a; a=3;) float f = 3.56; char c = ‘a(chǎn)’; int
42、 a,b,c = 5 ; 表示只給c賦初值。 ?。ㄏ喈?dāng)于int a,b,c; c = 5;),2024/3/19,53,3.7 各類數(shù)值型數(shù)據(jù)間的混合運(yùn)算 不同類型的數(shù)據(jù)(整型、實(shí)型、字符型)可進(jìn)行混合運(yùn)算?! ∪纾?0 + ‘a(chǎn)’ + 1.5 - 8765.1234 * ‘b’ 必須首先將它們轉(zhuǎn)換成同一類型的數(shù)值。轉(zhuǎn)換原則是由低向高轉(zhuǎn)換,運(yùn)算結(jié)果為最高級(jí)別的類型。,2024/3/19,54,數(shù)據(jù)類型、運(yùn)算符與表達(dá)
43、式 混合運(yùn)算,2024/3/19,55,例2-5:已知: float a=2.0; int b =6,c =3;求解: a*b/c-1.5+ ’A’ +abs(-5)=?,,,12.0/3,,,4.0 - 1.5,,,2.5,,+65(int),,,67.5,,,5,,,72.5,2024/3/19,56,3.8 算術(shù)運(yùn)算符和算術(shù)表達(dá)式
44、 1.基本的算術(shù)運(yùn)算: +、-、*、/、% % 是模運(yùn)算,即求余運(yùn)算,要求整數(shù)。 如:7%4的結(jié)果是3。說(shuō)明: 5/3的結(jié)果仍是整數(shù),小數(shù)部分被忽略。 5.3/3或5/3.0的結(jié)果為double型。 C編譯系統(tǒng)將實(shí)型常量作為雙精度來(lái)處理。如果參加+、-、*、/ 運(yùn)算的兩個(gè)數(shù)中有一個(gè)數(shù)為實(shí)數(shù),則結(jié)果是
45、double型。2.算術(shù)表達(dá)式:用算術(shù)運(yùn)算符將運(yùn)算對(duì)象按C的語(yǔ)法規(guī)則連接起的式子。 例如:a * b/c-1.5+‘a(chǎn)’優(yōu)先級(jí)(算術(shù)運(yùn)算): () * / % + -在同一級(jí)別中,采取由左至右的結(jié)合方向。 如:a-b+c 相當(dāng)于 (a-b)+c,2024/3/19,57,3.強(qiáng)制類型轉(zhuǎn)換運(yùn)算符
46、可將一個(gè)表達(dá)式轉(zhuǎn)換成所需類型。其一般形式為:(類型名)(表達(dá)式) 例如:(double) a (int) (x+y) (float) (5%3) 在強(qiáng)制類型轉(zhuǎn)換時(shí),得到一個(gè)所需類型的中間變量,原來(lái)變量的類型未發(fā)生變化。,2024/3/19,58,練習(xí),main( ) { int i;
47、 float x; x=3.6; i=(int)x; printf(" x=%f,i=%d\n",x,i); },2024/3/19,59,數(shù)據(jù)類型、運(yùn)算符與表達(dá)式 運(yùn)算符和表達(dá)式,4.自增、自減運(yùn)算符 使變量的值加1或減1。如:++i, --i
48、 在使用i之前,先使i的值加(減)1 i++, i-- 在使用i之后,再使i的值加(減)1例如:i的值為3,則 j= + + i; j的值為4,i的值為4 j= i + +; j的值為3,i的值為4又如: printf(“%d”, ++i); 輸
49、出結(jié)果為4 printf(“%d”,i++); 輸出結(jié)果為3單獨(dú)使用時(shí), i++ , ++i 等價(jià),2024/3/19,60,,結(jié)合性:,自右向左,例:,i = 2; j = -i++;,分析:(1)++、--、+、-是同級(jí)運(yùn)算符,結(jié)合方向:自右向左。,(2) -i++等價(jià)于 -(i++),(3) 對(duì)于括號(hào)內(nèi)的自增運(yùn)算,要先使用i,再使i增加1。,運(yùn)算結(jié)果: i的值為3,j的值為-2。
50、,2024/3/19,61,練習(xí),a=1,b=2,c=3,d=4下列式子的值分別是多少?a*b/ca*b%c+1++a*b-c--,2024/3/19,62,3.9 賦值運(yùn)算符和賦值表達(dá)式 1.賦值運(yùn)算符:“=” 。2.復(fù)合賦值運(yùn)算:在賦值符號(hào)前加上其它運(yùn)算符號(hào)。 +=,-=,*=,/=,%=,>=,&=,^=,|= 例如: a + = 3;
51、 等價(jià)于a = a + 3; x * = y + 8; 等價(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
52、 C語(yǔ)言中 a=b 不等價(jià)于 b=a,2024/3/19,63,3.賦值運(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ǔ)1,2024/3/19,64,數(shù)據(jù)類型、運(yùn)算符與表達(dá)式 運(yùn)
53、算符和表達(dá)式,4.賦值表達(dá)式: 由賦值運(yùn)算符將一個(gè)變量和一個(gè)表達(dá)式連接起來(lái)的式子。 一般形式為:例如:int a=12;求下列運(yùn)算的結(jié)果,a+=a-=a * a,a=a-a * a=12-12 * 12=-132),a+=-132,a=a+(-132)=(-132)+(-132)=-264,,a=-264,2024/3/19,65,練習(xí),int i=1,j=2,k=3,m=4;計(jì)算下列式子的
54、值i+=j+kj*=k=m+5,2024/3/19,66,數(shù)據(jù)類型、運(yùn)算符與表達(dá)式 運(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的值。
55、 例如: a=3*5, a*4; a的值為15,表達(dá)式的值為60 (a=3*5, a*4), a+5; a的值為15, 表達(dá)式的值為20 又如: x=(a=3, 6*3); x的值為18 x=a=3, 6*a x的值為3, 表達(dá)式
56、的值為18,第4章 最簡(jiǎn)單的C程序設(shè)計(jì) -順序程序設(shè)計(jì),,2024/3/19,68,1 C語(yǔ)句概述2 賦值語(yǔ)句 3 數(shù)據(jù)的輸入輸出4 字符數(shù)據(jù)輸入輸出5 格式輸入輸出7 程序舉例,,2024/3/19,69,4.1 C語(yǔ)句概述 用C語(yǔ)言編寫(xiě)的程序稱為C語(yǔ)言源程序,簡(jiǎn)稱C程序。 C語(yǔ)言一般由一個(gè)或若干個(gè)函數(shù)組成,而這些函數(shù)可以保存在一個(gè)或幾個(gè)源程序中,
57、這些文件都以.C作為文件擴(kuò)展名。,2024/3/19,70,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ǔ)句。 C語(yǔ)句有以下五類: ⑴ 控制語(yǔ)句,完成一定的控制功能;① if( ) ~ else ~ (條件語(yǔ)句)② for( ) ~
58、 (循環(huán)語(yǔ)句)③ while( ) ~ (循環(huán)語(yǔ)句)④ do ~ while ( ) (循環(huán)語(yǔ)句)⑤ continue (結(jié)束本次循環(huán)語(yǔ)句)⑥ break (中止執(zhí)行switch或循環(huán)語(yǔ)句)⑦ Switch
59、 (多分支選擇語(yǔ)句)⑧ goto (轉(zhuǎn)向語(yǔ)句)⑨ return (從函數(shù)返回語(yǔ)句),2024/3/19,71,⑵ 函數(shù)調(diào)用語(yǔ)句,由一次函數(shù)調(diào)用加一個(gè)分號(hào)構(gòu)成一個(gè)語(yǔ)句, 如:printf (“This is a C statement.”);⑶ 表達(dá)式語(yǔ)
60、句,由一個(gè)表達(dá)式構(gòu)成一個(gè)語(yǔ)句, 如: a=3 (是表達(dá)式,不是語(yǔ)句) a=3; (是語(yǔ)句)⑷ 空語(yǔ)句,只有一個(gè)分號(hào),什么也不做;⑸ 復(fù)合語(yǔ)句,用{ }把一些語(yǔ)句括起來(lái)成為復(fù)合語(yǔ)句。相當(dāng)一條語(yǔ)句,哪里有語(yǔ)句,哪里就可用復(fù)合語(yǔ)句。 if
61、(a>b) { max=a; min=b; } 復(fù)合語(yǔ)句最后一個(gè)語(yǔ)句中最后的分號(hào)不能忽略不寫(xiě)。,2024/3/19,72,4.2 賦值語(yǔ)句 賦值表達(dá)式后面加上分號(hào),構(gòu)成賦值語(yǔ)句。 功能:將數(shù)據(jù)賦給變量。 如: x=3.1; a=‘d’+ 123 + b/d; 程序中基本的命令行必須是一個(gè)語(yǔ)句,表達(dá)式不能單獨(dú)構(gòu)成語(yǔ)句。 例如: ‘d’+ 123 + b/d 是一個(gè)
62、表達(dá)式 a =‘d’+ 123 + b/d;是一個(gè)賦值語(yǔ)句 特點(diǎn): ① C語(yǔ)言中的賦值號(hào)“ = ”作為賦值運(yùn)算符; ② 作為賦值表達(dá)式可以被包括在其他表達(dá)式之中; if((a=b)>0) t=a; ③ 賦值語(yǔ)句可以連接賦值; a=b=c=2;,2024/3/19,73,4.3 數(shù)據(jù)輸入輸出的概念
63、 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()
64、 3.在使用C語(yǔ)言庫(kù)函數(shù)時(shí),要用到預(yù)編譯命令“#include”將有關(guān)的“頭文件包括到用戶源文件中。 在調(diào)用標(biāo)準(zhǔn)輸入輸出庫(kù)函數(shù)時(shí),文件開(kāi)頭應(yīng)有以下預(yù)編譯命令: #include 或 #include”stdio.h”,2024/3/19,74,4.4 字符數(shù)據(jù)的輸入輸出1.字符輸出函數(shù)putchar() 向終
65、端輸出一個(gè)字符。 如:putchar(c); 輸出變量c的值,c可以是字符型變量或整型變量。,[例3.1]#include “stdio.h”main(){ char a,b,c; a= ‘B’; b= ‘O’;c= ‘Y’; putchar(a);putchar(b);putchar(c);},BOY,2024/3/19,75,也可以輸出控制字符,如putchar(’\n’)輸出一個(gè)換行符。
66、 輸出其它轉(zhuǎn)義字符 putchar(‘\101’); 輸出 ‘A’; putchar(‘\’’); 輸出單引號(hào) putchar(‘\015’); 使輸出回車(chē),不換行,[例3.2]#include main(){ char a,b,c; a= 'B'; b='O';c='Y';
67、 putchar(a); putchar('\n'); putchar(b); putchar('\n'); putchar(c); putchar('\n'); },BOY,2024/3/19,76,2.字符輸入函數(shù)getchar() 從終端(或系統(tǒng)隱含指定的輸入設(shè)備)輸入一個(gè)字符。 一般形式為: getchar();
68、 函數(shù)的值就是從輸入設(shè)備得到的字符,[例]#include “stdio.h”main(){ char c; c=getchar(); putchar(c); },a,a↓,2024/3/19,77,,[例]從鍵盤(pán)上輸入一個(gè)大寫(xiě)字母,分別用大小寫(xiě)字母形式輸出,同時(shí)輸出它們的ascii碼。#include “stdio.h”main(){char c1,c2; c1=getchar(); pri
69、ntf(“%c,%d\n”,c1,c1); c2=c1+32; printf(“%c,%d\n”,c2,c2);},A↓,A ,65a ,97,2024/3/19,78,4.5格式輸入與輸出函數(shù)1.格式輸出函數(shù)printf() 按規(guī)定格式向終端輸出若干個(gè)任意類型的數(shù)據(jù)。,一般格式: printf(控制格式,輸出列表),,,被輸出的數(shù)據(jù),可以是常量、變量、表達(dá)式,用雙引號(hào)括起的轉(zhuǎn)換控制字符串,它包括兩種信息:,格式說(shuō)
溫馨提示
- 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ù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- c語(yǔ)言教程
- 譚浩強(qiáng)c語(yǔ)言教程電子版
- 易語(yǔ)言教程
- pic單片機(jī)c語(yǔ)言教程[1]
- c語(yǔ)言基礎(chǔ)教程
- c語(yǔ)言教案
- c語(yǔ)言教案
- c++程序語(yǔ)言教程 第二章
- c語(yǔ)言基礎(chǔ)教程經(jīng)典100例
- 郭天祥新概念51單片機(jī)c語(yǔ)言教程例題
- 十天學(xué)會(huì)易語(yǔ)言_易語(yǔ)言教程_第①章__基礎(chǔ)知識(shí)
- 十天學(xué)會(huì)易語(yǔ)言_易語(yǔ)言教程_第①章_“易語(yǔ)言”基礎(chǔ)知識(shí)
- 高職c語(yǔ)言教學(xué)創(chuàng)新
- c語(yǔ)言教學(xué)專題網(wǎng)站
- c語(yǔ)言教學(xué)大綱
- c語(yǔ)言教學(xué)專題網(wǎng)站
- 郭天祥新概念51單片機(jī)c語(yǔ)言教學(xué)教程例題
- 十天學(xué)會(huì)易語(yǔ)言 易語(yǔ)言教程 第1章 “易語(yǔ)言”基礎(chǔ)知識(shí)
- 易語(yǔ)言教程-從入門(mén)到精通
- 單片機(jī)c語(yǔ)言教案
評(píng)論
0/150
提交評(píng)論