版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、林小茶l1.1 程序設(shè)計(jì)言語(yǔ)程序設(shè)計(jì)言語(yǔ)l1.2 經(jīng)過(guò)實(shí)例認(rèn)識(shí)經(jīng)過(guò)實(shí)例認(rèn)識(shí)C程序的構(gòu)造程序的構(gòu)造l1.3 C言語(yǔ)的規(guī)范和編譯器言語(yǔ)的規(guī)范和編譯器 l1.4 程序的調(diào)試程序的調(diào)試 l程序程序l 計(jì)算機(jī)程序是由計(jì)算機(jī)指令構(gòu)成的序列計(jì)算機(jī)程序是由計(jì)算機(jī)指令構(gòu)成的序列 。l 計(jì)算機(jī)程序的操作對(duì)象是計(jì)算機(jī)程序的操作對(duì)象是“數(shù)據(jù)數(shù)據(jù) 。l程序設(shè)計(jì)言語(yǔ)程序設(shè)計(jì)言語(yǔ)l 低級(jí)言語(yǔ)低級(jí)言語(yǔ) 機(jī)器言語(yǔ)機(jī)器言語(yǔ) 101110001110100000000011 l 匯編言語(yǔ)匯編言語(yǔ) mov ax,1000 l l 高級(jí)言語(yǔ)高級(jí)言語(yǔ) a=1000l a=a+1l編譯程序編譯程序 l 高級(jí)言語(yǔ)到機(jī)器言語(yǔ)要經(jīng)過(guò)編譯程序進(jìn)展
2、高級(jí)言語(yǔ)到機(jī)器言語(yǔ)要經(jīng)過(guò)編譯程序進(jìn)展“翻翻譯譯 。l編譯程序的種類編譯程序的種類l解釋系統(tǒng)解釋系統(tǒng) l 對(duì)高級(jí)言語(yǔ)編寫的程序翻譯一句執(zhí)行一對(duì)高級(jí)言語(yǔ)編寫的程序翻譯一句執(zhí)行一句句 。l編譯系統(tǒng)編譯系統(tǒng) l 將高級(jí)言語(yǔ)編寫的程序文件全部翻譯成機(jī)將高級(jí)言語(yǔ)編寫的程序文件全部翻譯成機(jī)器語(yǔ)器語(yǔ)l 言,生成可執(zhí)行文件以后再執(zhí)行。言,生成可執(zhí)行文件以后再執(zhí)行。 l問(wèn)候界面問(wèn)候界面 l例例1.1 1.1 在屏幕上顯示在屏幕上顯示 welcome welcome 字樣。字樣。l / /* *-* */ /l / /* *A program to print welcome -A program to print
3、 welcome -* */ /l #include stdio.h #include stdio.hl void main() void main()l l printf(welcome); printf(welcome);l v 用 /* 和 */ 括起來(lái)的是注釋行。注釋行用于闡明程序的功能和目的,編譯系統(tǒng)會(huì)跳過(guò)注釋行,不對(duì)其進(jìn)展翻譯。運(yùn)用 /* 和 */ 括起來(lái)的語(yǔ)句并不一定在一行,可以是多行。v 以#開場(chǎng)的語(yǔ)句是預(yù)處置命令。這些命令是在編譯系統(tǒng)翻譯代碼之前需求由預(yù)處置程序處置的語(yǔ)句。v 每個(gè)C程序都必需包含一個(gè)主函數(shù)main(),也只能包含一個(gè)主函數(shù)。用括起來(lái)的部分是一個(gè)程序模塊,在C
4、言語(yǔ)中也稱為分程序,每個(gè)函數(shù)中都至少有一個(gè)分程序。C程序的執(zhí)行是從主函數(shù)中的第一句開場(chǎng),到主函數(shù)中的最后一句終了。v分號(hào)分號(hào)“;是;是C言語(yǔ)的執(zhí)行語(yǔ)句和闡明語(yǔ)句的終言語(yǔ)的執(zhí)行語(yǔ)句和闡明語(yǔ)句的終了符。了符。v C語(yǔ)句在書寫上采用自在格式。但是好的程序語(yǔ)句在書寫上采用自在格式。但是好的程序員應(yīng)該學(xué)會(huì)運(yùn)用縮進(jìn)格式。員應(yīng)該學(xué)會(huì)運(yùn)用縮進(jìn)格式。v C言語(yǔ)的關(guān)鍵字和特定字運(yùn)用小寫字母。言語(yǔ)的關(guān)鍵字和特定字運(yùn)用小寫字母。v printf是是C言語(yǔ)提供的規(guī)范輸入輸出庫(kù)函數(shù)。言語(yǔ)提供的規(guī)范輸入輸出庫(kù)函數(shù)。l計(jì)算兩個(gè)整數(shù)的差計(jì)算兩個(gè)整數(shù)的差 l例例1.2 1.2 計(jì)算兩個(gè)整數(shù)計(jì)算兩個(gè)整數(shù)3030與與2020的差,并
5、將結(jié)果在屏幕上。的差,并將結(jié)果在屏幕上。l/ /* *-The difference between a and -The difference between a and b .b .* */ /l #include stdio.h #include stdio.hl void main( ) void main( )l l int a,b,difference; int a,b,difference;l a=30; b=20; a=30; b=20;l difference=a-b; difference=a-b;l printf(The difference between a and
6、b is printf(The difference between a and b is %d. n%d. nl ,difference); ,difference);l l運(yùn)轉(zhuǎn)結(jié)果:運(yùn)轉(zhuǎn)結(jié)果:lThe difference between a and b is 10.The difference between a and b is 10.分析與闡明:分析與闡明: 變量的數(shù)據(jù)類型定義。變量的數(shù)據(jù)類型定義。 變量是由程序命名的一塊計(jì)算機(jī)內(nèi)存區(qū)域,變量是由程序命名的一塊計(jì)算機(jī)內(nèi)存區(qū)域,用來(lái)存儲(chǔ)一個(gè)可以變化的數(shù)值。每個(gè)變量保管用來(lái)存儲(chǔ)一個(gè)可以變化的數(shù)值。每個(gè)變量保管的是一個(gè)特定的數(shù)據(jù)類型的數(shù)值。
7、在的是一個(gè)特定的數(shù)據(jù)類型的數(shù)值。在C言語(yǔ)中規(guī)言語(yǔ)中規(guī)定,任何變量都要經(jīng)過(guò)數(shù)據(jù)類型的定義,以便定,任何變量都要經(jīng)過(guò)數(shù)據(jù)類型的定義,以便在程序運(yùn)轉(zhuǎn)時(shí)分配相應(yīng)的存儲(chǔ)空間。在程序運(yùn)轉(zhuǎn)時(shí)分配相應(yīng)的存儲(chǔ)空間。 直接常量又稱無(wú)名常量或文字常量。直接常量又稱無(wú)名常量或文字常量。 常量是在程序執(zhí)行過(guò)程中不會(huì)變化的數(shù)值,常量是在程序執(zhí)行過(guò)程中不會(huì)變化的數(shù)值,直接常量就是在代碼中直接書寫的數(shù)值,沒(méi)有直接常量就是在代碼中直接書寫的數(shù)值,沒(méi)有名字。名字。賦值運(yùn)算符賦值運(yùn)算符 =。 留意,這里的留意,這里的 = 與數(shù)學(xué)上的等號(hào)在概念上完與數(shù)學(xué)上的等號(hào)在概念上完 全不同。賦值運(yùn)算符號(hào)最簡(jiǎn)單的用法是:賦值運(yùn)全不同。賦值運(yùn)算符
8、號(hào)最簡(jiǎn)單的用法是:賦值運(yùn) 算符的左邊是一個(gè)變量,右邊是一個(gè)常量。其功算符的左邊是一個(gè)變量,右邊是一個(gè)常量。其功 能是將右邊常量的值送到左邊的變量中,使變量能是將右邊常量的值送到左邊的變量中,使變量 中的內(nèi)容與常量相等。例如中的內(nèi)容與常量相等。例如a=30;就表示使就表示使a中的中的 內(nèi)容變?yōu)閮?nèi)容變?yōu)?0。 運(yùn)算符運(yùn)算符 -。 difference=a-b;表示將表示將a的內(nèi)容與的內(nèi)容與b的內(nèi)容相減的內(nèi)容相減 以后,賦值到以后,賦值到difference變量中。變量中。vprintf運(yùn)用初步運(yùn)用初步v printf是一個(gè)規(guī)范輸出函數(shù)。是一個(gè)規(guī)范輸出函數(shù)。v 它執(zhí)行格式化輸出,它執(zhí)行格式化輸出,v
9、 調(diào)用格式是:調(diào)用格式是:v printf( 格式信息格式信息, 數(shù)據(jù)參數(shù)數(shù)據(jù)參數(shù)1, 數(shù)據(jù)參數(shù)數(shù)據(jù)參數(shù)2,);v 數(shù)據(jù)參數(shù)可有可無(wú)。格式信息用于控制數(shù)據(jù)數(shù)據(jù)參數(shù)可有可無(wú)。格式信息用于控制數(shù)據(jù)參數(shù)的輸出格式。格式信息中字符除了冠以斜參數(shù)的輸出格式。格式信息中字符除了冠以斜杠杠“和和“%的字符,其它字符原封不動(dòng)按照的字符,其它字符原封不動(dòng)按照原樣輸出到屏幕上。原樣輸出到屏幕上。 格式信息中的格式信息中的%d是轉(zhuǎn)換闡明,它指定了顯示是轉(zhuǎn)換闡明,它指定了顯示 數(shù)據(jù)參數(shù)的格式。數(shù)據(jù)參數(shù)的格式。printf(“%d,i);表示將參數(shù)表示將參數(shù)i 按整型十進(jìn)制輸出。按整型十進(jìn)制輸出。C言語(yǔ)規(guī)定,轉(zhuǎn)換闡明符
10、言語(yǔ)規(guī)定,轉(zhuǎn)換闡明符 的個(gè)數(shù)應(yīng)與參數(shù)的個(gè)數(shù)相等。的個(gè)數(shù)應(yīng)與參數(shù)的個(gè)數(shù)相等。 例如:例如:printf(“%d %d %dn,x,y,z); 格式信息中的格式信息中的n是字符本義序列。是字符本義序列。n表示換行。表示換行。l運(yùn)用自定義函數(shù)計(jì)算兩個(gè)整數(shù)的差運(yùn)用自定義函數(shù)計(jì)算兩個(gè)整數(shù)的差l例例1.31.3l / /* *- The difference between a and b - The difference between a and b ( using Function)( using Function)* */ /l #include stdio.h #include stdio.hl
11、 void show(int x,int y); / void show(int x,int y); /* *自定義自定義函數(shù)闡明函數(shù)闡明 * */ /l void main( ) / void main( ) /* * mainmain函數(shù)定義函數(shù)定義 * */ /l int a,b; int a,b;l a=30; b=20; a=30; b=20;l show(a,b); show(a,b);l printf(See you!n); printf(See you!n);l l void show(x,y) / void show(x,y) /* *自定自定義函數(shù)定義義函數(shù)定義 * */
12、/l int x,y; int x,y;l int difference; int difference;l difference=x-y; difference=x-y;l printf(The difference between a and b printf(The difference between a and b is %d.n,difference);is %d.n,difference);l return; return;l 運(yùn)轉(zhuǎn)結(jié)果:運(yùn)轉(zhuǎn)結(jié)果:The difference between a and b is 10.The difference between a and b
13、 is 10.See you!See you!v C言語(yǔ)的規(guī)范言語(yǔ)的規(guī)范 v83 ANSI C v87 ANSI C vANSI/ISO standard C vISO C vC99 v常用的常用的C言語(yǔ)編譯器言語(yǔ)編譯器 vTurbo C 2.0 vTurbo C+ 3.0 vVisual C+ l調(diào)試步驟調(diào)試步驟l編輯源程序編輯源程序l編譯源程序編譯源程序l銜接目的程序銜接目的程序l運(yùn)轉(zhuǎn)可執(zhí)行程序運(yùn)轉(zhuǎn)可執(zhí)行程序 l2.1 標(biāo)識(shí)符、變量與常量標(biāo)識(shí)符、變量與常量 l2.2 C言語(yǔ)的數(shù)據(jù)類型言語(yǔ)的數(shù)據(jù)類型l2.3 運(yùn)算符和表達(dá)式運(yùn)算符和表達(dá)式l2.4 指針類型與指針運(yùn)算符指針類型與指針運(yùn)算符l字符
14、集字符集l 字符集是高級(jí)言語(yǔ)的編譯系統(tǒng)所能識(shí)別的字符集是高級(jí)言語(yǔ)的編譯系統(tǒng)所能識(shí)別的字母、字母、l數(shù)字、和特殊符號(hào)。每種高級(jí)言語(yǔ)都有本人特?cái)?shù)字、和特殊符號(hào)。每種高級(jí)言語(yǔ)都有本人特定的字定的字l符集合。符集合。l標(biāo)識(shí)符標(biāo)識(shí)符l 標(biāo)識(shí)符是用來(lái)標(biāo)識(shí)在標(biāo)識(shí)符是用來(lái)標(biāo)識(shí)在C程序中的變量、常量程序中的變量、常量指符號(hào)常量、數(shù)據(jù)類型和函數(shù)的。通俗一指符號(hào)常量、數(shù)據(jù)類型和函數(shù)的。通俗一點(diǎn)說(shuō),標(biāo)識(shí)符是程序員為變量、常量或者函數(shù)點(diǎn)說(shuō),標(biāo)識(shí)符是程序員為變量、常量或者函數(shù)起的名字,它實(shí)踐上是一個(gè)字符序列。起的名字,它實(shí)踐上是一個(gè)字符序列。 (1) 大、小寫英文字母:大、小寫英文字母: A ,B, ,Z,a,b,z (
15、2) 數(shù)字:數(shù)字: 0,1,2,9 (3) 運(yùn)算符:運(yùn)算符: + * / % = & | ? ! (4) 括號(hào):括號(hào): (5) 標(biāo)點(diǎn)符號(hào):標(biāo)點(diǎn)符號(hào): : ; (6) 特殊符號(hào):特殊符號(hào): _ $ # (7) 空白符:空格符、換行符、制表符??瞻追嚎崭穹?、換行符、制表符。C言語(yǔ)的字符集合包括:言語(yǔ)的字符集合包括:(1) 字母或下劃線中的任一字符打頭。字母或下劃線中的任一字符打頭。(2) 在第一個(gè)字符后,可以是恣意的數(shù)字、字在第一個(gè)字符后,可以是恣意的數(shù)字、字母、下劃線組成的序列。長(zhǎng)度不超越母、下劃線組成的序列。長(zhǎng)度不超越8個(gè)。個(gè)。 關(guān)鍵字保管字關(guān)鍵字保管字標(biāo)識(shí)符的分類:標(biāo)識(shí)符的分類:
16、特定字特定字 用戶定義字用戶定義字任何一個(gè)標(biāo)識(shí)符必需符合以下語(yǔ)法規(guī)那么:任何一個(gè)標(biāo)識(shí)符必需符合以下語(yǔ)法規(guī)那么: 關(guān)鍵字:又稱保管字,普通為小寫字母。關(guān)鍵字:又稱保管字,普通為小寫字母。關(guān)鍵字是關(guān)鍵字是C編譯程序預(yù)先登錄的標(biāo)識(shí)符,它們編譯程序預(yù)先登錄的標(biāo)識(shí)符,它們代表固定的意義,用戶不能隨意運(yùn)用。代表固定的意義,用戶不能隨意運(yùn)用。 假設(shè)隨意運(yùn)用,能夠出現(xiàn)意想不到的錯(cuò)誤,假設(shè)隨意運(yùn)用,能夠出現(xiàn)意想不到的錯(cuò)誤,編譯能經(jīng)過(guò),但運(yùn)轉(zhuǎn)結(jié)果不對(duì),且不容易檢編譯能經(jīng)過(guò),但運(yùn)轉(zhuǎn)結(jié)果不對(duì),且不容易檢查錯(cuò)誤之所在。查錯(cuò)誤之所在。關(guān)鍵字關(guān)鍵字保管字保管字 特定字特定字 特定字:具有特殊含義的標(biāo)識(shí)符。它們雖特定字:具有
17、特殊含義的標(biāo)識(shí)符。它們雖然不是關(guān)鍵字,但是在習(xí)慣上把它們看成關(guān)鍵然不是關(guān)鍵字,但是在習(xí)慣上把它們看成關(guān)鍵字。所以普通用戶定義的標(biāo)識(shí)符也不要運(yùn)用它字。所以普通用戶定義的標(biāo)識(shí)符也不要運(yùn)用它們。們。 特定字包括:特定字包括: define undef include ifdef ifndef endif line 用戶按照語(yǔ)法規(guī)那么定義的標(biāo)識(shí)符。用戶定義字用戶按照語(yǔ)法規(guī)那么定義的標(biāo)識(shí)符。用戶定義字可以用來(lái)標(biāo)識(shí)用戶本人運(yùn)用的變量,符號(hào)常量、數(shù)可以用來(lái)標(biāo)識(shí)用戶本人運(yùn)用的變量,符號(hào)常量、數(shù)據(jù)類型以及函數(shù)等。據(jù)類型以及函數(shù)等。 留意留意 (1) (1) 不能運(yùn)用關(guān)鍵字和特定字。不能運(yùn)用關(guān)鍵字和特定字。 (2
18、) (2) 用戶定義字為了標(biāo)識(shí)不同的對(duì)象,標(biāo)識(shí)符的前用戶定義字為了標(biāo)識(shí)不同的對(duì)象,標(biāo)識(shí)符的前8 8個(gè)甚至個(gè)甚至7 7個(gè)字符要有區(qū)別。個(gè)字符要有區(qū)別。 (3) (3) 標(biāo)識(shí)符最好有含義。標(biāo)識(shí)符最好有含義。 (4) (4) 防止運(yùn)用容易混淆的字符。如防止運(yùn)用容易混淆的字符。如l l與與1 1,0 0與與o, zo, z與與2 2等。等。 (5) (5)大、小寫代表不同的意義。大、小寫代表不同的意義。 (6) (6) 盡量不要與某個(gè)庫(kù)函數(shù)同名。盡量不要與某個(gè)庫(kù)函數(shù)同名。用戶定義字用戶定義字l變量變量l 變量是由程序命名的一塊計(jì)算機(jī)內(nèi)變量是由程序命名的一塊計(jì)算機(jī)內(nèi)存區(qū)存區(qū)l域,是用來(lái)存儲(chǔ)一個(gè)可以變化的
19、數(shù)值。域,是用來(lái)存儲(chǔ)一個(gè)可以變化的數(shù)值。 在運(yùn)用一個(gè)變量之前,程序員必需為每個(gè)變量起在運(yùn)用一個(gè)變量之前,程序員必需為每個(gè)變量起個(gè)名字,同時(shí)還要聲明它的數(shù)據(jù)類型,以便編譯系統(tǒng)個(gè)名字,同時(shí)還要聲明它的數(shù)據(jù)類型,以便編譯系統(tǒng)根據(jù)不同的數(shù)據(jù)類型為其靜態(tài)地分配內(nèi)存空間。我們根據(jù)不同的數(shù)據(jù)類型為其靜態(tài)地分配內(nèi)存空間。我們稱之為定義變量。稱之為定義變量。 定義變量的格式為:定義變量的格式為: 類型闡明符類型闡明符 變量名表變量名表 ; 關(guān)于不定值關(guān)于不定值 定義變量定義變量 常量常量 在程序的執(zhí)行過(guò)程中數(shù)值不會(huì)發(fā)生改動(dòng)的在程序的執(zhí)行過(guò)程中數(shù)值不會(huì)發(fā)生改動(dòng)的量。量。無(wú)名常量或稱文字常量無(wú)名常量或稱文字常量 a
20、=100; 100是無(wú)名常量是無(wú)名常量 符號(hào)常量用預(yù)處置命令符號(hào)常量用預(yù)處置命令#define為常量命為常量命名名 #deine MAX 100 整型整型 int 根本數(shù)據(jù)類型根本數(shù)據(jù)類型 浮點(diǎn)型浮點(diǎn)型 float double 字符型字符型 char 數(shù)組數(shù)組 以以為標(biāo)志為標(biāo)志 構(gòu)造構(gòu)造 struct 構(gòu)造類型構(gòu)造類型 復(fù)雜數(shù)據(jù)類型復(fù)雜數(shù)據(jù)類型 結(jié)合結(jié)合 union 枚舉枚舉 enum 指針類型指針類型 以以 * 為標(biāo)志為標(biāo)志 C言語(yǔ)的數(shù)據(jù)類型整型整型 短整型短整型 short int 長(zhǎng)整型長(zhǎng)整型 long int 普通整型普通整型 int 浮點(diǎn)型浮點(diǎn)型 普通浮點(diǎn)型普通浮點(diǎn)型 float
21、雙精度浮點(diǎn)型雙精度浮點(diǎn)型 double 字符型字符型 char 不同數(shù)據(jù)類型的數(shù)據(jù)由于其在內(nèi)存的存儲(chǔ)方式不不同數(shù)據(jù)類型的數(shù)據(jù)由于其在內(nèi)存的存儲(chǔ)方式不同,存儲(chǔ)所占的二進(jìn)制位同,存儲(chǔ)所占的二進(jìn)制位bitbit大多不一樣。即使是大多不一樣。即使是一樣類型的數(shù)據(jù)在不同種類的計(jì)算機(jī)所占位一樣類型的數(shù)據(jù)在不同種類的計(jì)算機(jī)所占位bitbit數(shù)數(shù)也不完全一樣。也不完全一樣。 2.2.2 問(wèn)題的提出問(wèn)題的提出問(wèn)題一:?jiǎn)栴}一: 從鍵盤接納一個(gè)字符,輸出該字符從鍵盤接納一個(gè)字符,輸出該字符的按的按 字典陳列順序的下一個(gè)字符,例如,輸字典陳列順序的下一個(gè)字符,例如,輸入入a, 輸出輸出b。問(wèn)題二:?jiǎn)栴}二: 從鍵盤接納
22、兩個(gè)整數(shù),輸出它們的從鍵盤接納兩個(gè)整數(shù),輸出它們的和。和。問(wèn)題三:?jiǎn)栴}三: 從鍵盤接納兩個(gè)浮點(diǎn)數(shù),輸出它們從鍵盤接納兩個(gè)浮點(diǎn)數(shù),輸出它們的乘積。的乘積。l整型數(shù)據(jù)在內(nèi)存中的存儲(chǔ)方式整型數(shù)據(jù)在內(nèi)存中的存儲(chǔ)方式l整型變量整型變量 l整型常量整型常量 l整型數(shù)據(jù)的輸出整型數(shù)據(jù)的輸出 l整型數(shù)據(jù)的輸入整型數(shù)據(jù)的輸入 在在IBM PC機(jī)上,普通整型占機(jī)上,普通整型占 16位位bit,短整型也占短整型也占 16位位bit,而長(zhǎng)整型占,而長(zhǎng)整型占32位位bit。根據(jù)整型數(shù)據(jù)所占的位數(shù),計(jì)算一個(gè)。根據(jù)整型數(shù)據(jù)所占的位數(shù),計(jì)算一個(gè)整型數(shù)據(jù)能表示的數(shù)據(jù)的取值范圍。整型數(shù)據(jù)能表示的數(shù)據(jù)的取值范圍。 第位是符號(hào)位,假
23、設(shè)符號(hào)位為第位是符號(hào)位,假設(shè)符號(hào)位為0,表示是,表示是正整數(shù),從到正整數(shù),從到15位全為位全為1時(shí)表示的數(shù)最大。時(shí)表示的數(shù)最大。01111 1215 15個(gè)個(gè)1 那么那么16bit能表示的最大整數(shù)是能表示的最大整數(shù)是215 1 ,即,即32767。 整型數(shù)據(jù)在內(nèi)存中的存儲(chǔ)方式整型數(shù)據(jù)在內(nèi)存中的存儲(chǔ)方式 假設(shè)符號(hào)位為假設(shè)符號(hào)位為1,表示是負(fù)整數(shù),從到,表示是負(fù)整數(shù),從到15位都為位都為0時(shí)表示的數(shù)最小。時(shí)表示的數(shù)最小。10 00 15個(gè)個(gè)0 在計(jì)算機(jī)中,這個(gè)數(shù)是在計(jì)算機(jī)中,這個(gè)數(shù)是-215的補(bǔ)碼表示。因此,的補(bǔ)碼表示。因此,最小整數(shù)是最小整數(shù)是-215,即,即 -32768。 按照整型變量所占的
24、二進(jìn)制位數(shù)來(lái)分類:按照整型變量所占的二進(jìn)制位數(shù)來(lái)分類: short短整型短整型 int 普通整型普通整型 long 長(zhǎng)整型長(zhǎng)整型根據(jù)整型變量能否帶符號(hào)位來(lái)分類:根據(jù)整型變量能否帶符號(hào)位來(lái)分類: 不帶符號(hào)的整型變量不帶符號(hào)的整型變量 帶符號(hào)的整型變量帶符號(hào)的整型變量 無(wú)符號(hào)用關(guān)鍵字無(wú)符號(hào)用關(guān)鍵字unsigned表示表示闡明整型變量的語(yǔ)法是:闡明整型變量的語(yǔ)法是: 限定詞限定詞 int 變量名表;變量名表; 整型變量整型變量整型常量表示:整型常量表示: 十進(jìn)制表示十進(jìn)制表示 八進(jìn)制表示八進(jìn)制表示 以數(shù)字以數(shù)字 0開頭開頭 十六進(jìn)制表示十六進(jìn)制表示 以數(shù)字以數(shù)字0和和x開頭。開頭。 int a,b,
25、c; a = 10; b = 010; c = 0 x10; 長(zhǎng)整型:要在數(shù)字后加上字母長(zhǎng)整型:要在數(shù)字后加上字母L 。 long s; s=10L ;整型常量整型常量 需求留意的是:假設(shè)整型常量超越機(jī)需求留意的是:假設(shè)整型常量超越機(jī)器所能表示的范圍,那么會(huì)發(fā)生溢出,而器所能表示的范圍,那么會(huì)發(fā)生溢出,而在在C言語(yǔ)中的整數(shù)溢出并不會(huì)使程序出錯(cuò),言語(yǔ)中的整數(shù)溢出并不會(huì)使程序出錯(cuò),而是得到一個(gè)非正確的值。而是得到一個(gè)非正確的值。 int a,b; a = 10000; b = 10000000; 變量變量b的值會(huì)被系統(tǒng)以為是的值會(huì)被系統(tǒng)以為是-27008。%d 表示把數(shù)據(jù)按十進(jìn)制整型輸出;表示把數(shù)
26、據(jù)按十進(jìn)制整型輸出;%o 表示把數(shù)據(jù)按八進(jìn)制整型輸出;表示把數(shù)據(jù)按八進(jìn)制整型輸出;%x 表示把數(shù)據(jù)按十六進(jìn)制整型輸出;表示把數(shù)據(jù)按十六進(jìn)制整型輸出;%u 表示把數(shù)據(jù)參數(shù)按無(wú)符號(hào)整型輸出。表示把數(shù)據(jù)參數(shù)按無(wú)符號(hào)整型輸出。留意:留意:除了除了%d,其他的格式都將數(shù)據(jù)作為無(wú)符號(hào)數(shù)輸出。,其他的格式都將數(shù)據(jù)作為無(wú)符號(hào)數(shù)輸出。printf(%ld,100000L); 正確正確printf(%d,100000L); 結(jié)果結(jié)果 -31072 整型數(shù)據(jù)的輸出整型數(shù)據(jù)的輸出例例2.1 #include stdio.h void main() int x,y,z; x=12, y=012 , z=0 x12; p
27、rintf(%d,%d,%dn,x,y,z); printf(%o,%o,%on,x,y,z); printf(%x,%x,%xn,x,y,z); 運(yùn)轉(zhuǎn)結(jié)果:運(yùn)轉(zhuǎn)結(jié)果:12,10,1814,12,22c,a,12例例2.2 輸出負(fù)數(shù)。輸出負(fù)數(shù)。 #include stdio.h void main() int x,y,z; x=-12, y=-012 , z=-0 x12; printf(%d,%d,%dn,x,y,z); printf(%o,%o,%on,x,y,z); printf(%x,%x,%xn,x,y,z); 運(yùn)轉(zhuǎn)結(jié)果:運(yùn)轉(zhuǎn)結(jié)果:-12,-10,-18177764,17766,17
28、7756fff4,fff6,ffee闡明:本程序中的闡明:本程序中的-012和和-0 x12并不是八進(jìn)制和十六進(jìn)制常量,并不是八進(jìn)制和十六進(jìn)制常量,“-實(shí)踐是運(yùn)算符,實(shí)踐是運(yùn)算符,y=-012 ,是取是取012的負(fù)數(shù),運(yùn)用的負(fù)數(shù),運(yùn)用%o和和%x格式格式顯示的數(shù)據(jù)是無(wú)符號(hào)數(shù)。顯示的數(shù)據(jù)是無(wú)符號(hào)數(shù)。 scanf是格式輸入函數(shù),其功能是按指定的格式將是格式輸入函數(shù),其功能是按指定的格式將規(guī)范輸入設(shè)備例如鍵盤輸入的內(nèi)容送入變量中。規(guī)范輸入設(shè)備例如鍵盤輸入的內(nèi)容送入變量中。 scanf函數(shù)的運(yùn)用格式:函數(shù)的運(yùn)用格式: scanf( 格式信息格式信息, 輸入項(xiàng)輸入項(xiàng)1,輸入項(xiàng),輸入項(xiàng)2,); 其中,其中
29、,“格式信息與格式信息與printf的用法類似,可以在其的用法類似,可以在其中運(yùn)用中運(yùn)用%和轉(zhuǎn)換字符來(lái)指定數(shù)據(jù)的輸入方式。需求留和轉(zhuǎn)換字符來(lái)指定數(shù)據(jù)的輸入方式。需求留意的是,輸入項(xiàng)必需運(yùn)用地址,普通變量的地址是在意的是,輸入項(xiàng)必需運(yùn)用地址,普通變量的地址是在變量名前加取地址符變量名前加取地址符&。整型數(shù)據(jù)的輸入整型數(shù)據(jù)的輸入 輸入整型數(shù)據(jù)的轉(zhuǎn)換字符有輸入整型數(shù)據(jù)的轉(zhuǎn)換字符有d,o,x,u%d 表示把數(shù)據(jù)按十進(jìn)制整型輸入;表示把數(shù)據(jù)按十進(jìn)制整型輸入;%o 表示把數(shù)據(jù)按八進(jìn)制整型輸入;表示把數(shù)據(jù)按八進(jìn)制整型輸入;%x 表示把數(shù)據(jù)按十六進(jìn)制整型輸入;表示把數(shù)據(jù)按十六進(jìn)制整型輸入;%u 表示把
30、數(shù)據(jù)參數(shù)按無(wú)符號(hào)整型輸入。表示把數(shù)據(jù)參數(shù)按無(wú)符號(hào)整型輸入。 與與printf函數(shù)類似,假設(shè)希望輸入的數(shù)據(jù)是長(zhǎng)整型,函數(shù)類似,假設(shè)希望輸入的數(shù)據(jù)是長(zhǎng)整型,需求在轉(zhuǎn)換字符前加需求在轉(zhuǎn)換字符前加l。例例2.3 輸入兩個(gè)普通整型數(shù),計(jì)算并輸出它們的和。輸入兩個(gè)普通整型數(shù),計(jì)算并輸出它們的和。 #include stdio.h void main() int x, y, sum; printf(nPlease enter two integers:n); scanf(%d%d,&x,&y); sum=x+y; printf(%d+%d=%dn,x,y,sum); 運(yùn)轉(zhuǎn)情況:運(yùn)轉(zhuǎn)情況:Pl
31、ease enter two integers:10 20 回車符回車符10+20=30留意留意(1) scanf讀入一組整數(shù)時(shí),讀入一組整數(shù)時(shí),scanf審視輸入信息,跳過(guò)空審視輸入信息,跳過(guò)空格、格、tab或換行,尋覓下一個(gè)輸入域。一個(gè)輸入域就是或換行,尋覓下一個(gè)輸入域。一個(gè)輸入域就是一個(gè)延續(xù)的非空白字符的數(shù)字串。一個(gè)延續(xù)的非空白字符的數(shù)字串。例如,假設(shè)輸入為:例如,假設(shè)輸入為: 782 319 20 回車符回車符38 那么輸入域有四個(gè)。那么輸入域有四個(gè)。(2) 格式信息中除了有格式信息中除了有 %開場(chǎng)的轉(zhuǎn)換闡明,還可以有普開場(chǎng)的轉(zhuǎn)換闡明,還可以有普通字符,只是這些字符不是顯示在屏幕上的,
32、而是要通字符,只是這些字符不是顯示在屏幕上的,而是要求運(yùn)用者在輸入數(shù)據(jù)時(shí),要在相應(yīng)位置輸入一樣的字求運(yùn)用者在輸入數(shù)據(jù)時(shí),要在相應(yīng)位置輸入一樣的字符除了空格、符除了空格、tab或換行符?;驌Q行符。 例例2.4 輸入格式與鍵盤輸入的匹配。輸入格式與鍵盤輸入的匹配。 #include stdio.h void main() int x, y, sum; printf(nPlease enter expression Like a+b=:n); scanf(%d+%d=,&x,&y); sum=x+y; printf(%dn,sum); 運(yùn)轉(zhuǎn)程序:運(yùn)轉(zhuǎn)程序:Please enter e
33、xpression Like a+b=:10+20= 回車符回車符30假設(shè)輸入的內(nèi)容是:假設(shè)輸入的內(nèi)容是: 10 20將會(huì)得到一個(gè)意想不到的結(jié)果,例如能夠是:將會(huì)得到一個(gè)意想不到的結(jié)果,例如能夠是: 510 scanf(“%d+%d=,&x,&y);一句要求在兩個(gè)一句要求在兩個(gè)整數(shù)之間輸入整數(shù)之間輸入“+號(hào),并在第二個(gè)整數(shù)后面輸入號(hào),并在第二個(gè)整數(shù)后面輸入“=;否那么,;否那么,x和和y接納的數(shù)據(jù)就不正確,也就接納的數(shù)據(jù)就不正確,也就是是說(shuō),并沒(méi)有將說(shuō),并沒(méi)有將10和和20正確地送到正確地送到x和和y這兩個(gè)變量這兩個(gè)變量中,從而得出一個(gè)奇異的結(jié)果中,從而得出一個(gè)奇異的結(jié)果510
34、。 例例2.5 輸入兩個(gè)普通八進(jìn)制整數(shù),計(jì)算并輸出它們的和。輸入兩個(gè)普通八進(jìn)制整數(shù),計(jì)算并輸出它們的和。 #include stdio.h void main() int x, y, sum; printf(nPlease enter two octal integers:n); scanf(%o%o,&x,&y); sum=x+y; printf(0%o+0%o=0%on,x,y,sum); printf(%d+%d=%dn,x,y,sum); Please enter two octal integers:10 20 回車符回車符010+020=0308+16=24 經(jīng)過(guò)在
35、經(jīng)過(guò)在%和轉(zhuǎn)換闡明符之前加整數(shù)數(shù)字就和轉(zhuǎn)換闡明符之前加整數(shù)數(shù)字就可以控制顯示數(shù)字的域?qū)???梢钥刂骑@示數(shù)字的域?qū)挕?在在%后面加符號(hào)后面加符號(hào)“-,規(guī)定顯示數(shù)據(jù)在顯示,規(guī)定顯示數(shù)據(jù)在顯示區(qū)域內(nèi)左對(duì)齊;沒(méi)有符號(hào)區(qū)域內(nèi)左對(duì)齊;沒(méi)有符號(hào)“-,數(shù)據(jù)顯示時(shí)右對(duì),數(shù)據(jù)顯示時(shí)右對(duì)齊。齊。 經(jīng)過(guò)控制域?qū)捄蛯?duì)齊方式的目的是為了使輸經(jīng)過(guò)控制域?qū)捄蛯?duì)齊方式的目的是為了使輸出的數(shù)字格式明晰明了,容易看懂。出的數(shù)字格式明晰明了,容易看懂。例例2.6 顯示時(shí)整數(shù)添加域?qū)捄妥髮?duì)齊。顯示時(shí)整數(shù)添加域?qū)捄妥髮?duì)齊。 #include stdio.h void main() int x, y, sum; printf(nPlease
36、 enter two integers:n); scanf(%d%d,&x,&y); sum=x+y; printf(%4d+%4d=%4dn,x,y,sum); printf(%-4d+%-4d=%-4dn,x,y,sum); Please enter two integers:10 20 回車符回車符 10+ 20= 3010 +20 =30l字符變量與字符常量字符變量與字符常量 l運(yùn)用運(yùn)用getchargetchar和和putcharputchar函數(shù)對(duì)字符型數(shù)據(jù)函數(shù)對(duì)字符型數(shù)據(jù)進(jìn)展輸入和輸出進(jìn)展輸入和輸出l運(yùn)用運(yùn)用printfprintf和和scanfscanf函數(shù)對(duì)字
37、符型數(shù)據(jù)進(jìn)函數(shù)對(duì)字符型數(shù)據(jù)進(jìn)展輸入和輸出展輸入和輸出l字符串常量字符串常量 字符變量字符變量數(shù)據(jù)類型闡明符數(shù)據(jù)類型闡明符 char例如,例如, char aloha,beta,c; 一個(gè)字符變量能存儲(chǔ)一個(gè)字節(jié)的信息,每一個(gè)字符變量能存儲(chǔ)一個(gè)字節(jié)的信息,每個(gè)字符有固定的編碼,最常用的就是個(gè)字符有固定的編碼,最常用的就是ASCII 編編碼。碼。 規(guī)范規(guī)范ASCII編碼是把每個(gè)字符和與編碼是把每個(gè)字符和與0127的的數(shù)值聯(lián)絡(luò)起來(lái),用數(shù)值聯(lián)絡(luò)起來(lái),用7位二進(jìn)制表示,再將最高位位二進(jìn)制表示,再將最高位充充0,就是一個(gè)字節(jié)了。,就是一個(gè)字節(jié)了。 例如,在例如,在ASCII編碼表中,編碼表中,A用數(shù)值用數(shù)值
38、65表示,表示,其其8位二進(jìn)制表示是:位二進(jìn)制表示是: 01000001 字符常量字符常量 C C言語(yǔ)中的字符常量是用單引號(hào)將一個(gè)字符括起言語(yǔ)中的字符常量是用單引號(hào)將一個(gè)字符括起來(lái)。例如來(lái)。例如aa、bb??梢杂米址A繛樽址兞抠x值:。可以用字符常量為字符變量賦值:char alpha=a;char alpha=a;char beta=b;char beta=b;留意:留意:(1)(1)引號(hào)中的字符只能是一個(gè)字符。引號(hào)中的字符只能是一個(gè)字符。 (2)(2)不能用雙引號(hào)括起一個(gè)字符表示單個(gè)字符常量。不能用雙引號(hào)括起一個(gè)字符表示單個(gè)字符常量。(3)(3)非圖形字符,如退格,換行等,也可以表示成字
39、符非圖形字符,如退格,換行等,也可以表示成字符型常量。表示方法是運(yùn)用本義符型常量。表示方法是運(yùn)用本義符 與一些特殊字符構(gòu)成轉(zhuǎn)與一些特殊字符構(gòu)成轉(zhuǎn)義序列。例如義序列。例如nn就是一個(gè)本義序列,表示就是一個(gè)本義序列,表示“回車換行?;剀嚀Q行。(4)(4)字符型數(shù)據(jù)可以像整型數(shù)據(jù)一樣參與四那么運(yùn)算。字符型數(shù)據(jù)可以像整型數(shù)據(jù)一樣參與四那么運(yùn)算。 b- a=1 b- a=198-97=198-97=1用用getchargetchar輸入字符和用輸入字符和用putcharputchar輸出字符輸出字符 putchar() putchar()函數(shù)的用法函數(shù)的用法 putchar() putchar()是向規(guī)
40、范輸入輸出設(shè)備上輸出一是向規(guī)范輸入輸出設(shè)備上輸出一個(gè)字個(gè)字符,普通的規(guī)范輸出設(shè)備是屏幕終端。符,普通的規(guī)范輸出設(shè)備是屏幕終端。 留意,參數(shù)是不能缺省的。另外,雖然留意,參數(shù)是不能缺省的。另外,雖然參數(shù)參數(shù)可以是整型數(shù),但參數(shù)的值最好在可以是整型數(shù),但參數(shù)的值最好在01270127之間,之間,否那么,輸出能夠是一些亂碼。否那么,輸出能夠是一些亂碼。例例2.7輸出字符輸出字符a。 #include stdio.h void main() int c=a,i; putchar(c); getchar() getchar()函數(shù)的用法函數(shù)的用法 getchar() getchar()是接納一個(gè)從規(guī)范輸
41、入輸出設(shè)是接納一個(gè)從規(guī)范輸入輸出設(shè)備上輸入的字符。備上輸入的字符。 普通的規(guī)范輸入設(shè)備是鍵盤。普通的規(guī)范輸入設(shè)備是鍵盤。該函數(shù)沒(méi)有參數(shù),函數(shù)前往的數(shù)據(jù)類型為整型,該函數(shù)沒(méi)有參數(shù),函數(shù)前往的數(shù)據(jù)類型為整型,值為字符的值為字符的ASCIIASCII碼值。碼值。 例例2.8 getchar函數(shù)的用法。函數(shù)的用法。 #include stdio.h void main() char c; printf(nPlease enter one char:n); c=getchar(); putchar (c); 運(yùn)轉(zhuǎn)情況運(yùn)轉(zhuǎn)情況1:Please enter one char:a 用戶輸入用戶輸入a運(yùn)轉(zhuǎn)情況運(yùn)
42、轉(zhuǎn)情況1:Please enter one char:abc 用戶輸入用戶輸入a例例2.9從鍵盤接納一個(gè)字符,輸出該字符的按字典從鍵盤接納一個(gè)字符,輸出該字符的按字典陳列順序的下一個(gè)字符,例如,輸入陳列順序的下一個(gè)字符,例如,輸入a,輸出,輸出b。 #include stdio.h void main() char c; printf(nPlease enter one char:n); c=getchar(); putchar (c+1); 或者或者 #include stdio.h void main() printf(nPlease enter one char:n); putchar(
43、getchar()+1); 運(yùn)轉(zhuǎn)情況:運(yùn)轉(zhuǎn)情況:Please enter one char:a 用戶輸入用戶輸入b 運(yùn)用運(yùn)用printfprintf和和scanfscanf函數(shù)對(duì)字符型數(shù)函數(shù)對(duì)字符型數(shù)據(jù)進(jìn)展輸入和輸出據(jù)進(jìn)展輸入和輸出例例2.10 修正例修正例2.9,運(yùn)用,運(yùn)用printf和和scanf函數(shù)完成操作。函數(shù)完成操作。 #include stdio.h void main() char c; printf(nPlease enter one char:n); scanf(%c,&c); c=c+1; printf(%cn,c); 運(yùn)轉(zhuǎn)情況:運(yùn)轉(zhuǎn)情況:Please enter
44、one char:a 用戶輸入用戶輸入b留意:留意: 運(yùn)用運(yùn)用scanf函數(shù)時(shí),盡量不要將函數(shù)時(shí),盡量不要將%c與其它轉(zhuǎn)換與其它轉(zhuǎn)換闡明一同運(yùn)用。闡明一同運(yùn)用。 當(dāng)當(dāng)scanf讀入一組數(shù)據(jù)時(shí),假設(shè)不運(yùn)用讀入一組數(shù)據(jù)時(shí),假設(shè)不運(yùn)用%c做轉(zhuǎn)做轉(zhuǎn)換時(shí),換時(shí),scanf審視輸入信息,跳過(guò)空格、審視輸入信息,跳過(guò)空格、tab或換或換行,尋覓下一個(gè)輸入域。行,尋覓下一個(gè)輸入域。 但是假設(shè)運(yùn)用但是假設(shè)運(yùn)用%c做轉(zhuǎn)換時(shí),情況那么不同,做轉(zhuǎn)換時(shí),情況那么不同,scanf不會(huì)跳過(guò)空格、不會(huì)跳過(guò)空格、tab或換行,而是直接把下一個(gè)字或換行,而是直接把下一個(gè)字符輸入給參數(shù),不論它是什么。符輸入給參數(shù),不論它是什么。例
45、如,例如, scanf(%d%c,&i,&c);鍵盤輸入鍵盤輸入 29 w c的內(nèi)容不是字符的內(nèi)容不是字符w,而是空格。,而是空格。 處理的方法是在控制字符串中加空格分隔。處理的方法是在控制字符串中加空格分隔。 scanf(%d %c,&i,&c);字符串常量字符串常量 用雙引號(hào)括起來(lái)的字符序列是字符串常量。用雙引號(hào)括起來(lái)的字符序列是字符串常量。 how are you how are you 1234.5 1234.5 字符串的存儲(chǔ)與字符不同。字符串的存儲(chǔ)與字符不同。C C編譯程序在編譯程序在存儲(chǔ)字符存儲(chǔ)字符串常量時(shí)自動(dòng)采用串常量時(shí)自動(dòng)采用00作為字符串終了標(biāo)
46、志。作為字符串終了標(biāo)志。 how how實(shí)踐上所占的字節(jié)數(shù)是實(shí)踐上所占的字節(jié)數(shù)是4 4。 “a a與與a a是完全不同的,前者是字符串常是完全不同的,前者是字符串常量,占的字節(jié)數(shù)是量,占的字節(jié)數(shù)是2 2,后者是字符常量,占的字,后者是字符常量,占的字節(jié)數(shù)是節(jié)數(shù)是1 1。 字符串常量的輸出字符串常量的輸出 printf(how are you) printf(how are you); printf(%s,how are you) printf(%s,how are you);l浮點(diǎn)數(shù)據(jù)在內(nèi)存中的存儲(chǔ)方式浮點(diǎn)數(shù)據(jù)在內(nèi)存中的存儲(chǔ)方式 l浮點(diǎn)變量與浮點(diǎn)常量浮點(diǎn)變量與浮點(diǎn)常量l浮點(diǎn)數(shù)據(jù)的輸入和輸出浮點(diǎn)
47、數(shù)據(jù)的輸入和輸出 l 浮點(diǎn)數(shù)在機(jī)器中的表示普通分為三部分:符浮點(diǎn)數(shù)在機(jī)器中的表示普通分為三部分:符號(hào)位、階碼、尾數(shù)。號(hào)位、階碼、尾數(shù)。 32 32位浮點(diǎn)數(shù)的有效數(shù)字的個(gè)數(shù)是位浮點(diǎn)數(shù)的有效數(shù)字的個(gè)數(shù)是7 7位十進(jìn)制數(shù)位十進(jìn)制數(shù)字,取值范圍為字,取值范圍為10-38 103810-38 1038,6464位浮點(diǎn)數(shù)的位浮點(diǎn)數(shù)的有效數(shù)字的個(gè)數(shù)是有效數(shù)字的個(gè)數(shù)是1515位十進(jìn)制數(shù)字,取值范圍位十進(jìn)制數(shù)字,取值范圍為為10-308 1030810-308 10308。不同的機(jī)器能夠會(huì)有一些。不同的機(jī)器能夠會(huì)有一些微小的差別。微小的差別。0 1 7 8 31 符符號(hào)號(hào)位位 階階碼碼 尾尾數(shù)數(shù) 浮點(diǎn)數(shù)據(jù)在內(nèi)存
48、中的存儲(chǔ)方式浮點(diǎn)變量浮點(diǎn)變量 單精度浮點(diǎn)數(shù)單精度浮點(diǎn)數(shù)floatfloat 雙精度浮點(diǎn)數(shù)雙精度浮點(diǎn)數(shù)doubledouble long double long double 定義浮點(diǎn)變量:定義浮點(diǎn)變量: float a,b; float a,b; double c,d; double c,d; 單精度浮點(diǎn)數(shù)和雙精度浮點(diǎn)數(shù)兩者在計(jì)算機(jī)單精度浮點(diǎn)數(shù)和雙精度浮點(diǎn)數(shù)兩者在計(jì)算機(jī)上的表示方式是完全類似的,只是所占的二進(jìn)制上的表示方式是完全類似的,只是所占的二進(jìn)制位數(shù)不同,單精度浮點(diǎn)數(shù)的有效數(shù)字或稱精度位數(shù)不同,單精度浮點(diǎn)數(shù)的有效數(shù)字或稱精度和取值范圍與雙精度浮點(diǎn)數(shù)不同。和取值范圍與雙精度浮點(diǎn)數(shù)不同。浮點(diǎn)
49、常量浮點(diǎn)常量 小數(shù)表示法小數(shù)表示法 127.3 127.3 科學(xué)計(jì)數(shù)法科學(xué)計(jì)數(shù)法 1.273 1.273102102 在在C C言語(yǔ)中,實(shí)踐上也是用這兩種方式,只不過(guò)言語(yǔ)中,實(shí)踐上也是用這兩種方式,只不過(guò)102 102 用用E+2E+2表示。表示。 C C程序中的浮點(diǎn)常數(shù)由整數(shù)部分、小數(shù)部分、指數(shù)程序中的浮點(diǎn)常數(shù)由整數(shù)部分、小數(shù)部分、指數(shù)部分構(gòu)成。部分構(gòu)成。浮點(diǎn)常量構(gòu)成規(guī)那么是:浮點(diǎn)常量構(gòu)成規(guī)那么是:(1) (1) 整數(shù)部分可以不寫,小數(shù)部分也可以不寫,但不能整數(shù)部分可以不寫,小數(shù)部分也可以不寫,但不能同時(shí)不寫。同時(shí)不寫。(2) (2) 指數(shù)部分可以省略相當(dāng)于運(yùn)用小數(shù)表示法指數(shù)部分可以省略相當(dāng)
50、于運(yùn)用小數(shù)表示法(3) (3) 假設(shè)有指數(shù)部分,假設(shè)有指數(shù)部分,e e或或E E兩邊都至少有一位數(shù)。兩邊都至少有一位數(shù)。(4) (4) 指數(shù)的數(shù)字必需是整數(shù)范圍為指數(shù)的數(shù)字必需是整數(shù)范圍為1 1到到3 3位的整數(shù),位的整數(shù),可以為負(fù)或正,正號(hào)可以省略。可以為負(fù)或正,正號(hào)可以省略。例如,例如, 4.50E3、1.0、1.、.1234、123.4都是合法的浮都是合法的浮點(diǎn)常量。點(diǎn)常量。 留意:留意: 浮點(diǎn)常量在存儲(chǔ)時(shí)按浮點(diǎn)常量在存儲(chǔ)時(shí)按double類型存儲(chǔ),即占類型存儲(chǔ),即占32位位bit。 浮點(diǎn)常量也象整型常量一樣,假設(shè)浮點(diǎn)常量超浮點(diǎn)常量也象整型常量一樣,假設(shè)浮點(diǎn)常量超越機(jī)器所能表示的范圍,那么
51、會(huì)發(fā)生溢出。越機(jī)器所能表示的范圍,那么會(huì)發(fā)生溢出。 浮點(diǎn)溢出也不會(huì)使程序出錯(cuò),而是得到一個(gè)非浮點(diǎn)溢出也不會(huì)使程序出錯(cuò),而是得到一個(gè)非正確的值正確的值 。%f顯示小數(shù)表示的普通浮點(diǎn)數(shù)顯示小數(shù)表示的普通浮點(diǎn)數(shù)%e顯示科學(xué)記數(shù)法表示的浮點(diǎn)數(shù)顯示科學(xué)記數(shù)法表示的浮點(diǎn)數(shù) 輸出雙精度輸出雙精度double類型時(shí),還需求在轉(zhuǎn)換字符類型時(shí),還需求在轉(zhuǎn)換字符前加上字母前加上字母l。 輸出浮點(diǎn)數(shù)時(shí)控制輸出域?qū)捄陀行唬狠敵龈↑c(diǎn)數(shù)時(shí)控制輸出域?qū)捄陀行唬?在在%與與f或或e之間加上兩個(gè)數(shù)字并在兩個(gè)數(shù)字之間之間加上兩個(gè)數(shù)字并在兩個(gè)數(shù)字之間加一個(gè)句點(diǎn)加一個(gè)句點(diǎn)“.。 例如,例如,%10.3f表示輸出格式是域?qū)挶硎据敵龈?/p>
52、式是域?qū)?0,有效位,有效位3。 留意留意 : 域?qū)挼暮x、缺省有效位、與數(shù)據(jù)本身的域?qū)挼年P(guān)系域?qū)挼暮x、缺省有效位、與數(shù)據(jù)本身的域?qū)挼年P(guān)系浮點(diǎn)數(shù)據(jù)輸入與輸出浮點(diǎn)數(shù)據(jù)輸入與輸出 例例2.11 輸入兩個(gè)浮點(diǎn)數(shù),輸出它們的和。輸入兩個(gè)浮點(diǎn)數(shù),輸出它們的和。 #include stdio.h void main() float x,y; float sum; printf(nPlease enter two reals:n); scanf(%f%f,&x,&y); sum=x+y; printf(%f+%f=%f,x,y,sum); 運(yùn)轉(zhuǎn)情況:運(yùn)轉(zhuǎn)情況:Please enter tw
53、o reals:1.234567 1.234567 用戶輸入用戶輸入1.234567+1.234567=2.469134 輸出浮點(diǎn)數(shù)時(shí)不僅可以控制輸出域?qū)挘€可以控制有效位輸出浮點(diǎn)數(shù)時(shí)不僅可以控制輸出域?qū)?,還可以控制有效位的輸出位數(shù)。的輸出位數(shù)。例例2.12 2.12 輸出浮點(diǎn)數(shù)據(jù)。輸出浮點(diǎn)數(shù)據(jù)。 #include stdio.h #include stdio.h void main() void main() float x; float x; double y; double y; x=12.3456789;y=987654.321098; x=12.3456789;y=987654.32
54、1098; printf(n%e,%le,x,y); printf(n%e,%le,x,y); printf(n%f,%lf,x,y); printf(n%f,%lf,x,y); printf(n%.3f,%.3lf,x,y); printf(n%.3f,%.3lf,x,y); printf(n%14.3f,%14.3lf,x,y); printf(n%14.3f,%14.3lf,x,y); printf(n%-14.3f,%-14.3lf,x,y); printf(n%-14.3f,%-14.3lf,x,y); printf(n%8.3f,%8.3lf,x,y); printf(n%8.3f
55、,%8.3lf,x,y); printf(n%14f,%14lf,x,y); printf(n%14f,%14lf,x,y); l表達(dá)式的概念表達(dá)式的概念l 表達(dá)式是用運(yùn)算符與圓括號(hào)將操作數(shù)表達(dá)式是用運(yùn)算符與圓括號(hào)將操作數(shù)銜接起來(lái)所銜接起來(lái)所l構(gòu)成的式子。構(gòu)成的式子。C C言語(yǔ)的操作數(shù)包括常量、言語(yǔ)的操作數(shù)包括常量、變量、函數(shù)值變量、函數(shù)值l等。等。 l 根據(jù)表達(dá)式進(jìn)展運(yùn)算,得到的數(shù)值即根據(jù)表達(dá)式進(jìn)展運(yùn)算,得到的數(shù)值即為表達(dá)式的解。為表達(dá)式的解。 l表達(dá)式與簡(jiǎn)單語(yǔ)句表達(dá)式與簡(jiǎn)單語(yǔ)句l 在在C C言語(yǔ)中,在一個(gè)表達(dá)式的后面言語(yǔ)中,在一個(gè)表達(dá)式的后面加上分號(hào)加上分號(hào)“;就構(gòu)成了簡(jiǎn)單語(yǔ)句。;就構(gòu)成了
56、簡(jiǎn)單語(yǔ)句。 l 有意義的簡(jiǎn)單語(yǔ)句有意義的簡(jiǎn)單語(yǔ)句 l 無(wú)意義的簡(jiǎn)單語(yǔ)句無(wú)意義的簡(jiǎn)單語(yǔ)句 l種類及運(yùn)算種類及運(yùn)算l + - + - * * / % / %l留意:留意:l 兩個(gè)整數(shù)相除,結(jié)果仍為整數(shù),商向下兩個(gè)整數(shù)相除,結(jié)果仍為整數(shù),商向下取整。取整。l 取模運(yùn)算符取模運(yùn)算符% %實(shí)踐上是數(shù)學(xué)運(yùn)算的求余數(shù)實(shí)踐上是數(shù)學(xué)運(yùn)算的求余數(shù)運(yùn)算,其兩個(gè)操作對(duì)象都必需是整數(shù)運(yùn)算,其兩個(gè)操作對(duì)象都必需是整數(shù) 。l 減法運(yùn)算符還可以用做單目運(yùn)算符,是減法運(yùn)算符還可以用做單目運(yùn)算符,是取負(fù)取負(fù)l運(yùn)算。其他操作符均為雙目運(yùn)算符。運(yùn)算。其他操作符均為雙目運(yùn)算符。 l算術(shù)表達(dá)式及算術(shù)運(yùn)算符的優(yōu)先級(jí)算術(shù)表達(dá)式及算術(shù)運(yùn)算符的
57、優(yōu)先級(jí)l l 算術(shù)表達(dá)式就是用算術(shù)運(yùn)算符算術(shù)表達(dá)式就是用算術(shù)運(yùn)算符和圓括號(hào)將和圓括號(hào)將l操作數(shù)銜接起來(lái)的式子。算術(shù)表達(dá)式的解操作數(shù)銜接起來(lái)的式子。算術(shù)表達(dá)式的解就是就是l經(jīng)過(guò)算術(shù)運(yùn)算得到的表達(dá)式的值。經(jīng)過(guò)算術(shù)運(yùn)算得到的表達(dá)式的值。l 算術(shù)運(yùn)算符的優(yōu)先級(jí)與數(shù)學(xué)根本一樣,算術(shù)運(yùn)算符的優(yōu)先級(jí)與數(shù)學(xué)根本一樣,即即l先乘除,后加減。取模運(yùn)算的優(yōu)先級(jí)與乘先乘除,后加減。取模運(yùn)算的優(yōu)先級(jí)與乘除相除相l(xiāng)同。函數(shù)和圓括號(hào)的優(yōu)先級(jí)最高。同。函數(shù)和圓括號(hào)的優(yōu)先級(jí)最高。 留意:留意: 算術(shù)表達(dá)式應(yīng)能正確的表達(dá)數(shù)學(xué)公式。算術(shù)表達(dá)式應(yīng)能正確的表達(dá)數(shù)學(xué)公式。 例如:數(shù)學(xué)表達(dá)式是例如:數(shù)學(xué)表達(dá)式是 3+x 3+x 2a 2a
58、 相應(yīng)的相應(yīng)的C C言語(yǔ)表達(dá)式應(yīng)該是什么呢?言語(yǔ)表達(dá)式應(yīng)該是什么呢? 算術(shù)表達(dá)式的結(jié)果應(yīng)該不超越其所能表示的算術(shù)表達(dá)式的結(jié)果應(yīng)該不超越其所能表示的 數(shù)的范圍。例如,最大的整型數(shù)是數(shù)的范圍。例如,最大的整型數(shù)是3276732767, 那么,那么,32767+332767+3就不會(huì)是正確的結(jié)果。而就不會(huì)是正確的結(jié)果。而 32767L+3 32767L+3的結(jié)果是正確的,由于的結(jié)果是正確的,由于32767L32767L是長(zhǎng)是長(zhǎng) 整型數(shù)。整型數(shù)。l算術(shù)運(yùn)算符的結(jié)合性算術(shù)運(yùn)算符的結(jié)合性l l 運(yùn)算符的結(jié)合性是指假設(shè)一個(gè)操運(yùn)算符的結(jié)合性是指假設(shè)一個(gè)操作數(shù)左邊和右邊的兩個(gè)運(yùn)算符的優(yōu)先級(jí)一作數(shù)左邊和右邊的兩個(gè)
59、運(yùn)算符的優(yōu)先級(jí)一樣,應(yīng)該優(yōu)先計(jì)算的操作符。樣,應(yīng)該優(yōu)先計(jì)算的操作符。l 例如:例如:a+b-ca+b-cl 操作數(shù)操作數(shù)b b左右的運(yùn)算符左右的運(yùn)算符+ +和和- -的優(yōu)的優(yōu)先級(jí)一樣,先級(jí)一樣,l那么,是先計(jì)算那么,是先計(jì)算b-cb-c,還是先計(jì)算,還是先計(jì)算a+ba+b呢?呢?C C言語(yǔ)言語(yǔ)l規(guī)定雙目算術(shù)運(yùn)算符的結(jié)合性是自左至右,規(guī)定雙目算術(shù)運(yùn)算符的結(jié)合性是自左至右,也就也就l是是b b先與左邊先與左邊a a結(jié)合,再與右邊結(jié)合,再與右邊c c結(jié)合。所以結(jié)合。所以是先是先l計(jì)算計(jì)算a+ba+b,然后用,然后用a+ba+b的結(jié)果減的結(jié)果減c c。l 雙目運(yùn)算符的結(jié)合性與數(shù)學(xué)運(yùn)算并雙目運(yùn)算符的結(jié)合
60、性與數(shù)學(xué)運(yùn)算并無(wú)不同。無(wú)不同。l普通賦值運(yùn)算符普通賦值運(yùn)算符l l 賦值表達(dá)式的普通方式是:賦值表達(dá)式的普通方式是:l 變量名變量名= =表達(dá)式表達(dá)式l 賦值語(yǔ)句的普通方式是:賦值語(yǔ)句的普通方式是:l 變量名變量名= =表達(dá)式;表達(dá)式;l l 賦值運(yùn)算符的優(yōu)先級(jí)小于算術(shù)運(yùn)算賦值運(yùn)算符的優(yōu)先級(jí)小于算術(shù)運(yùn)算符。符。l 賦值運(yùn)算符的結(jié)合性是自右至左,賦值運(yùn)算符的結(jié)合性是自右至左,l 以以a=b=2a=b=2為例為例 l復(fù)合賦值運(yùn)算符復(fù)合賦值運(yùn)算符l l 把賦值運(yùn)算符與算術(shù)、位邏輯、移把賦值運(yùn)算符與算術(shù)、位邏輯、移位運(yùn)算位運(yùn)算l符放在一同,就構(gòu)成復(fù)合賦值運(yùn)算符。符放在一同,就構(gòu)成復(fù)合賦值運(yùn)算符。l 復(fù)合算術(shù)賦值運(yùn)算符有復(fù)合算術(shù)賦值運(yùn)算符有5 5個(gè)個(gè)+= += 、- =- =、* *= =、/=/=、%=%=。l 還有與移位和位邏輯結(jié)合的復(fù)合賦還有與移位和位邏輯結(jié)合的復(fù)合賦值運(yùn)算符值運(yùn)算符5 5個(gè)個(gè)=、&=&=、=
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024智能計(jì)算中心創(chuàng)新發(fā)展指南
- 2025年九年級(jí)統(tǒng)編版語(yǔ)文寒假?gòu)?fù)習(xí) 03 第三周:九上第四、五單元復(fù)習(xí)
- 【全程復(fù)習(xí)方略】2020-2021學(xué)年北師大版高中數(shù)學(xué)必修一課時(shí)作業(yè)(九)-2.2.3
- 【名師一號(hào)】2021年新課標(biāo)版歷史-必修3-雙基限時(shí)練4
- 2022屆高考物理第一輪復(fù)習(xí)-課時(shí)跟蹤檢測(cè)(十九)-功能關(guān)系-能量守恒定律
- 【全程設(shè)計(jì)】2021屆高考生物一輪復(fù)習(xí)細(xì)致講解練:選修3-第一講-基因工程
- 【與名師對(duì)話】2022高考地理課標(biāo)版總復(fù)習(xí)課時(shí)跟蹤訓(xùn)練38世界地理概況-
- 【全程復(fù)習(xí)方略】2020年數(shù)學(xué)文(廣西用)課時(shí)作業(yè):第七章-第四節(jié)曲線與方程
- 五年級(jí)數(shù)學(xué)(小數(shù)除法)計(jì)算題專項(xiàng)練習(xí)及答案匯編
- 【導(dǎo)學(xué)案】2021版高中歷史(人教版-必修2)教師用書-7單元-復(fù)習(xí)課
- 無(wú)錫市區(qū)2024-2025學(xué)年四年級(jí)上學(xué)期數(shù)學(xué)期末試題一(有答案)
- GB/T 45014-2024聚合物基復(fù)合材料層壓板緊固件拉脫阻抗試驗(yàn)方法
- 傳播學(xué)(東北林業(yè)大學(xué))知到智慧樹章節(jié)答案
- 2024年安全員之A證考試題庫(kù)及完整答案(網(wǎng)校專用)
- 血液凈化中心院內(nèi)感染控制課件
- 2024-2025學(xué)年人教新版九年級(jí)上冊(cè)數(shù)學(xué)期末復(fù)習(xí)試卷(含詳解)
- 2024年河南省公務(wù)員考試《行測(cè)》真題及答案解析
- 中醫(yī)醫(yī)療技術(shù)手冊(cè)2013普及版
- 自考網(wǎng)頁(yè)設(shè)計(jì)與制作試卷及答案
- 半導(dǎo)體專業(yè)英語(yǔ)詞匯
- 二年級(jí)口算+豎式(經(jīng)典實(shí)用)
評(píng)論
0/150
提交評(píng)論