




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、C語(yǔ)言入門(mén)教程(比較全)C語(yǔ)言入門(mén)教程(比較全)第一章第一章 計(jì)算機(jī)語(yǔ)言與計(jì)算機(jī)語(yǔ)言與C C語(yǔ)言概述語(yǔ)言概述 1.1 1.1 計(jì)算機(jī)語(yǔ)言概念計(jì)算機(jī)語(yǔ)言概念 計(jì)算機(jī)語(yǔ)言定義計(jì)算機(jī)語(yǔ)言定義 計(jì)算機(jī)能夠識(shí)別和接受的語(yǔ)言。計(jì)算機(jī)能夠識(shí)別和接受的語(yǔ)言。 要使計(jì)算機(jī)按自己的意圖工作,必須要使計(jì)算機(jī)按自己的意圖工作,必須使用計(jì)算機(jī)所能接受、理解和執(zhí)行的使用計(jì)算機(jī)所能接受、理解和執(zhí)行的指令指揮計(jì)算機(jī)工作。指令指揮計(jì)算機(jī)工作。 計(jì)算機(jī)語(yǔ)言的種類(lèi)計(jì)算機(jī)語(yǔ)言的種類(lèi) 機(jī)器語(yǔ)言機(jī)器語(yǔ)言 低級(jí)語(yǔ)言低級(jí)語(yǔ)言 匯編語(yǔ)言匯編語(yǔ)言 (面向計(jì)算機(jī))面向計(jì)算機(jī)) BASIC 入門(mén)語(yǔ)言入門(mén)語(yǔ)言 F77 科學(xué)計(jì)算科學(xué)計(jì)算 高級(jí)語(yǔ)言高級(jí)語(yǔ)
2、言 Foxpro 數(shù)據(jù)庫(kù)管理數(shù)據(jù)庫(kù)管理 (面向問(wèn)題面向問(wèn)題 ) C 多用途多用途 計(jì)算機(jī)語(yǔ)言機(jī)器語(yǔ)言機(jī)器語(yǔ)言 最早問(wèn)世,用二進(jìn)制代碼構(gòu)成指令。最早問(wèn)世,用二進(jìn)制代碼構(gòu)成指令。 如:如: 100000 100000 (+ +) 110000 110000 (- -) 用機(jī)器語(yǔ)言編程的缺點(diǎn):用機(jī)器語(yǔ)言編程的缺點(diǎn): 繁瑣、不直觀、不易調(diào)試。繁瑣、不直觀、不易調(diào)試。 如計(jì)算如計(jì)算y=2xy=2x2 2+3x-1+3x-1需要七八條指令。需要七八條指令。 移植性差。移植性差。 依賴(lài)于計(jì)算機(jī)。依賴(lài)于計(jì)算機(jī)。 匯編語(yǔ)言匯編語(yǔ)言 用符號(hào)構(gòu)成指令,如:用符號(hào)構(gòu)成指令,如:MOVMOV、ADDADD 用匯編語(yǔ)言編
3、程:用匯編語(yǔ)言編程: 相對(duì)直觀,但仍繁瑣,仍是面向計(jì)算機(jī)的相對(duì)直觀,但仍繁瑣,仍是面向計(jì)算機(jī)的語(yǔ)言。語(yǔ)言。 匯編語(yǔ)言是計(jì)算機(jī)間接接受的語(yǔ)言匯編語(yǔ)言是計(jì)算機(jī)間接接受的語(yǔ)言高級(jí)語(yǔ)言高級(jí)語(yǔ)言與低級(jí)語(yǔ)言相比,有根本性的區(qū)別: 是面向問(wèn)題的語(yǔ)言。高級(jí)語(yǔ)言的一條指令(語(yǔ)句): y=2*x*x+3*x-1; 對(duì)應(yīng)于:y=2x2+3x-1 y=sin(x); 對(duì)應(yīng)于:y=sinx用高級(jí)語(yǔ)言編程:用高級(jí)語(yǔ)言編程:直觀、易懂、移植性好(不依賴(lài)于具體計(jì)算機(jī))上機(jī)運(yùn)行高級(jí)語(yǔ)言程序需經(jīng)過(guò)編譯: 編譯 執(zhí)行 要上機(jī)完成一個(gè)計(jì)算問(wèn)題,主要的任務(wù)就是用高級(jí)語(yǔ)言編寫(xiě)出相應(yīng)的源程序。即至少要學(xué)會(huì)一種計(jì)算機(jī)語(yǔ)言。 高級(jí)語(yǔ)言源程序
4、機(jī)器指令目的程序結(jié)果編譯程序1.2 C1.2 C語(yǔ)言的特點(diǎn)語(yǔ)言的特點(diǎn) 集高級(jí)語(yǔ)言和低級(jí)語(yǔ)言的優(yōu)點(diǎn)于一身: 能實(shí)現(xiàn)低級(jí)語(yǔ)言的大部分功能(如直接訪問(wèn)內(nèi)存物理地址、進(jìn)行位操作等)。 圖形功能強(qiáng)。 運(yùn)算符和數(shù)據(jù)結(jié)構(gòu)豐富。 語(yǔ)法限制不太嚴(yán)格,程序設(shè)計(jì)自由度大。 生成目標(biāo)代碼質(zhì)量高,程序執(zhí)行效率高。 1.3 1.3 簡(jiǎn)單的簡(jiǎn)單的C C程序介紹程序介紹 例例1 1: mainmain三三 主函數(shù)說(shuō)明主函數(shù)說(shuō)明 程序框架程序框架 printf(“abcdef”); printf(“abcdef”); 函數(shù)體函數(shù)體 語(yǔ)句語(yǔ)句 程序的功能是輸出字符串:程序的功能是輸出字符串:abcdef abcdef 例2:求兩
5、數(shù)之和。main三 int a,b,c; a a=100; b=50; b c=a+b; c printf(“n c=%d”,c);程序運(yùn)行結(jié)果:c=150 例例3 3:求兩數(shù)中的最大值。:求兩數(shù)中的最大值。 函數(shù)類(lèi)型函數(shù)類(lèi)型 函數(shù)名函數(shù)名 形參形參mainmain三三 int max (int x,int y)int max (int x,int y) int a,b,c; int a,b,c; int z; int z; scanf(“%d,%d”,&a,&b); if(xy) scanf(“%d,%d”,&a,&b); if(xy) z=x;z=x; c=max(a,b); c=max(
6、a,b); else z=y;else z=y; p r i n t f ( “ n m a x i s : % d ” , c ) ; p r i n t f ( “ n m a x i s : % d ” , c ) ; return(z);return(z); a a x x b b y y c c z z (兩個(gè)函數(shù)組成)(兩個(gè)函數(shù)組成)353555 總結(jié)上例可知:總結(jié)上例可知:(1 1) C C程序由函數(shù)構(gòu)成。程序由函數(shù)構(gòu)成。(2 2) 函數(shù)由兩部分組成:函數(shù)由兩部分組成: 函數(shù)說(shuō)明部分:函數(shù)名、函數(shù)類(lèi)型、形函數(shù)說(shuō)明部分:函數(shù)名、函數(shù)類(lèi)型、形參名、形參類(lèi)型。參名、形參類(lèi)型。 函數(shù)體:
7、實(shí)現(xiàn)函數(shù)的具體操作;由語(yǔ)句函數(shù)體:實(shí)現(xiàn)函數(shù)的具體操作;由語(yǔ)句構(gòu)成。構(gòu)成。(3 3) 程序總是從程序總是從mainmain函數(shù)開(kāi)始執(zhí)行。函數(shù)開(kāi)始執(zhí)行。(4 4) 書(shū)寫(xiě)格式自由。書(shū)寫(xiě)格式自由。(5 5)語(yǔ)句必須有分號(hào)。)語(yǔ)句必須有分號(hào)。 : 第二章第二章 算法算法 2 2.1 .1 算法的概念算法的概念 要利用計(jì)算機(jī)處理問(wèn)題,光學(xué)習(xí)語(yǔ)言要利用計(jì)算機(jī)處理問(wèn)題,光學(xué)習(xí)語(yǔ)言的語(yǔ)法規(guī)則還不夠,最重要的是要學(xué)會(huì)的語(yǔ)法規(guī)則還不夠,最重要的是要學(xué)會(huì)針對(duì)各類(lèi)型的問(wèn)題,擬定出有效的解題針對(duì)各類(lèi)型的問(wèn)題,擬定出有效的解題方法和步驟。解題方法和步驟就是算法。方法和步驟。解題方法和步驟就是算法。算法算法: 為了解決一個(gè)問(wèn)
8、題而采取的有限步驟。為了解決一個(gè)問(wèn)題而采取的有限步驟。 計(jì)算機(jī)算法計(jì)算機(jī)算法: 如何使計(jì)算機(jī)一步一步地工作的具體過(guò)程。如何使計(jì)算機(jī)一步一步地工作的具體過(guò)程。 利用計(jì)算機(jī)處理問(wèn)題的步驟: 1)設(shè)計(jì)好算法算法設(shè)計(jì); 2)用計(jì)算機(jī)語(yǔ)言實(shí)現(xiàn)算法程序設(shè)計(jì)。 算法必須是“有效”的。 算法設(shè)計(jì)還要充分考慮算法的好壞。 衡量算法好壞的主要標(biāo)準(zhǔn): 程序簡(jiǎn)練。 執(zhí)行速度快。 占空間少。 例:考慮 的算法。算法:直接表達(dá)。直接用語(yǔ)句 s=1+2+3+4+5+6+7+8+9+10當(dāng)項(xiàng)數(shù)較多時(shí)該算法不適用s=i110算法:迭代法(累加求和法) s=1+2+3+4+5+6+7+8+9+10 算法步驟: s i 使s=0
9、+ 使i=1 累加器 記數(shù)器 s+is i+1i 若i10轉(zhuǎn),否則轉(zhuǎn) 輸出s01123364105該算法通用,是好算法2.2 2.2 算法的表示算法的表示 算法需要有統(tǒng)一的表示方法算法需要有統(tǒng)一的表示方法 常用的表示方法有:常用的表示方法有: 自然語(yǔ)言自然語(yǔ)言 流程圖流程圖 結(jié)構(gòu)化流程圖結(jié)構(gòu)化流程圖 N-SN-S流程圖流程圖. . 1、自然語(yǔ)言自然語(yǔ)言 對(duì)于計(jì)算對(duì)于計(jì)算 s=1+2+3+4+5+6+7+8+9+10s=1+2+3+4+5+6+7+8+9+10 用自然語(yǔ)言表示為:用自然語(yǔ)言表示為: 使使s=0 s=0 (s s為累加器)為累加器) 使使i=1 i=1 (i i為計(jì)數(shù)器)為計(jì)數(shù)器)
10、 s+is s+is (累加求和公式)(累加求和公式) i+1i i+1i (計(jì)數(shù)器加(計(jì)數(shù)器加1 1) 若若i10i10轉(zhuǎn)轉(zhuǎn), ,否則轉(zhuǎn)否則轉(zhuǎn) 輸出輸出s s的值的值 特點(diǎn):通俗易懂、文字冗長(zhǎng)、含義不大嚴(yán)格。 2、流程圖流程圖 用流程圖符號(hào)表示算法。 常用的流程圖符號(hào) 起止框 輸入輸出框 處理框 流程線 判斷框 對(duì)于計(jì)算 s=1+2+3+4+5+6+7+8+9+10 用流程圖表示為:s+i s i+1 i S+i s S+i s i10 輸出s 0 s 1 i 直觀形象,易于理解,次序清楚YN3、結(jié)構(gòu)化流程圖結(jié)構(gòu)化流程圖 傳統(tǒng)的流程圖有一個(gè)弊端:對(duì)流程線沒(méi)有嚴(yán)格的限制,對(duì)于較復(fù)雜的算法可能會(huì)
11、變成亂麻一般(BS型算法)。 為克服這一弊端,提出了由三個(gè)基本結(jié)構(gòu)組成算法流程圖的思想: 結(jié)構(gòu)化流程圖 三個(gè)基本結(jié)構(gòu): 順序結(jié)構(gòu) 按固定順序(從上到下或從左到右)執(zhí)行的結(jié)構(gòu)。 ABab 選擇結(jié)構(gòu) 根據(jù)條件P選擇執(zhí)行哪一個(gè)分支。 成立 不成立 pABab成立不成立例:計(jì)算 y= 1/x 當(dāng)x0時(shí) y= 10000 當(dāng)x=0時(shí) 的算法流程圖圖: 選擇結(jié)構(gòu) 輸入x X=0? 10000y 1/xy 輸出y YN 循環(huán)結(jié)構(gòu) 重復(fù)執(zhí)行某些操作的結(jié)構(gòu)。 分為兩種: 當(dāng)型循環(huán)和直到型循環(huán)。 當(dāng)型循環(huán) 直到型循環(huán) P1AAP2aabbYYNN 可以看出,每個(gè)基本結(jié)構(gòu)都只有一個(gè)入口和一個(gè)出口,因此,用三個(gè)基本結(jié)
12、構(gòu)構(gòu)成的流程圖不會(huì)象亂麻一般,用三個(gè)基本結(jié)構(gòu)構(gòu)成的流程圖就成為結(jié)構(gòu)化流程圖,用結(jié)構(gòu)化流程圖描述的算法稱(chēng)為結(jié)構(gòu)化算法,相應(yīng)的程序設(shè)計(jì)就稱(chēng)為結(jié)構(gòu)化程序設(shè)計(jì)。 觀察前例: 0 s 1 i S+i s i+1 i i10 輸出s 順序結(jié)構(gòu)循環(huán)結(jié)構(gòu)yn4 N-SN-S流程圖流程圖N-S流程圖的三個(gè)基本結(jié)構(gòu): ABP成立不成立ABAB當(dāng)P1直到P2順序結(jié)構(gòu)選擇結(jié)構(gòu)循環(huán)結(jié)構(gòu)例:計(jì)算 y= 1/x 當(dāng)x0時(shí) y= 10000 當(dāng)x=0時(shí) 的N-S流程圖:輸入x X=0?是否10000y 1/xy 輸出y 例: 計(jì)算 s=1+2+3+4+5+6+7+8+9+10 的N-S流程圖: i10 直到i10 直到型 當(dāng)
13、型 0 s 1 i 輸出s 1 i 0 s s+i s i+1 i s+i s i+1 i 輸出s 第三章第三章 數(shù)據(jù)類(lèi)型、運(yùn)算符數(shù)據(jù)類(lèi)型、運(yùn)算符 與與 表達(dá)式表達(dá)式 3.1 C 3.1 C 的數(shù)據(jù)類(lèi)型的數(shù)據(jù)類(lèi)型基本類(lèi)型 (整型、實(shí)型實(shí)型、字符型字符型、枚舉型)枚舉型)構(gòu)造類(lèi)型 (略)指針類(lèi)型 (略) 空類(lèi)型 各類(lèi)型包含常量與變量常量與變量 3.2 3.2 常量與變量常量與變量 常量與符號(hào)常量常量與符號(hào)常量 常量常量 在程序運(yùn)行過(guò)程中其值保持不變的量。在程序運(yùn)行過(guò)程中其值保持不變的量。 符號(hào)常量符號(hào)常量 用來(lái)代表一個(gè)常量的標(biāo)識(shí)符。 例: #define PI main三 float r=2,c
14、; c=2*PI*r; printf(“%f”,c); 變量變量 其值可以改變的量。其值可以改變的量。 變量的三要素變量的三要素: : 變量名變量名每個(gè)變量有一個(gè)名字,作為識(shí)別該變量的標(biāo)每個(gè)變量有一個(gè)名字,作為識(shí)別該變量的標(biāo)識(shí)符。識(shí)符。 變量的值變量的值 每個(gè)變量有一個(gè)值,變量的值是隨時(shí)可每個(gè)變量有一個(gè)值,變量的值是隨時(shí)可以改變的。以改變的。 變量的存儲(chǔ)單元變量的存儲(chǔ)單元 每個(gè)變量占據(jù)一個(gè)內(nèi)存單元,用于存放變量每個(gè)變量占據(jù)一個(gè)內(nèi)存單元,用于存放變量的值的值。 變量名 a 變量值 存儲(chǔ)單元3 變量的命名規(guī)則:變量的命名規(guī)則: 由字母、數(shù)字和下劃線組成由字母、數(shù)字和下劃線組成 以字母或下劃線開(kāi)頭以
15、字母或下劃線開(kāi)頭 a a、x1x1、y_2y_2、_b1_b1、_1c _1c 合法合法 1x1x、a+2a+2、 不合法不合法 變量必須先定義后使用。變量必須先定義后使用。 程序中何時(shí)使用常量?何時(shí)使用變量?程序中何時(shí)使用常量?何時(shí)使用變量? 3.3 3.3 整型數(shù)據(jù)整型數(shù)據(jù) 整型常量整型常量 即整常數(shù),即整常數(shù),c c的整常數(shù)有三種形式:的整常數(shù)有三種形式: 十進(jìn)制整數(shù)十進(jìn)制整數(shù) 與數(shù)學(xué)中的整數(shù)一致,如:與數(shù)學(xué)中的整數(shù)一致,如:100100,123123,1515等。等。 八進(jìn)制整數(shù)八進(jìn)制整數(shù) 以以0 0開(kāi)頭的整數(shù),如:開(kāi)頭的整數(shù),如:010,07,020010,07,020等。等。 十六
16、進(jìn)制整數(shù)十六進(jìn)制整數(shù) 以以0 x0 x開(kāi)頭的整數(shù),如:開(kāi)頭的整數(shù),如:0 x10,0 xff,0 x2a0 x10,0 xff,0 x2a等。等。 整型變量整型變量 用于存放整數(shù)的變量。用于存放整數(shù)的變量。 分分4 4種類(lèi)型:種類(lèi)型: 基本型:基本型:int aint a 16 16位,可表示的數(shù)值范圍:位,可表示的數(shù)值范圍:-3276832767-3276832767 短整型:短整型:short int bshort int b 16 16位,可表示的數(shù)值范圍:位,可表示的數(shù)值范圍:-3276832767-3276832767 長(zhǎng)整型:長(zhǎng)整型:long int clong int c 32
17、32位,數(shù)值范圍:位,數(shù)值范圍:-21474836482147483647-21474836482147483647 無(wú)符號(hào)型:加上無(wú)符號(hào)型:加上 unsignedunsigned 只存放正數(shù)。只存放正數(shù)。 如:如:unsigned int xunsigned int x 變量變量x x為無(wú)符號(hào)整數(shù),為無(wú)符號(hào)整數(shù),1616位全表示數(shù)碼,位全表示數(shù)碼, 數(shù)值范圍:數(shù)值范圍:065535065535 在程序設(shè)計(jì)中,如果要使用整型變量,在程序設(shè)計(jì)中,如果要使用整型變量,必須首先選擇以上類(lèi)型符來(lái)定義變量,然后才能必須首先選擇以上類(lèi)型符來(lái)定義變量,然后才能使用;使用; 例: main三 定義 int a
18、,b,c; a=100; b=50; 使用 c=a+b; printf(“%d”,c); 一般根據(jù)什么原則選擇變量的類(lèi)型? 3.4 3.4 實(shí)型數(shù)據(jù)實(shí)型數(shù)據(jù) 實(shí)型常量實(shí)型常量 可使用兩種形式表示:可使用兩種形式表示: 小數(shù)形式:如小數(shù)形式:如 指數(shù)形式:如指數(shù)形式:如 1e-20 1.23e5 1e-20 1.23e5 實(shí)型變量實(shí)型變量 用于存放實(shí)數(shù)的變量用于存放實(shí)數(shù)的變量 分單精度和雙精度兩種:分單精度和雙精度兩種: float a,b float a,b 定義定義a a和和b b為單精度型變量為單精度型變量 3232位,位,7 7位有效數(shù)字,位有效數(shù)字,1010-38-3810103838
19、 double x,y double x,y 定義定義x x和和y y為雙精度型變量為雙精度型變量 6464位,位,1515位有效數(shù)字,位有效數(shù)字,1010-308-3081010308308 例: main三 float r,c; double r,c; r=5; c=2*3.1415926*r; printf(“%f”,c); 3.5 3.5 字符型數(shù)據(jù)字符型數(shù)據(jù) 字符常量字符常量 用單引號(hào)括起來(lái)的一個(gè)字符。用單引號(hào)括起來(lái)的一個(gè)字符。 a,x,a,x,* *,1,1等等 除 此 外 , 以除 此 外 , 以 開(kāi) 頭 的 字 符開(kāi) 頭 的 字 符如如n,tn,t等等 稱(chēng)為轉(zhuǎn)義字符,祥見(jiàn)書(shū)表稱(chēng)
20、為轉(zhuǎn)義字符,祥見(jiàn)書(shū)表 字符型變量字符型變量 用于存放字符的變量。用于存放字符的變量。 char c1,c2 char c1,c2 定義定義c1c1和和c2c2為字符型變量為字符型變量 c1=a; c2=b; c1=a; c2=b; 字符賦值字符賦值 字符型變量存放一個(gè)字符,占據(jù)一個(gè)字節(jié)字符型變量存放一個(gè)字符,占據(jù)一個(gè)字節(jié) 字符型數(shù)據(jù)的存儲(chǔ)形式字符型數(shù)據(jù)的存儲(chǔ)形式 存放ASCII碼 不是 而是 如字符如字符aa在內(nèi)存中存放在內(nèi)存中存放9797,b b 存放存放9898。 與整數(shù)的存儲(chǔ)形式一致,它們之間可以通與整數(shù)的存儲(chǔ)形式一致,它們之間可以通用用 一個(gè)字符數(shù)據(jù)既可以作字符用,也可以作一個(gè)字符數(shù)據(jù)
21、既可以作字符用,也可以作整數(shù)用(取其整數(shù)用(取其ASCIIASCII代碼)。代碼)。 如:如:32+a32+a相當(dāng)于相當(dāng)于 32+9732+97 若若 int x; char c;int x; char c;則則 x=a; c=97; x=97; c=a; x=a; c=97; x=97; c=a; 都允都允許許 a97 字符串常量字符串常量 用雙引號(hào)括起來(lái)的字符序列。用雙引號(hào)括起來(lái)的字符序列。 如:如:”abcde”,”china”abcde”,”china” ”a” ”a”也屬字符串。也屬字符串。 注意注意”a”a”與與aa的區(qū)別。的區(qū)別。 對(duì)于:對(duì)于: char c;char c; c=
22、”a”; c=”a”; 用法錯(cuò)誤用法錯(cuò)誤 字符串中每個(gè)字符各占一個(gè)字節(jié),并且在字符串中每個(gè)字符各占一個(gè)字節(jié),并且在字符串結(jié)尾加上一個(gè)結(jié)束標(biāo)記字符串結(jié)尾加上一個(gè)結(jié)束標(biāo)記00 如:如:”china” china” 在內(nèi)存中占在內(nèi)存中占6 6個(gè)字節(jié)。個(gè)字節(jié)。 c h i n a 0 C C語(yǔ)言中專(zhuān)門(mén)的字符串變量,可用字符數(shù)語(yǔ)言中專(zhuān)門(mén)的字符串變量,可用字符數(shù)組存放(以后介紹)。組存放(以后介紹)。 3.6 3.6 變量賦初值變量賦初值 在定義變量的同時(shí)給相應(yīng)的變量賦初值。在定義變量的同時(shí)給相應(yīng)的變量賦初值。 如:如: int a=3; a int a=3; a float b=5.2; float b
23、=5.2; char c=a; char c=a; int x=y=z=6; int x=y=z=6; 效果:效果: 在給變量分配內(nèi)存單元的同時(shí)在相應(yīng)的單在給變量分配內(nèi)存單元的同時(shí)在相應(yīng)的單 元中存放初值。元中存放初值。 3 3.7 3.7 各數(shù)值型數(shù)據(jù)間的混合運(yùn)算各數(shù)值型數(shù)據(jù)間的混合運(yùn)算 整型、實(shí)型、字符型數(shù)據(jù)間可以進(jìn)行混合運(yùn)整型、實(shí)型、字符型數(shù)據(jù)間可以進(jìn)行混合運(yùn)算,如:算,如: 運(yùn)算時(shí),參加運(yùn)算的兩個(gè)數(shù)據(jù)如果類(lèi)型不同,運(yùn)算時(shí),參加運(yùn)算的兩個(gè)數(shù)據(jù)如果類(lèi)型不同,則首先將其類(lèi)型轉(zhuǎn)換成一致再運(yùn)算,轉(zhuǎn)換規(guī)則是:則首先將其類(lèi)型轉(zhuǎn)換成一致再運(yùn)算,轉(zhuǎn)換規(guī)則是: 將優(yōu)先級(jí)低的類(lèi)型轉(zhuǎn)換到優(yōu)先級(jí)高的類(lèi)型將優(yōu)先級(jí)
24、低的類(lèi)型轉(zhuǎn)換到優(yōu)先級(jí)高的類(lèi)型 數(shù)據(jù)類(lèi)型的優(yōu)先級(jí):數(shù)據(jù)類(lèi)型的優(yōu)先級(jí): 高高 double floatdouble float long long unsignde unsignde 低低 int charint char 3.8 3.8 算術(shù)運(yùn)算符與算術(shù)表達(dá)式算術(shù)運(yùn)算符與算術(shù)表達(dá)式 基本的算術(shù)運(yùn)算符基本的算術(shù)運(yùn)算符 + - * / % 算術(shù)表達(dá)式算術(shù)表達(dá)式 用算術(shù)運(yùn)算符將運(yùn)算對(duì)象連接起來(lái)的式子用算術(shù)運(yùn)算符將運(yùn)算對(duì)象連接起來(lái)的式子 用于表達(dá)數(shù)學(xué)公式的式子用于表達(dá)數(shù)學(xué)公式的式子 如:如:2 2* *x+y-1/ax+y-1/a 表達(dá)式經(jīng)過(guò)運(yùn)算最終得到一個(gè)值:表達(dá)式經(jīng)過(guò)運(yùn)算最終得到一個(gè)值: 算術(shù)表達(dá)式
25、的值算術(shù)表達(dá)式的值 運(yùn)算符的優(yōu)先級(jí)與結(jié)合性運(yùn)算符的優(yōu)先級(jí)與結(jié)合性 優(yōu)先級(jí):優(yōu)先級(jí): 在對(duì)表達(dá)式求值時(shí),如果存在多個(gè)運(yùn)算符,則運(yùn)在對(duì)表達(dá)式求值時(shí),如果存在多個(gè)運(yùn)算符,則運(yùn)算的先后次序按運(yùn)算符的優(yōu)先級(jí)別從高到底進(jìn)行。算的先后次序按運(yùn)算符的優(yōu)先級(jí)別從高到底進(jìn)行。 運(yùn)算符的優(yōu)先級(jí)關(guān)系為:運(yùn)算符的優(yōu)先級(jí)關(guān)系為: 高:高:* * / % / % 低:低:+ -+ - 如:如:a-2a-2* *x x 先算先算 * * 2 2* *(a+2) (a+2) 有括號(hào)的情況?有括號(hào)的情況? 結(jié)合性:結(jié)合性: 如果在一個(gè)運(yùn)算對(duì)象兩邊的運(yùn)算符的優(yōu)先級(jí)相如果在一個(gè)運(yùn)算對(duì)象兩邊的運(yùn)算符的優(yōu)先級(jí)相同,則按規(guī)定的同,則按規(guī)定
26、的“結(jié)合方向結(jié)合方向”處理。處理。 如:如:a-b+ca-b+c b b與與- -結(jié)合是從左到右,稱(chēng)結(jié)合是從左到右,稱(chēng)“左結(jié)合性左結(jié)合性”。 b b與與+ +結(jié)合是從右到左,稱(chēng)結(jié)合是從右到左,稱(chēng)“右結(jié)合性右結(jié)合性”。 每個(gè)運(yùn)算符都有相應(yīng)的優(yōu)先級(jí)和結(jié)合性。每個(gè)運(yùn)算符都有相應(yīng)的優(yōu)先級(jí)和結(jié)合性。 基本算術(shù)運(yùn)算符都是左結(jié)合性?;舅阈g(shù)運(yùn)算符都是左結(jié)合性。 計(jì)算表達(dá)式例:計(jì)算表達(dá)式例: 2+A-1/2.0 1+3/2-12+A-1/2.0 1+3/2-1構(gòu)造表達(dá)式例構(gòu)造表達(dá)式例 2x2x2 2+3x-1+3x-1 a+b a-b a+b a-b x+y x-ya+b/a-b ?(a+b)/(a-b)2*
27、x*x+3*x-1 (*不能省)(a+b)/(a-b)/(x+y)/(x-y)(a+b)/(a-b)/(x+y)/(x-y)(a+b)/(a-b)/(x+y)*(x-y) 強(qiáng)制類(lèi)型轉(zhuǎn)換強(qiáng)制類(lèi)型轉(zhuǎn)換可以用強(qiáng)制類(lèi)型轉(zhuǎn)換運(yùn)算符將一個(gè)表達(dá)式可以用強(qiáng)制類(lèi)型轉(zhuǎn)換運(yùn)算符將一個(gè)表達(dá)式的值轉(zhuǎn)換成所需類(lèi)型:的值轉(zhuǎn)換成所需類(lèi)型:如:如: (int)(x+y)(int)(x+y) (float)(7%3) (float)(7%3) 應(yīng)用舉例:應(yīng)用舉例: int a=200,b=300,c;int a=200,b=300,c; c=a c=a* *b/100; ?b/100; ? 可知,有自動(dòng)轉(zhuǎn)換和強(qiáng)制轉(zhuǎn)換,可知,有自
28、動(dòng)轉(zhuǎn)換和強(qiáng)制轉(zhuǎn)換, 當(dāng)自動(dòng)轉(zhuǎn)換達(dá)不到目的時(shí),可用強(qiáng)制轉(zhuǎn)換。當(dāng)自動(dòng)轉(zhuǎn)換達(dá)不到目的時(shí),可用強(qiáng)制轉(zhuǎn)換。c=(long)a*b/100;c=(long)(a*b)/100; 自增、自減運(yùn)算符自增、自減運(yùn)算符 自增運(yùn)算符:自增運(yùn)算符:+ + 使變量值加使變量值加1 1 自減運(yùn)算符:自減運(yùn)算符:- - 使變量值減使變量值減1 1 兩種用法:兩種用法: +i, -i +i, -i 先加(減)后用先加(減)后用 i+, i- i+, i- 先用后加(減)先用后加(減) 兩種用法對(duì)兩種用法對(duì)i i效果一樣,但表達(dá)式的值不同。效果一樣,但表達(dá)式的值不同。例:假設(shè)例:假設(shè)i i的原值為的原值為5 5: j=+i;
29、j=? j=i+; j=?j=+i; j=? j=i+; j=? 注意:注意:+和和-只能用于變量。只能用于變量。 如:如:3+3+和(和(a+1a+1)+ + 不合法不合法+和和-為右結(jié)合性。為右結(jié)合性。 (-i)+(-i)+ -i+ -i+ -(i+) -(i+) 若若i i的原值是的原值是5 5,則該表達(dá)式的值是多少?,則該表達(dá)式的值是多少? 例:分析執(zhí)行下列語(yǔ)句后的結(jié)果:例:分析執(zhí)行下列語(yǔ)句后的結(jié)果: a=5; a b c da=5; a b c d b=a+; b=a+; c=-a-b+; c=-a-b+; d=(a+)-(+b)+c-; d=(a+)-(+b)+c-; 556506
30、 7-26-1 兩種特殊情況:兩種特殊情況: k=(i+)+(i+)+(i+) k=(i+)+(i+)+(i+) i+j i+j 是是 i+(+j) i+(+j) 還是還是 (i+)+j ?(i+)+j ? i+ i+雖然與雖然與i=i+1i=i+1等效,但使用自增自減等效,但使用自增自減運(yùn)算符的代碼優(yōu)化程度好,因而經(jīng)常使用;運(yùn)算符的代碼優(yōu)化程度好,因而經(jīng)常使用;但用時(shí)需特別小心。但用時(shí)需特別小心。 3.9 3.9 賦值運(yùn)算符和賦值表達(dá)式賦值運(yùn)算符和賦值表達(dá)式 賦值運(yùn)算符賦值運(yùn)算符 “=”=”稱(chēng)賦值運(yùn)算符,其作用是將一個(gè)數(shù)據(jù)稱(chēng)賦值運(yùn)算符,其作用是將一個(gè)數(shù)據(jù)賦給一個(gè)變量。賦給一個(gè)變量。 如:如:
31、 a=5a=5 不要理解為不要理解為“等號(hào)等號(hào)”。 執(zhí)行賦值運(yùn)算的結(jié)果,是將右邊的數(shù)據(jù)存入執(zhí)行賦值運(yùn)算的結(jié)果,是將右邊的數(shù)據(jù)存入左邊變量所對(duì)應(yīng)的內(nèi)存單元中。左邊變量所對(duì)應(yīng)的內(nèi)存單元中。 賦值規(guī)則賦值規(guī)則 如果賦值運(yùn)算符兩側(cè)的類(lèi)型不一致,則在賦如果賦值運(yùn)算符兩側(cè)的類(lèi)型不一致,則在賦值時(shí)要進(jìn)行類(lèi)型轉(zhuǎn)換,轉(zhuǎn)換規(guī)則為:值時(shí)要進(jìn)行類(lèi)型轉(zhuǎn)換,轉(zhuǎn)換規(guī)則為: 實(shí)型實(shí)型整變量整變量 舍去小數(shù)部分。舍去小數(shù)部分。 int a=5.5; aint a=5.5; a中為中為5 5。 整型整型實(shí)變量實(shí)變量 數(shù)值不變,以浮點(diǎn)形式存儲(chǔ)。數(shù)值不變,以浮點(diǎn)形式存儲(chǔ)。 字符型字符型整變量整變量 放在整形變量低放在整形變量低8 8
32、位。保持原值不變?cè)瓌t。位。保持原值不變?cè)瓌t。 int a=A;int a=A; 復(fù)合賦值運(yùn)算符復(fù)合賦值運(yùn)算符 在賦值運(yùn)算符前加上其它運(yùn)算符,可以構(gòu)成在賦值運(yùn)算符前加上其它運(yùn)算符,可以構(gòu)成復(fù)合賦值運(yùn)算符。復(fù)合賦值運(yùn)算符。 a+=3 a=a+3a+=3 a=a+3 b-=x+5 b=b-(x+5) b-=x+5 b=b-(x+5) x x* *=c-6 x=x=c-6 x=x* *(c-6)(c-6) y/=a y/=a* *4 y=y/(a4 y=y/(a* *4)4) k%=b-2 k=k%(b-2) k%=b-2 k=k%(b-2) 屬于高效率運(yùn)算符。屬于高效率運(yùn)算符。 賦值表達(dá)式賦值表達(dá)式
33、 主要實(shí)現(xiàn)賦值運(yùn)算的表達(dá)式。主要實(shí)現(xiàn)賦值運(yùn)算的表達(dá)式。 一般形式:一般形式: = 如:如: a=5 y=2a=5 y=2* *x+3 a=a+1 x+3 a=a+1 不是衡等不是衡等作用:將右邊表達(dá)式的值賦給左邊的變量。作用:將右邊表達(dá)式的值賦給左邊的變量。 賦值表達(dá)式的值取左邊變量的值。賦值表達(dá)式的值取左邊變量的值。 賦值表達(dá)式右邊的賦值表達(dá)式右邊的 可以是任何表可以是任何表達(dá)式,如:達(dá)式,如: a=(b=5) a=(b=5) 賦值表達(dá)式中包含賦值表達(dá)式賦值表達(dá)式中包含賦值表達(dá)式 賦值運(yùn)算符的優(yōu)先級(jí)低于所有算術(shù)運(yùn)算符,賦值運(yùn)算符的優(yōu)先級(jí)低于所有算術(shù)運(yùn)算符,且是右結(jié)合性。且是右結(jié)合性。 a=(
34、b=5) a=(b=5) 與與 a=b=5 a=b=5 等效。等效。 例:計(jì)算以下表達(dá)式的值:例:計(jì)算以下表達(dá)式的值: a=b=c=5a=b=c=5 a=5+(c=6) a=5+(c=6) a=(b=4)+(c=6) a=(b=4)+(c=6) a=(b=4.5)+(c=6.5) a=(b=4.5)+(c=6.5) (a a、b b、c c為整型變量)為整型變量) a+=a-=aa+=a-=a* *a (a (設(shè)設(shè)a a的原值為的原值為3)3) 賦值表達(dá)式是賦值表達(dá)式是C C語(yǔ)言中的一個(gè)重要成分,語(yǔ)言中的一個(gè)重要成分,在賦值表達(dá)式后加一分號(hào)就成為常用的賦值在賦值表達(dá)式后加一分號(hào)就成為常用的賦值
35、語(yǔ)句。如語(yǔ)句。如 y=2y=2* *x+1;x+1; 賦值表達(dá)式作為表達(dá)式的一種,可以出賦值表達(dá)式作為表達(dá)式的一種,可以出現(xiàn)在任何表達(dá)式中,如:現(xiàn)在任何表達(dá)式中,如: x+2-(b/3-(a=k-5)+bx+2-(b/3-(a=k-5)+b 3.10 3.10 逗號(hào)表達(dá)式逗號(hào)表達(dá)式 逗號(hào)也是一種運(yùn)算符,用它對(duì)兩個(gè)表達(dá)式實(shí)逗號(hào)也是一種運(yùn)算符,用它對(duì)兩個(gè)表達(dá)式實(shí)現(xiàn)連接運(yùn)算?,F(xiàn)連接運(yùn)算。 3+5,6+8 3+5,6+8 稱(chēng)逗號(hào)表達(dá)式。稱(chēng)逗號(hào)表達(dá)式。 逗號(hào)表達(dá)式的一般形式:逗號(hào)表達(dá)式的一般形式: 表達(dá)式表達(dá)式1 1,表達(dá)式,表達(dá)式2 2 取表達(dá)式取表達(dá)式2 2的值作為整個(gè)逗號(hào)表達(dá)式的值。的值作為整個(gè)逗
36、號(hào)表達(dá)式的值。 如:如: a=3a=3* *5,a5,a* *4 4 逗號(hào)表達(dá)式的值為:逗號(hào)表達(dá)式的值為:6060 一個(gè)逗號(hào)表達(dá)式又可以與另一個(gè)表達(dá)式組成一一個(gè)逗號(hào)表達(dá)式又可以與另一個(gè)表達(dá)式組成一個(gè)新的逗號(hào)表達(dá)式,如:個(gè)新的逗號(hào)表達(dá)式,如: (a=3(a=3* *5,a5,a* *4),a+54),a+5 因此,逗號(hào)表達(dá)式的一般形式可以擴(kuò)展為:因此,逗號(hào)表達(dá)式的一般形式可以擴(kuò)展為: 表達(dá)式表達(dá)式1 1,表達(dá)式,表達(dá)式2 2,表達(dá)式,表達(dá)式3 3,, , 表達(dá)式表達(dá)式n n 取表達(dá)式取表達(dá)式n n的值作為整個(gè)逗號(hào)表達(dá)式的值。的值作為整個(gè)逗號(hào)表達(dá)式的值。 逗號(hào)運(yùn)算符的優(yōu)先級(jí)最低逗號(hào)運(yùn)算符的優(yōu)先級(jí)最
37、低, ,且是左結(jié)合性。且是左結(jié)合性。 逗號(hào)運(yùn)算符只起到連接作用,沒(méi)有實(shí)際操作。逗號(hào)運(yùn)算符只起到連接作用,沒(méi)有實(shí)際操作。 第四章第四章 最簡(jiǎn)單的最簡(jiǎn)單的C C程序設(shè)計(jì)程序設(shè)計(jì) C C 程序最基本的成分是語(yǔ)句程序最基本的成分是語(yǔ)句 目前我們已掌握的語(yǔ)句:目前我們已掌握的語(yǔ)句: 變量說(shuō)明語(yǔ)句變量說(shuō)明語(yǔ)句: int a,b,c;: int a,b,c; 表達(dá)式語(yǔ)句:表達(dá)式語(yǔ)句: x+y;x+y; 特別地:特別地: a=5; a=5; 賦值語(yǔ)句賦值語(yǔ)句 可以編寫(xiě)簡(jiǎn)單程序如:可以編寫(xiě)簡(jiǎn)單程序如: mainmain三三 int x,y; int x,y; x=5; x=5; y=2 y=2* *x x* *
38、x+3x+3* *x-1;x-1; 該程序語(yǔ)法上完整,但還缺少輸出。該程序語(yǔ)法上完整,但還缺少輸出。 數(shù)據(jù)的輸出數(shù)據(jù)的輸出 用輸出函數(shù)實(shí)現(xiàn)用輸出函數(shù)實(shí)現(xiàn), ,其中的兩種輸出函數(shù):其中的兩種輸出函數(shù): 1.putchar 1.putchar 函數(shù)函數(shù) (字符輸出函數(shù))(字符輸出函數(shù)) 用于輸出一個(gè)字符。用于輸出一個(gè)字符。 如如: : putchar (a); putchar (a); putchar (100); putchar (100); char c=b; putchar (c); char c=b; putchar (c); 例:輸出單詞Boy的完整程序: #include “” 注意該
39、語(yǔ)句的作用 main三 char a, b, c; a=B; b=o; c=y; putchar (a); putchar (b); putchar (c); 2. printf2. printf函數(shù)(格式輸出函數(shù))函數(shù)(格式輸出函數(shù)) 任意類(lèi)型、任意格式、任意個(gè)數(shù)。任意類(lèi)型、任意格式、任意個(gè)數(shù)。 例如:例如: int a=100,b=56;int a=100,b=56; printf(“a=%d,b=%d”,a,b); printf(“a=%d,b=%d”,a,b); 普通字符普通字符 格式說(shuō)明格式說(shuō)明 格式控制格式控制 輸出表列輸出表列 輸出結(jié)果:輸出結(jié)果:a=100,b=56a=100,
40、b=56“%” “%” 后的字符稱(chēng)格式字符,不同格式字符對(duì)應(yīng)不同的數(shù)據(jù)類(lèi)型。后的字符稱(chēng)格式字符,不同格式字符對(duì)應(yīng)不同的數(shù)據(jù)類(lèi)型。 d d格式符:按整數(shù)格式輸出格式符:按整數(shù)格式輸出 幾種用法:幾種用法: %d %d 不指定寬度,按實(shí)際寬度輸出不指定寬度,按實(shí)際寬度輸出 %md %md 按指定寬度輸出,按指定寬度輸出,m m為寬度為寬度 %ld %ld 用于輸出長(zhǎng)整型數(shù)用于輸出長(zhǎng)整型數(shù) 例:例: int a=125,b=453;int a=125,b=453; long c=65535; long c=65535; printf(“a=%d,b=%5d,c=%ld”,a,b,c); printf
41、(“a=%d,b=%5d,c=%ld”,a,b,c); 輸出結(jié)果:輸出結(jié)果: a=125,b= 453,c=65535a=125,b= 453,c=65535 %ld%ld也可以按指定寬度輸出:也可以按指定寬度輸出: printf(“c=%8ld”,c);printf(“c=%8ld”,c); 輸出結(jié)果:輸出結(jié)果:c = 65535c = 65535注意:格式字符的類(lèi)型要與對(duì)應(yīng)的輸出對(duì)象的注意:格式字符的類(lèi)型要與對(duì)應(yīng)的輸出對(duì)象的類(lèi)型一致。類(lèi)型一致。 c c格式符:用于輸出字符格式符:用于輸出字符 char c=A;char c=A; printf(“c=%c,%c”,c,B); printf(
42、“c=%c,%c”,c,B); 輸出結(jié)果:輸出結(jié)果:c=A,Bc=A,B 輸出對(duì)象既可以是字符變量、字符常量,還輸出對(duì)象既可以是字符變量、字符常量,還可以是整型表達(dá)式。可以是整型表達(dá)式。 如:如: int a=100;int a=100; char b=A; char b=A; printf(“n%d,%c”,a,a); printf(“n%d,%c”,a,a); printf(“n%c,%d”,b,b); printf(“n%c,%d”,b,b); 輸出結(jié)果:輸出結(jié)果: 100,d100,d A,65 A,65 s s格式符:用于輸出字符串格式符:用于輸出字符串 %s %s 不指定寬度不指定
43、寬度 %-ms %-ms 指定寬度,左靠齊指定寬度,左靠齊 %ms %ms 指定寬度,右靠齊指定寬度,右靠齊 指定寬度指定寬度m m,只取左端,只取左端n n個(gè)字符,個(gè)字符, 右靠齊右靠齊 指定寬度指定寬度m m,只取左端,只取左端n n個(gè)字符,個(gè)字符, 左靠齊左靠齊例:例: printf(“1:%s”,”abcd”);printf(“1:%s”,”abcd”); printf(“2:%8s”,”abcd”); printf(“2:%8s”,”abcd”); printf(“3:%-8s”,”abcd”); printf(“3:%-8s”,”abcd”); printf(“4:%8.3s”,”
44、abcd”); printf(“4:%8.3s”,”abcd”); printf(“5:%-8.3s”,”abcd”); printf(“5:%-8.3s”,”abcd”);1:abcd2: abcd3:abcd 4: abc5:abc 1:abcd2: abcd3:abcd 4: abc5:abc f f格式符:按小數(shù)形式輸出實(shí)數(shù)格式符:按小數(shù)形式輸出實(shí)數(shù) %f %f 由系統(tǒng)指定寬度(由系統(tǒng)指定寬度(6 6位小數(shù))位小數(shù)) % % 指定寬度指定寬度m m,小數(shù)位數(shù),小數(shù)位數(shù)n n,右靠齊,右靠齊 %- %- 指定寬度指定寬度m m,小數(shù)位數(shù),小數(shù)位數(shù)n n,左靠齊,左靠齊 注意:寬度包括符號(hào)
45、和小數(shù)點(diǎn)注意:寬度包括符號(hào)和小數(shù)點(diǎn)。 例:例: float a=3.141592654,b=14.326795,float a=3.141592654,b=14.326795, c=-125.2468; c=-125.2468; p r i n t f ( “ n a = % f , b = % 8 . 3 f , c = % - p r i n t f ( “ n a = % f , b = % 8 . 3 f , c = % -10.2f”,a,b,c);10.2f”,a,b,c); 輸出結(jié)果:輸出結(jié)果: 完整前面的程序:完整前面的程序:mainmain三三 int x,y; int x,
46、y; x=5; x=5; y=2 y=2* *x x* *x+3x+3* *x-1;x-1; printf(“n y=%d”,y); printf(“n y=%d”,y); 程序設(shè)計(jì)例:程序設(shè)計(jì)例: 編寫(xiě)程序計(jì)算如圖中的電流編寫(xiě)程序計(jì)算如圖中的電流I I. 假設(shè)假設(shè) U=220,R1=30,R2=60,R3=45U=220,R1=30,R2=60,R3=45UIR1R2R3算法設(shè)計(jì):算法設(shè)計(jì): I=U/R1+U/R2+U/R3I=U/R1+U/R2+U/R3程序設(shè)計(jì):程序設(shè)計(jì): mainmain三三 I=U/R1+U/R2+U/R3;I=U/R1+U/R2+U/R3;int U=220,R1=
47、30,R2=60,R3=45;int U=220,R1=30,R2=60,R3=45;float I;float I;printf(“n I=%f”,I);printf(“n I=%f”,I); 正確的程序: main三 int U=220,R1=30,R2=60,R3=45; float I; I=(float)U/R1+(float)U/R2+(float)U/R3; printf(“n I=%f”,I); 考慮通用: main三 int U,R1,R2,R3; float I; 輸入 U,R1,R2,R3 I=(float)U/R1+(float)U/R2+(float)U/R3; pr
48、intf(“n I=%f”,I); 數(shù)據(jù)的輸入數(shù)據(jù)的輸入 getchargetchar函數(shù)(字符輸入)函數(shù)(字符輸入) #include “”#include “” main main三三 char c; char c; c=getchar c=getchar三三; ; 等待鍵盤(pán)輸入等待鍵盤(pán)輸入 putchar(c);putchar(c); scanf scanf 函數(shù)函數(shù)(格式輸入) 與與printfprintf函數(shù)相反。函數(shù)相反。 用于輸入若干任意類(lèi)型的數(shù)據(jù)。用于輸入若干任意類(lèi)型的數(shù)據(jù)。 scanf(“%d%d%d”,&a,&b,&c);scanf(“%d%d%d”,&a,&b,&c);
49、格式控制格式控制 地址列表地址列表 scanf(“%d%d%d”,&a,&b,&c);scanf(“%d%d%d”,&a,&b,&c); 執(zhí)行此函數(shù)時(shí),等待從鍵盤(pán)輸入三個(gè)整執(zhí)行此函數(shù)時(shí),等待從鍵盤(pán)輸入三個(gè)整數(shù)給數(shù)給a,b,ca,b,c 若從鍵盤(pán)輸入若從鍵盤(pán)輸入 3 5 83 5 8 則系統(tǒng)即從鍵盤(pán)緩沖區(qū)取出這三個(gè)數(shù)分則系統(tǒng)即從鍵盤(pán)緩沖區(qū)取出這三個(gè)數(shù)分別賦給別賦給a,b,ca,b,c 注意與注意與printfprintf的區(qū)別,注意格式的匹配的區(qū)別,注意格式的匹配如:如: scanf(“%3d%2d%4d”,&a,&b,&c);scanf(“%3d%2d%4d”,&a,&b,&c); 若從鍵盤(pán)輸
50、入若從鍵盤(pán)輸入123456789123456789 a=123,b=45,c=6789 a=123,b=45,c=6789 若想使若想使a=12,b=5,c=100a=12,b=5,c=100 則鍵盤(pán)輸入應(yīng)為:則鍵盤(pán)輸入應(yīng)為: 12 5 10012 5 100 方便的輸入格式一般不方便的輸入格式一般不 指定寬度,指定寬度, 如:如: scanf(“%d%d%d”,&a,&b,&c);scanf(“%d%d%d”,&a,&b,&c); 在鍵盤(pán)輸入時(shí),用分隔符把每個(gè)數(shù)據(jù)隔開(kāi),在鍵盤(pán)輸入時(shí),用分隔符把每個(gè)數(shù)據(jù)隔開(kāi),標(biāo)準(zhǔn)的分隔符是空格。標(biāo)準(zhǔn)的分隔符是空格。 如:如:123 150 23123 150
51、23 若想用逗號(hào)作分隔符,則:若想用逗號(hào)作分隔符,則: scanf(“%dscanf(“%d,%d%d,%d”,&a,&b,&c);%d”,&a,&b,&c); 不要隨便使用普通字符,如使用:不要隨便使用普通字符,如使用: scanf(“a=%dscanf(“a=%d,b=%d c=%d”,&a,&b,&c)b=%d c=%d”,&a,&b,&c) 對(duì)應(yīng)數(shù)據(jù)輸入:對(duì)應(yīng)數(shù)據(jù)輸入: a=123,b=150,c=23a=123,b=150,c=23 前面的歐姆定律: main三 int U,R1,R2,R3; float I; scanf(“%d%d%d%d”,&U,&R1,&R2,&R3); I=
52、(float)U/R1+(float)U/R2+(float)U/R3; printf(“n I=%f”,I); 求三角形面積求三角形面積#include “math.h”#include “math.h”mainmain三三 float a,b,c,area,s; float a,b,c,area,s; scanf ( “%f,%f,%f”, &a,&b,&c); scanf ( “%f,%f,%f”, &a,&b,&c); s=1.0/2 s=1.0/2* *(a+b+c);(a+b+c); area=sqrt (s area=sqrt (s* *(s-a)(s-a)* *(s-b)(s-
53、b)* *(s-c);(s-c); printf(“n area=%f”,area); printf(“n area=%f”,area); 使用數(shù)學(xué)函數(shù)使用數(shù)學(xué)函數(shù)使用三角函數(shù)使用三角函數(shù)#include “math.h”#include “math.h”mainmain三三 float x, y; float x, y; scanf ( “%f”, &x); scanf ( “%f”, &x); y=); y=); 以弧度為單位以弧度為單位 printf(“n y=%f”,y);printf(“n y=%f”,y); 第五章第五章 選擇結(jié)構(gòu)程序設(shè)計(jì)選擇結(jié)構(gòu)程序設(shè)計(jì) 對(duì)于如下的函數(shù)計(jì)算,算法上
54、屬于一個(gè)對(duì)于如下的函數(shù)計(jì)算,算法上屬于一個(gè)選擇結(jié)構(gòu)。選擇結(jié)構(gòu)。 y=y= 用于實(shí)現(xiàn)選擇結(jié)構(gòu)的主要是用于實(shí)現(xiàn)選擇結(jié)構(gòu)的主要是ifif語(yǔ)句。語(yǔ)句。1/x 1/x 當(dāng)當(dāng)x0 x0時(shí)時(shí) 10000 10000 當(dāng)當(dāng)x=0 x=0時(shí)時(shí)ifif語(yǔ)句的最常見(jiàn)形式為:語(yǔ)句的最常見(jiàn)形式為: if(if(關(guān)系表達(dá)式關(guān)系表達(dá)式) )語(yǔ)句語(yǔ)句1 1; else else 語(yǔ)句語(yǔ)句2 2;如:如: if(x!=0) y=1/x;if(x!=0) y=1/x; else y=10000; else y=10000;其中其中 x!=0 x!=0 就是一個(gè)關(guān)系表達(dá)式就是一個(gè)關(guān)系表達(dá)式 != != 就是一個(gè)關(guān)系運(yùn)算符就是一個(gè)關(guān)
55、系運(yùn)算符5 51 1 關(guān)系運(yùn)算符和關(guān)系表達(dá)式關(guān)系運(yùn)算符和關(guān)系表達(dá)式1 1、關(guān)系運(yùn)算符、關(guān)系運(yùn)算符用于進(jìn)行比較運(yùn)算的運(yùn)算符。共有六種:用于進(jìn)行比較運(yùn)算的運(yùn)算符。共有六種: = = = != = = = !=優(yōu)先級(jí)與結(jié)合性:優(yōu)先級(jí)與結(jié)合性: 前前4 4種大于后兩種。種大于后兩種。 低于算術(shù)運(yùn)算符而高于賦值運(yùn)算符。低于算術(shù)運(yùn)算符而高于賦值運(yùn)算符。 左結(jié)合性。左結(jié)合性。2 2、關(guān)系表達(dá)式、關(guān)系表達(dá)式一般形式:一般形式:表達(dá)式關(guān)系運(yùn)算符表達(dá)式表達(dá)式關(guān)系運(yùn)算符表達(dá)式 如:如:ab a+bb+cab a+bb+c 經(jīng)過(guò)關(guān)系運(yùn)算后最終有一個(gè)值經(jīng)過(guò)關(guān)系運(yùn)算后最終有一個(gè)值-關(guān)系表達(dá)式的關(guān)系表達(dá)式的值。值。 關(guān)系表
56、達(dá)式的值只有關(guān)系表達(dá)式的值只有 0(0(假)或假)或1 1(真)(真)例:設(shè)例:設(shè) a=2, b=4, c=1 a=2, b=4, c=1 計(jì)算以下關(guān)系表達(dá)式的計(jì)算以下關(guān)系表達(dá)式的值:值: ab ab a+bb+ca+bb+cab ab 可以是字符表達(dá)式可以是字符表達(dá)式(x=2x=2)(y=5) (y=5) 可以是賦值表達(dá)式可以是賦值表達(dá)式(a(bc) (a(bc) 甚至可以是關(guān)系表達(dá)式甚至可以是關(guān)系表達(dá)式ab= =bcab= =byx+zyxy=yzxy=yz=xzyz=xzyxz yxz (x=y-2)z+1=x+y(x=y-2)z+1=x+ya=x+y=x+zx+1a=x+y=x+zx+
57、15 52 2 邏輯運(yùn)算符和邏輯表達(dá)式邏輯運(yùn)算符和邏輯表達(dá)式有時(shí),只用一個(gè)簡(jiǎn)單的關(guān)系表達(dá)式無(wú)法完整地表達(dá)有時(shí),只用一個(gè)簡(jiǎn)單的關(guān)系表達(dá)式無(wú)法完整地表達(dá)一個(gè)條件,如:一個(gè)條件,如: y= y= 其中的條件需要用邏輯表達(dá)式來(lái)表達(dá):其中的條件需要用邏輯表達(dá)式來(lái)表達(dá): x!=0 &a!=0 x!=0 &a!=0 & &就是一種邏輯運(yùn)算符。就是一種邏輯運(yùn)算符。1/x+1/a 1/x+1/a 當(dāng)當(dāng)x0,a0 x0,a0時(shí)時(shí) 10000 10000 其它其它1 1、邏輯運(yùn)算符、邏輯運(yùn)算符& & 邏輯與邏輯與 兩個(gè)操作數(shù)都為真時(shí)兩個(gè)操作數(shù)都為真時(shí)&運(yùn)算結(jié)果為真。運(yùn)算結(jié)果為真。| | 邏輯或邏輯或 兩個(gè)操作數(shù)之一
58、為真時(shí)即為真。兩個(gè)操作數(shù)之一為真時(shí)即為真。! ! 邏輯非邏輯非 (單目運(yùn)算)(單目運(yùn)算) 操作數(shù)為真(假)時(shí)為假(真)。操作數(shù)為真(假)時(shí)為假(真)。 如:若如:若 a=2, b=3, c=0 a=2, b=3, c=0 則:則: ab&bc 0 ab|bc 1 !(ab) 0ab&bc 0 ab|bc 1 !(ab) 0優(yōu)先級(jí)(由高到低):優(yōu)先級(jí)(由高到低):! ! 邏輯非邏輯非算術(shù)運(yùn)算符算術(shù)運(yùn)算符關(guān)系運(yùn)算符關(guān)系運(yùn)算符&邏輯與邏輯與|邏輯或邏輯或賦值運(yùn)算符賦值運(yùn)算符結(jié)合性:左結(jié)合性結(jié)合性:左結(jié)合性2 2、邏輯表達(dá)式、邏輯表達(dá)式 實(shí)際上,前面所舉例子即為邏輯表達(dá)式:實(shí)際上,前面所舉例子即為邏輯
59、表達(dá)式: ab&bc ab|bc !(ab) ab&bc ab|bc !(ab) 邏輯表達(dá)式的值同樣只有邏輯表達(dá)式的值同樣只有1 1和和0 0,但參加邏輯,但參加邏輯 運(yùn)算的操作數(shù)可以是任意類(lèi)型的數(shù)據(jù),可以是運(yùn)算的操作數(shù)可以是任意類(lèi)型的數(shù)據(jù),可以是 任任意大小。意大小。例:例: a+b&b+c a+b&b+c 是合法的邏輯表達(dá)式。是合法的邏輯表達(dá)式。此時(shí)以此時(shí)以0 0代表假,非代表假,非0 0代表真。代表真。例:設(shè)例:設(shè) a=2, b=3, c=0 , a=2, b=3, c=0 , 計(jì)算以下表達(dá)式的值:計(jì)算以下表達(dá)式的值: a&b b&c a|ca&b b&c a|c !a+c&b+c !a
60、+c&b+c !c+a=b|ba !c+a=b|bc+10 a+c|a+bc+10對(duì)于邏輯表達(dá)式的兩種基本技能:對(duì)于邏輯表達(dá)式的兩種基本技能: 邏輯表達(dá)式的計(jì)算。邏輯表達(dá)式的計(jì)算。 邏輯表達(dá)式的構(gòu)造。邏輯表達(dá)式的構(gòu)造。邏輯表達(dá)式的構(gòu)造舉例:邏輯表達(dá)式的構(gòu)造舉例: abcabc a a和和b b之一為之一為0 0,但不同時(shí)為,但不同時(shí)為0 0a=b=c 5=4=3a=b=c 5=4=3a=b&b=ca=b&b=ca=0&b!=0 | a!=0&b=0a*b=0a*b=0&a+b!=0對(duì)于對(duì)于 a=0 & b!=0 | a!=0 & b=0a=0 & b!=0 | a!=0 & b=0 a=0 a
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 商業(yè)零售業(yè)的數(shù)字化轉(zhuǎn)型與領(lǐng)導(dǎo)力轉(zhuǎn)型
- 2025年互聯(lián)網(wǎng)金融平臺(tái)合規(guī)整改對(duì)消費(fèi)金融業(yè)務(wù)的影響及應(yīng)對(duì)策略報(bào)告
- 基于數(shù)字孿生的智能制造企業(yè)戰(zhàn)略布局
- 打造企業(yè)專(zhuān)屬的數(shù)字辦公平臺(tái)策略
- 主題樂(lè)園項(xiàng)目土地使用與規(guī)劃方案
- 碳化硅功率器件項(xiàng)目運(yùn)營(yíng)管理方案(僅供參考)
- 老舊小區(qū)改造融資方案與資金籌措計(jì)劃
- 探索數(shù)字化轉(zhuǎn)型背景下寵物業(yè)的未來(lái)趨勢(shì)
- 企業(yè)數(shù)字化轉(zhuǎn)型與個(gè)人隱私保護(hù)的挑戰(zhàn)和機(jī)遇
- 基于數(shù)字技術(shù)的職業(yè)能力提升計(jì)劃與實(shí)踐
- 2023年上海市浦東新區(qū)中考語(yǔ)文二模試卷
- 小學(xué)數(shù)學(xué)跨學(xué)科學(xué)習(xí)的實(shí)踐挑戰(zhàn)及突破策略
- 市場(chǎng)經(jīng)理招聘面試題與參考回答(某大型國(guó)企)2024年
- GB/T 10433-2024緊固件電弧螺柱焊用螺柱和瓷環(huán)
- 數(shù)學(xué)家華羅庚課件
- 《人工智能基礎(chǔ)》課件-AI的前世今生:她從哪里來(lái)
- 奶茶店食品安全管理制度文本
- AI新技術(shù)智慧樹(shù)知到期末考試答案章節(jié)答案2024年長(zhǎng)春職業(yè)技術(shù)學(xué)院
- 國(guó)企集團(tuán)公司各崗位廉潔風(fēng)險(xiǎn)點(diǎn)防控表格(廉政)范本
- 《高脂血癥》課件
- 中央2024年中央民族干部學(xué)院招聘 筆試歷年典型考題寄考點(diǎn)剖析含答案附詳解
評(píng)論
0/150
提交評(píng)論