C語(yǔ)言程序設(shè)計(jì)第2章基本數(shù)據(jù)類型與運(yùn)算符.ppt_第1頁(yè)
C語(yǔ)言程序設(shè)計(jì)第2章基本數(shù)據(jù)類型與運(yùn)算符.ppt_第2頁(yè)
C語(yǔ)言程序設(shè)計(jì)第2章基本數(shù)據(jù)類型與運(yùn)算符.ppt_第3頁(yè)
C語(yǔ)言程序設(shè)計(jì)第2章基本數(shù)據(jù)類型與運(yùn)算符.ppt_第4頁(yè)
C語(yǔ)言程序設(shè)計(jì)第2章基本數(shù)據(jù)類型與運(yùn)算符.ppt_第5頁(yè)
已閱讀5頁(yè),還剩82頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第2章 基本數(shù)據(jù)類型與運(yùn)算符,返回總目錄,目錄,2.1數(shù)據(jù)類型和取值范圍,2.2運(yùn)算符,2.3輸入/輸出函數(shù),2.4習(xí)題二,返回總目錄,基本要求: )熟悉C語(yǔ)言的常用數(shù)據(jù)類型; )熟悉C語(yǔ)言的常用運(yùn)算符; )熟練掌握輸入/輸出函數(shù)的使用。 學(xué)習(xí)重點(diǎn): )C語(yǔ)言運(yùn)算符的使用; )輸入/輸出函數(shù)的使用。,2.1基本數(shù)據(jù)類型和取值范圍,2.1.1 基本數(shù)據(jù)類型和取值范圍,數(shù)據(jù)類型決定: 1. 數(shù)據(jù)占內(nèi)存字節(jié)數(shù) 2. 數(shù)據(jù)取值范圍 3. 其上可進(jìn)行的操作, 數(shù)據(jù)類型總表,返回目錄, 基本類型及范圍 (Visual C+ 6.0環(huán)境下),2.1基本數(shù)據(jù)類型和取值范圍,2.1.1 基本數(shù)據(jù)類型和取值范圍,

2、2.1.2 常量與變量, 標(biāo)識(shí)符,定義:用來(lái)標(biāo)識(shí)變量、常量、函數(shù)等的字符序列 組成: 只能由字母、數(shù)字、下劃線組成,且第一個(gè)字母必須是字母或下劃線 大小寫敏感 不能使用關(guān)鍵字 命名原則: 見(jiàn)名知意 不宜混淆 如l與I, o與0,2.1基本數(shù)據(jù)類型和取值范圍,2.1.2 常量與變量, 標(biāo)識(shí)符,例:判斷下列標(biāo)識(shí)符號(hào)合法性 sum Sum M.D.John day Date 3days student_name #33 lotus_1_2_3 char ab _above $123,M.D.John,3days,#33,char,$123,ab,2.1基本數(shù)據(jù)類型和取值范圍,2.1.2 常量與變量,

3、 常量,定義:程序運(yùn)行時(shí)其值不能改變的量(即常數(shù)) 分類: 符號(hào)常量:用標(biāo)識(shí)符代表常量 定義格式: #define 符號(hào)常量 常量,如 #define PRICE 30,例 符號(hào)常量舉例 #define PRICE 30 main() int num,total; num=10; total=num*PRICE; printf(total=%d,total); ,一般用大寫字母 是宏定義預(yù)處理命令,不是C語(yǔ)句 直接常量: 整型常量 實(shí)型常量 字符常量 字符串常量,2.1基本數(shù)據(jù)類型和取值范圍,2.1.2 常量與變量, 常量-整型常量(整常數(shù)),三種形式: 十進(jìn)制整數(shù):由數(shù)字09和正負(fù)號(hào)表示.如

4、 123,-456,0 八進(jìn)制整數(shù):由數(shù)字0開頭,后跟數(shù)字07表示.如0123,011 十六進(jìn)制整數(shù):由0 x開頭,后跟09,af,AF表示. 如0 x123,0Xff,示例: 0571 = (377 )10 0 x179 = (377 )10 0X179 = (377 )10,2.1基本數(shù)據(jù)類型和取值范圍,2.1.2 常量與變量, 常量-整型常量(整常數(shù)),兩種長(zhǎng)度:整型常量按長(zhǎng)度劃分為兩種:短整型和長(zhǎng)整型(后綴為小寫字母l或大寫字母L),從長(zhǎng)度來(lái)看: Turbo C中默認(rèn)為短整型,如-377是一個(gè)短整型數(shù),而-377l或-377L表示-377是長(zhǎng)整型數(shù)。 而在Visual C+ 6.0中默

5、認(rèn)為長(zhǎng)整型,如-377、-377l或-377L均表示-377是長(zhǎng)整型數(shù)。 例:語(yǔ)句:printf(“%d,%d”,sizeof(-377),sizeof(-377L); 在Turbo C中的運(yùn)行結(jié)果為:2,4而在VC中的結(jié)果為:4,4 小結(jié):從數(shù)據(jù)類型角度來(lái)分析,整型常量默認(rèn)為int類型,而加上后綴(l或L)后,就是long int類型。,2.1基本數(shù)據(jù)類型和取值范圍,2.1.2 常量與變量, 常量-實(shí)型常量(實(shí)數(shù)或浮點(diǎn)數(shù)),表示形式: 十進(jìn)制數(shù)形式:(必須有小數(shù)點(diǎn)) 如0.123, .123, 123.0, 0.0, 123. 指數(shù)形式:(e或E之前必須有數(shù)字;指數(shù)必須為整數(shù))如12.3e3

6、 ,123E2, 1.23e4 , e-5 , 1.2E-3.5,實(shí)型常量的類型 默認(rèn)double型 在實(shí)型常量后加字母f或F,認(rèn)為它是float 型 例:語(yǔ)句:printf(“%d,%d”,sizeof(0.123),sizeof(0.123F); 在Turbo C和VC中的運(yùn)行結(jié)果均為:8,4,2.1基本數(shù)據(jù)類型和取值范圍,2.1.2 常量與變量, 常量-字符常量,定義:用單引號(hào)括起來(lái)的單個(gè)普通字符或轉(zhuǎn)義字符.,字符常量的值:該字符的ASCII碼值,如 a A ? n 101,轉(zhuǎn)義字符:反斜線后面跟一個(gè)字符或一個(gè)代碼值表示,如 A65, a97, 048 , n10,2.1基本數(shù)據(jù)類型和取

7、值范圍,2.1.2 常量與變量, 常量-字符常量,2.1基本數(shù)據(jù)類型和取值范圍,2.1.2 常量與變量, 常量-字符常量,如 101 -A 012 -n 376 - x61 -a 60 -0 483 -(),例: A-101-x41-65,轉(zhuǎn)義字符示例:,2.1基本數(shù)據(jù)類型和取值范圍,2.1.2 常量與變量, 常量-字符常量,例 轉(zhuǎn)義字符舉例 main() printf(101 x42 Cn); printf(I say:How are you?n); printf(C Programn); printf(Turbo C); ,運(yùn)行結(jié)果:(屏幕顯示) A B C Isay:”How are y

8、ou?” C Program Turbo C,例 main() printf(“Yb=n”); ,運(yùn)行結(jié)果: 屏幕顯示:= 打印機(jī)輸出:,2.1基本數(shù)據(jù)類型和取值范圍,2.1.2 常量與變量, 常量-字符串常量,定義:用雙引號(hào)(“”)括起來(lái)的字符序列 存儲(chǔ):每個(gè)字符串尾自動(dòng)加一個(gè) 0 作為字符串結(jié)束標(biāo)志,字符常量與字符串常量不同,例: char ch; ch=“A”;,2.1基本數(shù)據(jù)類型和取值范圍,2.1.2 常量與變量, 變量,概念:其值可以改變的量 變量名與變量值 變量定義的一般格式: 數(shù)據(jù)類型 變量1,變量2,變量n;,例: int a,b,c; float data;,決定分配字節(jié)數(shù)

9、和數(shù)的表示范圍,合法標(biāo)識(shí)符,2.1基本數(shù)據(jù)類型和取值范圍,2.1.2 常量與變量, 變量,例: int a=2,b,c=4; float data=3.67; char ch=A; int x=1,y=1,z=1; int x=y=z=1;,變量初始化:定義時(shí)賦初值,2.1基本數(shù)據(jù)類型和取值范圍,2.1.2 常量與變量, 變量,例1 int student; stadent=19; /本行語(yǔ)句有錯(cuò),符號(hào) “stadent” 未定義,例2 int a,b,c; c=a%b; /本行語(yǔ)句有錯(cuò),a、b沒(méi)有具體的值就參與運(yùn)算,變量的使用:先定義,后使用,2.1基本數(shù)據(jù)類型和取值范圍,2.1.2 常量與

10、變量, 變量,變量定義位置:一般放在函數(shù)開頭,2.1基本數(shù)據(jù)類型和取值范圍,2.1.2 常量與變量, 變量,整型變量 占字節(jié)數(shù)隨機(jī)器不同而不同,一般占一個(gè)機(jī)器字 shortintlong 可用sizeof(類型標(biāo)識(shí)符)測(cè)量,#include stdio.h main() printf(int length=%d,sizeof(int); ,VC運(yùn)行結(jié)果: int length=4,2.1基本數(shù)據(jù)類型和取值范圍,2.1.2 常量與變量, 變量,實(shí)型變量 float:占4字節(jié),提供67位有效數(shù)字(跟C編譯系統(tǒng)有關(guān),將實(shí)型數(shù)據(jù)按指數(shù)形式存儲(chǔ)時(shí),一般若以24位二進(jìn)制位表示小數(shù)部分(含符號(hào)),則對(duì)應(yīng)的十

11、進(jìn)制有效數(shù)字為7位) double:占8字節(jié),提供1516位有效數(shù)字,2.1基本數(shù)據(jù)類型和取值范圍,#include main() double a=1.234567890123456789e18; float b=a; printf(a=%.20len,a); printf(b=%.20len,b); ,程序輸出結(jié)果為: c=1.23456789012345680000e18 d=1.23456793955060940000e18,2.1.2 常量與變量, 變量,字符型變量 字符變量存放字符ASCII碼 char與int數(shù)據(jù)間可進(jìn)行算術(shù)運(yùn)算,例 a=D; /* a=68; */ x=A+5;

12、 /* x=65+5; */ s=!+G /* s=33+71; */,沒(méi)有字符串變量,字符串用字符數(shù)組存放,2.1基本數(shù)據(jù)類型和取值范圍,2.1.2 常量與變量, 變量,變量綜合示例: #define PRICE 12.5 main() int num=3; float total; char ch1,ch2=D; total=num*PRICE; ch1=ch2-A+a; printf(“total=%f,ch1=%cn”,total,ch1); ,運(yùn)行結(jié)果: total=37.500000, ch1=d,2.1基本數(shù)據(jù)類型和取值范圍,2.2運(yùn)算符,2.2.1 優(yōu)先級(jí)與結(jié)合規(guī)則, 運(yùn)算符,

13、返回目錄,2.2運(yùn)算符,2.2.1 優(yōu)先級(jí)與結(jié)合規(guī)則, 優(yōu)先級(jí)和結(jié)合規(guī)則總表,2.2運(yùn)算符,2.2.1 優(yōu)先級(jí)與結(jié)合規(guī)則,不同級(jí)別的運(yùn)算符按運(yùn)算符的優(yōu)先級(jí)別確定計(jì)算順序,優(yōu)先級(jí)別高(即優(yōu)先級(jí)別數(shù)?。┑倪\(yùn)算符先計(jì)算: 相同級(jí)別的運(yùn)算符按結(jié)合規(guī)則確定計(jì)算順序。 例:表達(dá)式3+4*(12-6)/(1+2)的計(jì)算順序?yàn)椋?(126)6 (12)3 4*624 24/3=8 3+8=11, 運(yùn)算符的計(jì)算規(guī)則,2.2運(yùn)算符,2.2.2 賦值運(yùn)算與連續(xù)賦值,在C中,運(yùn)算符“=”是賦值運(yùn)算符。 簡(jiǎn)單賦值運(yùn)算的一般形式為: 變量=表達(dá)式 其功能是將一個(gè)表達(dá)式的值賦給變量。 如下表達(dá)式 a=b+c 該式讀作將表達(dá)

14、式b+c的值賦給a。其本意是改寫變量a的值,而不是判斷b+c與a是否相等,, 賦值運(yùn)算,2.2運(yùn)算符,2.2.2 賦值運(yùn)算與連續(xù)賦值, 連續(xù)賦值,在C語(yǔ)言中,賦值運(yùn)算符的級(jí)別較低,為14級(jí),并滿足右結(jié)合規(guī)則。因此表達(dá)式: x=y=z=1 是連續(xù)賦值表達(dá)式,其功能相當(dāng)于如下表達(dá)式的功能 x=(y=(z=1) 它是先執(zhí)行表達(dá)式z=1,即將1賦給z,表達(dá)式值也為1,然后將表達(dá)式值1賦給y,即執(zhí)行y=1,表達(dá)式值也仍為1,再將表達(dá)式值1賦給x,即執(zhí)行x=1。,2.2運(yùn)算符,2.2.3 算術(shù)運(yùn)算,結(jié)合方向:從左向右 優(yōu)先級(jí): - -* / % - + - (2) (3) (4) 說(shuō)明: “-”可為單目運(yùn)

15、算符時(shí),右結(jié)合性 兩整數(shù)相除,結(jié)果為整數(shù) %要求兩側(cè)均為整型數(shù)據(jù),例 5/2 = 2 -5/2.0 = -2.5,例 5%2 = 1 -5%2 = -1 1%10 = 1 5%1 = 0 5.5%2 (), 基本算術(shù)運(yùn)算符: + - * / %,2.2運(yùn)算符,2.2.3 算術(shù)運(yùn)算, 自增、自減運(yùn)算符+ -,作用:使變量值加1或減1 種類: 前置 +i, -i (先執(zhí)行i+1或i-1,再使用i值) 后置 i+,i- (先使用i值,再執(zhí)行i+1或i-1),例 j=3; k=+j; j=3; k=j+; j=3; printf(“%d”,+j); j=3; printf(“%d”,j+); a=3;

16、b=5;c=(+a)*b; a=3;b=5;c=(a+)*b;,/k=4,j=4,/k=3,j=4,/4,/3,/c=20,a=4,/c=15,a=4,“先加后用”,“先用后加”,2.2運(yùn)算符,2.2.3 算術(shù)運(yùn)算, 自增、自減運(yùn)算符+ -,說(shuō)明: + - 不能用于常量和表達(dá)式,如5+,(a+b)+ + -結(jié)合方向: 自右向左 優(yōu)先級(jí):- + - -* / % -+ - (2) (3) (4),例 -i+ -(i+) i=3; printf(“%d”,-i+); /-3,例 -i+ i=3; printf(“%d”,-i+);,2.2運(yùn)算符,2.2.3 算術(shù)運(yùn)算, 自增、自減運(yùn)算符+ -,特別

17、提示:慎用+,-運(yùn)算符! ! !,4,3 4 5,3,2,2,3,3 4 3,2,2,2,a=3; printf(%d,%dn,a,a+); printf(%dn,a); a=3; printf(%d,%d,%d,%dn,+a,a+,a+,-a);,例,TC中結(jié)果:,VC中結(jié)果:,從例中可分析出: 1、函數(shù)參數(shù)均按從右到左的順序求值; 2、對(duì)于后置運(yùn)算,都遵循“先用后加”規(guī) 則,但“加”的時(shí)機(jī)不同,TC中是用后馬 上加,這樣下個(gè)左邊的參數(shù)用到的值是加 后的值,而在VC中,用后不馬上加,而是 在函數(shù)調(diào)用(printf)完成后才加。,2.2運(yùn)算符,2.2.3 算術(shù)運(yùn)算, 自增、自減運(yùn)算符+ -,特

18、別提示:慎用+,-運(yùn)算符! ! !,由上例知,由于+,-運(yùn)算符在不同版本的C編譯系統(tǒng)中使用時(shí)會(huì)出現(xiàn)非預(yù)期的結(jié)果,因此要慎用! 例如: a=3; printf(“%d,%d”,a,a+); 在有的系統(tǒng)中,函數(shù)參數(shù)是從左至右求值,輸出“3,3”,在多數(shù)系統(tǒng)(如TC和VC)中是從右至左求值,輸出“4,3”或“3,3”。因此,以上寫法不宜提倡,最好改寫成: a=3; b=a+; printf(“%d,%d”,a,b); 或:a=3; b=a; a+; printf(“%d,%d”,a,b); 則結(jié)果都是明確的(輸出“4,3”)。,2.2運(yùn)算符,2.2.3 算術(shù)運(yùn)算, 自增、自減運(yùn)算符+ -,特別提示:

19、慎用+,-運(yùn)算符! ! !,總之,不要編寫讓人很難看懂,也不知道系統(tǒng)會(huì)怎樣執(zhí)行的程序。 所以,我們可以通過(guò)一些含+,-比較多的表達(dá)式來(lái)加深對(duì)其運(yùn)算規(guī)則的理解,但在實(shí)際編程中,除非不得已,否則絕對(duì)不要編寫含+,-比較多的表達(dá)式。 從上面的介紹可知,含+,-比較多的復(fù)雜語(yǔ)句或有歧義的語(yǔ)句完全可以用簡(jiǎn)單易懂、結(jié)果明確的語(yǔ)句組替代。,2.2運(yùn)算符,2.2.4 關(guān)系運(yùn)算,關(guān)系運(yùn)算又稱為比較大小運(yùn)算,它有六個(gè)運(yùn)算符: 、=、=、=等四個(gè)運(yùn)算符級(jí)別為6級(jí),它們比=、!=等兩個(gè)運(yùn)算符級(jí)別為7級(jí)的要高.,2.2運(yùn)算符,2.2.4 關(guān)系運(yùn)算,關(guān)系運(yùn)算的結(jié)果為邏輯真或邏輯假,關(guān)系成立時(shí)為邏輯真(值為1),關(guān)系不成立

20、時(shí)為邏輯假(值為0)。如下表達(dá)式: 53 5=3 53 5=3 5= =3 5!=3 的邏輯值分別為 1 1 0 0 0 1,2.2運(yùn)算符,2.2.4 關(guān)系運(yùn)算,關(guān)系運(yùn)算的等于運(yùn)算符=與數(shù)學(xué)上的等于運(yùn)算符=具有相同的含義,與C語(yǔ)言中的賦值運(yùn)算符=是完全不同的,這一點(diǎn)對(duì)初學(xué)者而言往往容易搞錯(cuò)。,2.2運(yùn)算符,2.2.5 邏輯運(yùn)算、連續(xù)比較和邏輯優(yōu)化,C語(yǔ)言中邏輯運(yùn)算符有三個(gè): 邏輯與 x=y=z=0; +x|+y|+z; printf(“x=%d y=%d z=%dn”,x,y,z); x=y=z=0; +x ,程序運(yùn)行結(jié)果為:,x=1 y=0 z=0 x=1 y=1 z=0 x=1 y=1 z

21、=1 x=1 y=0 z=0,2.2運(yùn)算符,2.2.6 位運(yùn)算, 位運(yùn)算操作符,表2.5位運(yùn)算符號(hào)表,2.2運(yùn)算符,2.2.6 位運(yùn)算, 異或運(yùn)算,異或運(yùn)算真值表見(jiàn)表2.6,即對(duì)應(yīng)位相同時(shí)為0,不同時(shí)為1. 表2.6異或運(yùn)算真值表,2.2運(yùn)算符,2.2.6 位運(yùn)算, 移位運(yùn)算,左移位運(yùn)算ab:右邊移出的部分將丟棄,左邊空出的高位部分填補(bǔ)方法則根據(jù)a是否為帶符號(hào)數(shù)又分為兩種: a為帶符號(hào)數(shù)時(shí),左邊空出的高位部分用符號(hào)位填補(bǔ); a為不帶符號(hào)數(shù)時(shí),左邊空出的高位部分用0填補(bǔ)。,注意:參與運(yùn)算的數(shù)以補(bǔ)碼形式出現(xiàn).,2.2運(yùn)算符,2.2.6 位運(yùn)算, 例2.5,#include main() char

22、a= -25,b=93,c; unsigned char d= -25; c=a ,69 -1 -70 24 -4 28 3 -56,程序運(yùn)行結(jié)果為:,2.2運(yùn)算符,2.2.7 條件運(yùn)算,一般形式: expr1 ? expr2 : expr3 執(zhí)行過(guò)程,條件運(yùn)算符可嵌套 如 x0?1:(x0?-1:0) 優(yōu)先級(jí): 13,結(jié)合方向:自右向左 如 ab?a:cd?c:d ab?a:(cd?c:d),2.2運(yùn)算符,2.2.7 條件運(yùn)算,例 求 a+|b| printf(“a+|b|=%dn”,b0?a+b:a-b);,例 (a=b)?Y:N (x%2=1)?1:0 (x=0)?x:-x (c=a f

23、loat z=4; x=(y=y+6,y/z); printf(x=%dn,x); ,X=3,程序運(yùn)行結(jié)果為:,2.2運(yùn)算符,2.2.10 求字節(jié)數(shù)(sizeof),1)sizeof計(jì)算類型占用字節(jié)數(shù)的形式為: sizeof(類型) 2)sizeof計(jì)算變量占用字節(jié)數(shù)的形式有兩種: sizeof(變量)或sizeof 變量,示例: #include main() int a=5; printf(%dn,sizeof(int); printf(%dn,sizeof(a); printf(%dn,sizeof a); ,2 2 2,運(yùn)行結(jié)果為:,2.2運(yùn)算符,2.2.11 類型轉(zhuǎn)換, 算術(shù)運(yùn)算類型

24、轉(zhuǎn)換,算術(shù)運(yùn)算中,當(dāng)兩個(gè)運(yùn)算數(shù)類型相同時(shí),運(yùn)算結(jié)果類型與原類型相同,當(dāng)兩個(gè)運(yùn)算數(shù)類型不同時(shí),運(yùn)算結(jié)果類型為級(jí)別較高的數(shù)據(jù)類型。類型級(jí)別高低按下述規(guī)則進(jìn)行:,即字符型向整型轉(zhuǎn)換、整型向?qū)崝?shù)型轉(zhuǎn)換、短型向長(zhǎng)型轉(zhuǎn)換、不帶符號(hào)型向帶符號(hào)型轉(zhuǎn)換。,例如表達(dá)式: 5/2+3*4.5+2 的運(yùn)算結(jié)果為17.5,而不是18。 因?yàn)?/2時(shí),除法運(yùn)算符“/”兩邊運(yùn)算數(shù)的類型都為整數(shù),其運(yùn)算結(jié)果類型也應(yīng)為整數(shù)類型,其值當(dāng)然為2,而不是2.5;乘法3*4.5兩邊運(yùn)算數(shù)的類型不同,結(jié)果類型為級(jí)別高的類型,即實(shí)型,值為13.5,整個(gè)表達(dá)式值為17.5。 如將上述表達(dá)式改寫為: 5/2.0+3*4.5+2 此時(shí),其運(yùn)算結(jié)

25、果為18.0,而不是17.5,請(qǐng)讀者自行分析。,2.2運(yùn)算符,2.2.11 類型轉(zhuǎn)換, 算術(shù)運(yùn)算類型轉(zhuǎn)換,2.2運(yùn)算符,2.2.11 類型轉(zhuǎn)換, 賦值轉(zhuǎn)換,執(zhí)行賦值運(yùn)算 變量a = 表達(dá)式b 時(shí),若a、b類型相同,則直接將b賦給a即可,若a、b類型不同,則需先將b的類型轉(zhuǎn)換為a的類型后再賦值,這種類型轉(zhuǎn)換,我們稱之為賦值類型轉(zhuǎn)換。,2.2運(yùn)算符,2.2.11 類型轉(zhuǎn)換, 強(qiáng)制類型轉(zhuǎn)換,強(qiáng)制類型轉(zhuǎn)換的一般格式為: (目標(biāo)類型)表達(dá)式 其功能是將表達(dá)式類型轉(zhuǎn)換為目標(biāo)類型,其轉(zhuǎn)換方法同賦值轉(zhuǎn)換。 如: float a=3.1; int i; i=(int)a; 則i的值為3。,2.2運(yùn)算符,2.2.

26、11 類型轉(zhuǎn)換, 輸入/輸出類型轉(zhuǎn)換,示例: #include main() int a=15; char ch=A; printf(%dn,ch); printf(%Xn,a); ,65 F,程序運(yùn)行結(jié)果為:,詳見(jiàn)“輸入/輸出函數(shù)”一節(jié),2.3輸入/輸出函數(shù),2.3.1 格式化輸出函數(shù)printf, printf( )函數(shù)調(diào)用格式,#include ,格式:printf(“格式字符串”,輸出表) 功能:按指定格式向顯示器輸出數(shù)據(jù),輸出表:要輸出的數(shù)據(jù)(可以沒(méi)有,多個(gè)時(shí)以“,”分隔) 格式控制串:包含兩種信息 格式說(shuō)明: %flagswidth.precisionF|N|h|ltype, 用于

27、指定輸出格式 普通字符或轉(zhuǎn)義序列:原樣輸出,返回目錄,2.3輸入/輸出函數(shù),2.3.1 格式化輸出函數(shù)printf, Type類型代碼及示例,d,i,x,X,o,u,c,s,e,E,f,g,%,十六進(jìn)制無(wú)符號(hào)整數(shù),不帶符號(hào)十進(jìn)制整數(shù),十進(jìn)制整數(shù),指數(shù)形式浮點(diǎn)小數(shù),單一字符,字符串,八進(jìn)制無(wú)符號(hào)整數(shù),小數(shù)形式浮點(diǎn)小數(shù),e和f中較短一種,去0,百分號(hào)本身,int a=567;printf ( “%d”,a);,int a=255;printf(“%x”,a);,int a=65;printf(“%o”,a);,int a=567;printf(“%u”,a);,char a=65;printf(“

28、%c”,a);,printf(“%s”,“ABC”);,float a=567.789;printf(“%e”,a);,float a=567.789;printf(“%f”,a);,float a=567.789;printf(“%g”,a);,printf(“%”);,567,ff,101,567,A,ABC,5.677890e+002,567.789001,567.789,%,p,指針,int a=567; int *q=,FFF4,F(xiàn)FFF4,以無(wú)符號(hào)的十六進(jìn)制形式輸出變量的地址,說(shuō)明 Type類型代碼字符與輸出項(xiàng)個(gè)數(shù)應(yīng)相同,按先后順序一一對(duì)應(yīng)。,2.3輸入/輸出函數(shù),2.3.1 格式

29、化輸出函數(shù)printf,程序運(yùn)行結(jié)果為:, Type類型代碼及示例,3 4 a=3, b=4,示例: main( ) int a=3,b=4; printf(“%d %dn”,a,b); printf(“a=%d , b=%dn”,a,b); ,說(shuō)明 輸出類型轉(zhuǎn)換:格式字符與輸出項(xiàng)類型不一致,按指定type類型輸出。輸出類型轉(zhuǎn)換與賦值類型轉(zhuǎn)換規(guī)律相同。,2.3輸入/輸出函數(shù),2.3.1 格式化輸出函數(shù)printf,程序在VC中運(yùn)行結(jié)果為:, Type類型代碼及示例,u=1 u=4294967295,示例: main( ) int u=-1; printf(“u=%dn,u); printf(“

30、u=%un”,u); ,2.3輸入/輸出函數(shù),2.3.1 格式化輸出函數(shù)printf, 可選格式說(shuō)明符寬度 width ,定義輸出數(shù)據(jù)域?qū)?。?shù)據(jù)長(zhǎng)度width,左補(bǔ)空格;否則按實(shí)際輸出寬度。當(dāng)width值前加0時(shí),表示左邊空位用0填補(bǔ)。,程序運(yùn)行結(jié)果為:,a= 888 a=000888,示例: main( ) int a=888; printf(a=%6dn,a); printf(a=%06dn,a); ,2.3輸入/輸出函數(shù),2.3.1 格式化輸出函數(shù)printf, 可選格式說(shuō)明符精度 .precision ,精度作用于浮點(diǎn)數(shù)%f,%e,%E:精度表示“小數(shù)點(diǎn)后最多顯示位數(shù)”,默 認(rèn)值為6

31、精度作用于%g,%G:精度表示“有效位的數(shù)目” 精度作用于字符串%s:精度表示“最大字符串位數(shù)” 精度作用于整數(shù):精度決定“必須顯示的最小位數(shù)”,不足時(shí)補(bǔ)前導(dǎo)0。,程序運(yùn)行結(jié)果為:,123.1235 00001234 This is a simpl,例2.12: main( ) printf(%.4fn,123.1234567); printf(%3.8dn,1234); printf(%10.15sn,This is a simple test); ,2.3輸入/輸出函數(shù),2.3.1 格式化輸出函數(shù)printf, 可選格式說(shuō)明符標(biāo)志 flags ,程序運(yùn)行結(jié)果為:,示例:對(duì)齊符”-” mai

32、n( ) printf(%8dn,12345); printf(%8dn,12); printf(%-8dn,12345); printf(%-8dn,12); ,“-”:表示左對(duì)齊,缺?。礇](méi)有”-”號(hào)時(shí))為右對(duì)齊; “0”:輸出數(shù)值時(shí)指定左面不使用的空位置自動(dòng)填0 ; “+”:指定在有符號(hào)數(shù)的正數(shù)前顯示正號(hào)(+); “#”:在八進(jìn)制和十六進(jìn)制數(shù)前顯示前導(dǎo)0,0 x 或0X;,12345 12 12345 12,2.3輸入/輸出函數(shù),2.3.1 格式化輸出函數(shù)printf, 可選格式說(shuō)明符標(biāo)志 flags ,程序運(yùn)行結(jié)果為:,示例:“0”與“” main() printf(%+08dn,12

33、345); printf(%+8dn,12); printf(%-8dn,12345); printf(%-8dn,12); ,“-”:表示左對(duì)齊,缺省(即沒(méi)有”-”號(hào)時(shí))為右對(duì)齊; “0”:輸出數(shù)值時(shí)指定左面不使用的空位置自動(dòng)填0 ; “+”:指定在有符號(hào)數(shù)的正數(shù)前顯示正號(hào)(+); “#”:在八進(jìn)制和十六進(jìn)制數(shù)前顯示前導(dǎo)0,0 x 或0X;,+0012345 +12 12345 12,2.3輸入/輸出函數(shù),2.3.1 格式化輸出函數(shù)printf, 可選格式說(shuō)明符標(biāo)志 flags ,“-”:表示左對(duì)齊,缺?。礇](méi)有”-”號(hào)時(shí))為右對(duì)齊; “0”:輸出數(shù)值時(shí)指定左面不使用的空位置自動(dòng)填0 ; “

34、+”:指定在有符號(hào)數(shù)的正數(shù)前顯示正號(hào)(+); “#”:在八進(jìn)制和十六進(jìn)制數(shù)前顯示前導(dǎo)0,0 x 或0X;,程序運(yùn)行結(jié)果為:,示例:”#” main() printf(%#8xn,0 x1234); printf(%#8xn,0 x12); printf(%-#8on,01234); printf(%-#8on,012); ,0 x1234 0 x12 01234 012,2.3輸入/輸出函數(shù),2.3.1 格式化輸出函數(shù)printf, 可選格式說(shuō)明符標(biāo)志 h|l ,程序運(yùn)行結(jié)果為:,示例:”h”與“l(fā)” main() printf(%hdn,65536); printf(%hon,8); pri

35、ntf(%lun,65536); printf(%lxn,65536); printf(%len,5000000000.0); printf(%lfn,5000000000.0); printf(%lgn,5000000000.0); ,0 10 65536 10000 5.000000e+009 5000000000.000000 5e+009,“h”:在d,o,x,u前,指定輸出精度為short型; “l(fā)”:在d,o,x,u前,指定輸出精度為long型; 在e,f,g前,指定輸出精度為double型;,2.3輸入/輸出函數(shù),2.3.1 格式化輸出函數(shù)printf, 可選格式說(shuō)明符標(biāo)志 F|

36、N ,“F”:在p前,指定為遠(yuǎn)指針(32位),表示段地址:偏移地址; “N”:在p前,指定為近指針(16位),表示段內(nèi)偏移地址;,TC程序運(yùn)行結(jié)果為:,示例:”F”與“N” main() char far *q1=(char far *)0 xB5000002; char near *q2=(char near *)0 x452; printf(%Fpn,q1); printf(%Npn,q2); ,B500:0002 0452,注意:在VC中運(yùn)行本程序時(shí),會(huì)出現(xiàn)far is an obsolete keyword或near is an obsolete keyword之類的錯(cuò)誤,表示在VC中

37、,far和near是已經(jīng)被廢棄的關(guān)鍵字。,2.3輸入/輸出函數(shù),2.3.2 格式化輸入函數(shù)scanf, scanf( )函數(shù)調(diào)用格式,格式:scanf(“格式字符串”,地址表) 功能:按指定格式從鍵盤讀入數(shù)據(jù),存入地址表指定的 存儲(chǔ)單元中。,地址表:變量的地址,常用取地址運(yùn)算符 float v; scanf(%d%*d%d, ,3 5 4 The volume is:113.09724,2.3輸入/輸出函數(shù),2.3.2 格式化輸入函數(shù)scanf, 輸入數(shù)據(jù)流的分隔方式,用空白符號(hào)分隔:空白符有:空格,制表符,回車符;,程序運(yùn)行結(jié)果為:,例2.13: main( ) int r,h; float

38、 v; scanf(%d%*d%d, ,3 5 4 The volume is:113.09724,程序運(yùn)行結(jié)果為:,3 5 4 The volume is:113.09724,2.3輸入/輸出函數(shù),2.3.2 格式化輸入函數(shù)scanf, 輸入數(shù)據(jù)流的分隔方式,示例: main( ) int r,h; float v; scanf(“r=%dh=%d, ,程序運(yùn)行結(jié)果為:,r=3 h=4 The volume is:113.09724,用指定的符號(hào)分隔:,2.3輸入/輸出函數(shù),2.3.2 格式化輸入函數(shù)scanf, 輸入數(shù)據(jù)流的分隔方式,示例: main( ) int r,h; float v

39、; scanf(%2d%*3d%2d, ,程序運(yùn)行結(jié)果為:,12345678 r=12 h=67 The volume is:30310.06055,用指定輸入寬度分隔:,2.3輸入/輸出函數(shù),2.3.2 格式化輸入函數(shù)scanf, 輸入數(shù)據(jù)流的分隔方式,根據(jù)數(shù)據(jù)含義分隔:,示例: main( ) int r,h; char c; float v; scanf(%d%d%c, ,程序運(yùn)行結(jié)果為:,3 5r r=3 h=5 Input character is:r The volume is:113.09724,2.3輸入/輸出函數(shù),2.3.3 字符輸入/輸出函數(shù), 字符輸入,采用scanf函數(shù)

40、 例如:char ch; scanf(“%c”,2.3輸入/輸出函數(shù),2.3.3 字符輸入/輸出函數(shù), 字符輸出,采用printf函數(shù): 例如:char ch=B; printf(“%c”,ch); 采用函數(shù):putchar(參數(shù)) 功能:向顯示器輸出參數(shù)指定的一個(gè)字符。 例如:char ch=B; putchar(ch);/參數(shù)是字符變量 putchar(B);/參數(shù)是字符常量 putchar(66);/參數(shù)是整型常量 putchar(ch+1);/參數(shù)是表達(dá)式,2.3輸入/輸出函數(shù),2.3.3 字符輸入/輸出函數(shù),例2.14字符輸入輸出函數(shù)。 #include main() char c1,c2,c3; c1=getchar(); c2=ge

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論