第2章數(shù)據(jù)類型、運(yùn)算符、表達(dá)式與基本輸入輸出_第1頁(yè)
第2章數(shù)據(jù)類型、運(yùn)算符、表達(dá)式與基本輸入輸出_第2頁(yè)
第2章數(shù)據(jù)類型、運(yùn)算符、表達(dá)式與基本輸入輸出_第3頁(yè)
第2章數(shù)據(jù)類型、運(yùn)算符、表達(dá)式與基本輸入輸出_第4頁(yè)
第2章數(shù)據(jù)類型、運(yùn)算符、表達(dá)式與基本輸入輸出_第5頁(yè)
已閱讀5頁(yè),還剩50頁(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 2章章 數(shù)據(jù)類型、運(yùn)算符、表達(dá)式與數(shù)據(jù)類型、運(yùn)算符、表達(dá)式與 基本輸入輸出基本輸入輸出學(xué)習(xí)要點(diǎn):u常見(jiàn)的數(shù)據(jù)類型u各種運(yùn)算符和表達(dá)式uprintf()函數(shù)和scanf()函數(shù)2.1 2.1 數(shù)據(jù)類型數(shù)據(jù)類型 數(shù)據(jù)類型總表C數(shù)據(jù)類型基本類型構(gòu)造類型指針類型空類型void定義類型typedef字符類型char枚舉類型enum整 型實(shí)型單精度型float雙精度型double數(shù)組結(jié)構(gòu)體struct共用體union短整型short長(zhǎng)整型long整型int數(shù)據(jù)類型決定:1. 數(shù)據(jù)占內(nèi)存字節(jié)數(shù)2. 數(shù)據(jù)取值范圍3. 其上可進(jìn)行的操作 基本數(shù)據(jù)類型類型符號(hào)關(guān)鍵字?jǐn)?shù)的表示范圍所占位數(shù)整型字符型實(shí)型有無(wú)(

2、signed)int16-3276832767(signed)short16-3276832767(signed)long32-2147483648214748364716unsigned int0655353204294967295unsigned longunsigned short16065535有float323.4e-383.4e38有double641.7e-3081.7e308有char8-128127無(wú)unsigned char80255說(shuō)明:數(shù)據(jù)類型所占字節(jié)數(shù)隨系統(tǒng)不同而不同,上表以IBM PC機(jī)為例:2.2 2.2 常量與變量常量與變量 標(biāo)識(shí)符 定義:用來(lái)標(biāo)識(shí)變量、常量、函

3、數(shù)等的字符序列 組成: 只能由字母、數(shù)字、下劃線組成,且第一個(gè)字母必須是字母或下劃線 大小寫敏感 不能使用關(guān)鍵字 長(zhǎng)度:最長(zhǎng)32個(gè)字符 命名原則: 見(jiàn)名知意 不宜混淆 如l與I, o與 一般用大寫字母 是宏定義預(yù)處理命令,不是C語(yǔ)句直接常量: 整型常量 實(shí)型常量 字符常量 字符串常量如 #define PRICE 30 常量 定義:程序運(yùn)行時(shí)其值不能改變的量(即常數(shù)) 分類:符號(hào)常量:用標(biāo)識(shí)符代表常量 定義格式: #define 符號(hào)常量 常量例 符號(hào)常量舉例(ch2_1.c)#define PRICE 30main() int num,total; num=10; total=num*PRI

4、CE; printf(total=%d,total);運(yùn)行結(jié)果:total=&整型常量(整常數(shù)) 三種形式:十進(jìn)制整數(shù):由數(shù)字09和正負(fù)號(hào)表示.如 123,-456,0八進(jìn)制整數(shù):由數(shù)字0開(kāi)頭,后跟數(shù)字07表示.如0123,011十六進(jìn)制整數(shù):由0 x開(kāi)頭,后跟09,af,AF表示. 如0 x123,0Xff例 12 與 12L例 30000 為int型 65536 為long int 型 整型常量的類型根據(jù)其值所在范圍確定其數(shù)據(jù)類型在整常量后加字母l或L,認(rèn)為它是long int 型常量問(wèn)題:0123 = ( )100 x123 = ( )100Xff = ( )1083291255

5、問(wèn)題:0123 = ( )100 x123 = ( )100Xff = ( )&實(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 ,123E2, 1.23e4 , e-5 , 1.2E-3.5 實(shí)型常量的類型默認(rèn)double型在實(shí)型常量后加字母f或F,認(rèn)為它是float 型8&字符常量 定義:用單引號(hào)括起來(lái)的單個(gè)普通字符或轉(zhuǎn)義字符. 字符常量的值:該字符的ASCII碼值轉(zhuǎn)義字符及其含義:轉(zhuǎn)義字符含義nvradddtbf“xhh轉(zhuǎn)義字符含

6、義換行垂直制表回車響鈴單引號(hào)3位8進(jìn)制數(shù)代表的字符水平制表退格換頁(yè)反斜線雙引號(hào)2位16進(jìn)制數(shù)代表的字符如 101 -A 012 -n 376 - x61 -a 60 -0 483 -()例:A-101-x41-65如 A65, a97, 048 , n10如 a A ? n 101 轉(zhuǎn)義字符:反斜線后面跟一個(gè)字符或一個(gè)代碼值表示例 轉(zhuǎn)義字符舉例(ch2_001.c,ch2_004.c) main() printf(101 x42 Cn); printf(I say:How are you?n); printf(C Programn); printf(Turbo C);運(yùn)行結(jié)果:(屏幕顯示)A

7、B CIsay:”How are you?”C ProgramTurbo C例 main() printf(“Yb=n”); 運(yùn)行結(jié)果:屏幕顯示:=打印機(jī)輸出: 字符常量與字符串常量不同&字符串常量 定義:用雙引號(hào)(“”)括起來(lái)的字符序列 存儲(chǔ):每個(gè)字符串尾自動(dòng)加一個(gè) 0 作為字符串結(jié)束標(biāo)志h e l l o 0例 字符串“hello”在內(nèi)存中a a 0例 a“a”例 空串 “”0例: char ch; ch=“A”; 例: char ch; ch=A; 編譯程序根據(jù)變量定義為其分配指定字節(jié)的內(nèi)存單元.地址int a=1, b=-3,c;abc2字節(jié)2字節(jié)2字節(jié)地址地址.內(nèi)存1-3隨機(jī)

8、數(shù) 變量 概念:其值可以改變的量 變量名與變量值 變量定義的一般格式: 數(shù)據(jù)類型 變量1,變量2,變量n; 變量初始化:定義時(shí)賦初值 例: int a,b,c; float data;決定分配字節(jié)數(shù)和數(shù)的表示范圍合法標(biāo)識(shí)符例: 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; 變量的使用:先定義,后使用例1 int student; stadent=19; /Undefined symbol statent in function main 例2 float a,b,c; c=a%b; /Illeg

9、al use of floating point in function main 變量定義位置:一般放在函數(shù)開(kāi)頭main() int a,b=2; float data; a=1; data=(a+b)*1.2; printf(“data=%fn”,data);變量定義可執(zhí)行語(yǔ)句main() int a,b=2; a=1; float data; data=(a+b)*1.2; printf(“data=%fn”,data);&整型變量 占字節(jié)數(shù)隨機(jī)器不同而不同,一般占一個(gè)機(jī)器字 shortintlong 可用sizeof(類型標(biāo)識(shí)符)測(cè)量&實(shí)型變量 float:占4字節(jié),提

10、供7位有效數(shù)字 double:占8字節(jié),提供1516位有效數(shù)字&字符型變量 字符變量存放字符ASCII碼 char與int數(shù)據(jù)間可進(jìn)行算術(shù)運(yùn)算例 float a;a=111111.111; /* a=111111.1*/double b;b=111111.111; /* b=111111.111*/例 a=D; /* a=68; */ x=A+5; /* x=65+5; */ s=!+G /* s=33+71; */沒(méi)有字符串變量,用字符數(shù)組存放例 /*ch2_003.c*/ #define PRICE 12.5 main() int num=3; float total; char

11、ch1,ch2=D; total=num*PRICE; ch1=ch2-A+a; printf(“total=%f,ch1=%cn”,total,ch1); 宏定義變量定義輸出結(jié)果運(yùn)行結(jié)果:total=37.500000, ch1=2.32.3不同類型數(shù)據(jù)間的轉(zhuǎn)換不同類型數(shù)據(jù)間的轉(zhuǎn)換 隱式轉(zhuǎn)換 什么情況下發(fā)生運(yùn)算轉(zhuǎn)換-不同類型數(shù)據(jù)混合運(yùn)算時(shí)賦值轉(zhuǎn)換-把一個(gè)值賦給與其類型不同的變量時(shí)輸出轉(zhuǎn)換-輸出時(shí)轉(zhuǎn)換成指定的輸出格式函數(shù)調(diào)用轉(zhuǎn)換-實(shí)參與形參類型不一致時(shí)轉(zhuǎn)換 運(yùn)算轉(zhuǎn)換規(guī)則:不同類型數(shù)據(jù)運(yùn)算時(shí)先自動(dòng)轉(zhuǎn)換成同一類型doublefloatlongunsignedintchar,short低高說(shuō)明:必定

12、的轉(zhuǎn)換運(yùn)算對(duì)象類型不同時(shí)轉(zhuǎn)換例 char ch; int i; float f; double d;ch/i + f*d - (f+i)intintdoubledoublefloatfloatdoubledoubleintintfloatfloatdoubledoublefloatdouble10+a +i*f - d/l例 int i; float f; double d; long l; 顯式轉(zhuǎn)換(強(qiáng)制轉(zhuǎn)換) 一般形式:(類型名)(表達(dá)式)例 (int)(x+y) (int)x+y (double)(3/2) (int)3.6 說(shuō)明:強(qiáng)制轉(zhuǎn)換得到所需類型的中間變量,原變量類型不變 例 ma

13、in() float x; int i; x=3.6; i=(int)x; printf(“x=%f,i=%d”,x,i); 結(jié)果:x=3.600000,i=3精度損失問(wèn)題較高類型向較低類型轉(zhuǎn)換時(shí)可能發(fā)生2.4 2.4 運(yùn)算符和表達(dá)式運(yùn)算符和表達(dá)式C運(yùn)算符算術(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)算符:()其它 :(( ) -)學(xué)習(xí)

14、運(yùn)算符應(yīng)注意: 運(yùn)算符功能 與運(yùn)算量關(guān)系要求運(yùn)算量個(gè)數(shù)要求運(yùn)算量類型 運(yùn)算符優(yōu)先級(jí)別 結(jié)合方向 結(jié)果的類型算術(shù)運(yùn)算符和表達(dá)式 基本算術(shù)運(yùn)算符: + - * / %結(jié)合方向:從左向右優(yōu)先級(jí): - -* / % - + - (2) (3) (4)說(shuō)明: “-”可為單目運(yùn)算符時(shí),右結(jié)合性兩整數(shù)相除,結(jié)果為整數(shù)%要求兩側(cè)均為整型數(shù)據(jù)例 5/2 = -5/2.0 =例 5%2 = -5%2 = 1%10 = 5%1 = 5.5%2例 5/2 = 2 -5/2.0 = -2.5例 5%2 = 1 -5%2 = -1 1%10 = 1 5%1 = 0 5.5%2 () 自增、自減運(yùn)算符+ -作用:使變量值加

15、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;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 自增、自減運(yùn)算符+ -作用:使變量值加1或減1種類: 前置 +i, -i (先執(zhí)行i+1或i-1,再使用i值) 后置 i+,i- (先使用i值,再執(zhí)行i+1或i-1)說(shuō)明: + - 不能

16、用于常量和表達(dá)式,如5+,(a+b)+ + -結(jié)合方向: 自右向左 優(yōu)先級(jí):- + - -* / % -+ - (2) (3) (4)例 -i+ -(i+) i=3; printf(“%d”,-i+); /-3 例 j+k; (j+)+k;例 -i+ i=3; printf(“%d”,-i+); 賦值運(yùn)算符和表達(dá)式 簡(jiǎn)單賦值運(yùn)算符符號(hào): =格式: 變量標(biāo)識(shí)符=表達(dá)式作用:將一個(gè)數(shù)據(jù)(常量或表達(dá)式)賦給一個(gè)變量 復(fù)合賦值運(yùn)算符種類:+= -= *= /= %= = = &= = |=a+=3a=a+3x*=y+8x=x*(y+8)x%=3x=x%3例 a=3; d=func(); c=d

17、+2; 說(shuō)明:結(jié)合方向:自右向左 優(yōu)先級(jí): 14左側(cè)必須是變量,不能是常量或表達(dá)式 賦值表達(dá)式的值與變量值相等,且可嵌套賦值轉(zhuǎn)換規(guī)則:使賦值號(hào)右邊表達(dá)式值自動(dòng)轉(zhuǎn)換成其左邊變量的類型例 3=x-2*y; a+b=3;例 float f; int i; i=10; f=i;則 f=10.0例 int i; i=2.56; /結(jié)果i=2;例: a=b=c=5 a=(b=5) a=5+(c=6) a=(b=4)+(c=6) a=(b=10)/(c=2)/表達(dá)式值為5,a,b,c值為5/ b=5;a=5/表達(dá)式值11,c=6,a=11/表達(dá)式值10,a=10,b=4,c=6/表達(dá)式值5,a=5,b=10

18、,c=2賦值表達(dá)式的值與變量值相等,且可嵌套例: a=12; a+=a-=a*a例: int a=2; a%=4-1; a+=a*=a-=a*=3; /a=-264 等價(jià)于a=a+(a=a-(a*a)/a=0 等價(jià)于a=a+(a=a*(a=a-(a=a*3)逗號(hào)運(yùn)算符和表達(dá)式 形式:表達(dá)式1,表達(dá)式2,表達(dá)式n 結(jié)合性:從左向右 優(yōu)先級(jí): 15 逗號(hào)表達(dá)式的值:等于表達(dá)式n的值 用途:常用于循環(huán)for語(yǔ)句中例 a=3*5,a*4 a=3*5,a*4,a+5例 x=(a=3,6*3) x=a=3,6*a例 a=1;b=2;c=3; printf(“%d,%d,%d”,a,b,c); printf

19、(“%d,%d,%d”,(a,b,c),b,c); /a=15,表達(dá)式值60/a=15,表達(dá)式值20/賦值表達(dá)式,表達(dá)式值18,x=18/逗號(hào)表達(dá)式,表達(dá)式值18,x=3/1,2,3/3,2,3逗號(hào)運(yùn)算符和表達(dá)式 形式:表達(dá)式1,表達(dá)式2,表達(dá)式n 結(jié)合性:從左向右 優(yōu)先級(jí): 15 逗號(hào)表達(dá)式的值:等于表達(dá)式n的值 用途:常用于循環(huán)for語(yǔ)句中例:/*ch2_6.c*/#include main() int x,y=7; float z=4; x=(y=y+6,y/z); printf(x=%dn,x);運(yùn)行結(jié)果:x=3 關(guān)系運(yùn)算符和表達(dá)式 關(guān)系運(yùn)算符 種類: = != 結(jié)合方向:自左向右 優(yōu)

20、先級(jí)別:=!=優(yōu)先級(jí)6(高)優(yōu)先級(jí)7(低)例 ca+b /c(a+b) ab!=c /(ab)!=c a=bc /a=(bc /a=(bc) 關(guān)系表達(dá)式的值:是邏輯值“真”或“假”,用1和0表示例 int a=3,b=2,c=1,d,f; ab (ab)=c b+cb f=abc/表達(dá)式值1/表達(dá)式值1/表達(dá)式值0/d=1/f=0 關(guān)系運(yùn)算注意:例 若a=0; b=0.5; x=0.3; 則 a=x278在C中是允許的, 值為0例 int i=1, j=7,a; a=i+(j%4!=0); 則a=2例 a0 結(jié)果為 A100 結(jié)果為10 關(guān)系運(yùn)算注意:例 注意區(qū)分“=”與“=” int a=0

21、,b=1; if(a=b) printf(“a equal to b”); else printf(“a not equal to b”);例 應(yīng)避免對(duì)實(shí)數(shù)作相等或不等的判斷如 1.0/3.0*3.0=1.0 結(jié)果為可改寫為:fabs(1.0/3.0*3.0-1.0)1e-60ab!a!ba&ba|b真假真假假假真真 邏輯運(yùn)算符和表達(dá)式 邏輯運(yùn)算符 種類: ! & | 邏輯運(yùn)算真值表C語(yǔ)言中,運(yùn)算量: 0表示“假”, 非0表示“真”, 運(yùn)算結(jié)果: 0表示“假”, 1表示“真”,真假假假假假真真假假真真真假真真! (2)& (11)| (12)高低例 a=x &

22、xb&xy a=b|x=y !a|abl優(yōu)先級(jí):l結(jié)合方向:! :從右向左& :從左向右| :從左向右/ (a=x) & (xb)&(xy)/(a=b)|(x=y)/(!a)|(ab)! (2)& (11)| (12)高低l優(yōu)先級(jí):l結(jié)合方向:! :從右向左& :從左向右| :從左向右例 a=4;b=5; !a a&b a|b !a|b 4&0|2 53&2|84-!0 c&d值為1值為0值為1值為1值為1值為1/(53)&2|(8(4-(!0) 值為1! (2)& (11)| (12)高低l優(yōu)先級(jí)

23、:l結(jié)合方向:! :從右向左& :從左向右| :從左向右 短路特性:邏輯表達(dá)式求解時(shí),并非所有的邏輯運(yùn)算符都被執(zhí)行,只是在必須執(zhí)行下一個(gè)邏輯運(yùn)算符才能求出表達(dá)式的解時(shí),才執(zhí)行該運(yùn)算符例 a&b&c /只在a為真時(shí),才判別b的值; 只在a、b都為真時(shí),才判別 c的值例 a|b|c /只在a為假時(shí),才判別b的值; 只在a、b都為假時(shí),才判別 c的值例 a=1;b=2;c=3;d=4;m=1;n=1; (m=ab)&(n=cd)/結(jié)果m=0,n=1 條件運(yùn)算符與表達(dá)式 一般形式: expr1 ? expr2 : expr3 執(zhí)行過(guò)程 功能:相當(dāng)于條件語(yǔ)句,但不能取代一

24、般if語(yǔ)句例 if (ab) printf(“%d”,a); else printf(“%d”,b);printf(“%d”,ab?a:b);例 求 a+|b| printf(“a+|b|=%dn”,b0?a+b:a-b);expr1取expr2值取expr3值非0=0例 (a=b)?Y:N (x%2=1)?1:0 (x=0)?x:-x (c=a & c0?1:(xb?a:cd?c:d ab?a:(cd?c:d) expr1、expr2、expr3類型可不同,表達(dá)式值取較高的類型例 x?a:b /x=0,表達(dá)式值為b; x0,表達(dá)式值為a xy?1:1.5 /xy ,值為1.0; xy

25、 ,值為格式: putchar( c )參數(shù): c為字符常量、變量或表達(dá)式功能:把字符c輸出到顯示器上返值:正常,為顯示的代碼值;出錯(cuò),為EOF(-1)2.52.5 數(shù)據(jù)輸入與輸出數(shù)據(jù)輸入與輸出5C語(yǔ)言無(wú)I/O語(yǔ)句,I/O操作由函數(shù)實(shí)現(xiàn)5 #include v1 數(shù)據(jù)輸出數(shù)據(jù)輸出 字符輸出函數(shù)#include main() int c; char a; c=65; a=B; putchar(c); putchar(n); putchar(a);運(yùn)行結(jié)果:A B例格式:printf(“格式控制串”,輸出表)功能:按指定格式向顯示器輸出數(shù)據(jù)返值:正常,返回輸出字節(jié)數(shù);出錯(cuò),返回EOF(-1) 格式

26、輸出函數(shù) 輸出表:要輸出的數(shù)據(jù)(可以沒(méi)有,多個(gè)時(shí)以“,”分隔) 格式控制串:包含兩種信息 格式說(shuō)明: %修飾符格式字符 ,用于指定輸出格式 普通字符或轉(zhuǎn)義序列:原樣輸出 格式字符dx,Xoucse,Efg%格式字符:十六進(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中較短一種百分號(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(“%c”,a)

27、;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(“%”);567ff101567AABC5.677890e+02567.789000567.789% 說(shuō)明 格式字符要用小寫 格式字符與輸出項(xiàng)個(gè)數(shù)應(yīng)相同,按先后順序一一對(duì)應(yīng) 輸出轉(zhuǎn)換:格式字符與輸出項(xiàng)類型不一致,自動(dòng)按指定格式輸出例 main() unsigned int u=65535; printf(”u=%dn,u); 輸出結(jié)果:u=-1例 int a

28、=3,b=4; printf(“%d %dn”,a,b); printf(“a=%d , b=%dn”,a,b); 例 int a=3,b=4; printf(“%d %dn”,a,b); printf(“a=%d , b=%dn”,a,b);輸出結(jié)果: 3 4 a=3, b=411 11 11 11 11 11 11 1165535 附加格式說(shuō)明符(修飾符).n對(duì)實(shí)數(shù),指定小數(shù)點(diǎn)后位數(shù)(四舍五入)對(duì)字符串,指定實(shí)際輸出位數(shù)修飾符功 能m輸出數(shù)據(jù)域?qū)?數(shù)據(jù)長(zhǎng)度m,左補(bǔ)空格;否則按實(shí)際輸出輸出數(shù)據(jù)在域內(nèi)左對(duì)齊(缺省右對(duì)齊)-指定在有符號(hào)數(shù)的正數(shù)前顯示正號(hào)(+)+輸出數(shù)值時(shí)指定左面不使用的空位置自

29、動(dòng)填00在八進(jìn)制和十六進(jìn)制數(shù)前顯示前導(dǎo)0,0 x#在d,o,x,u前,指定輸出精度為long型在e,f,g前,指定輸出精度為double型例 int a=1234; float f=123.456; char ch=a; printf(“%8d,%2dn”,a,a); printf(“%f,%8f,%8.1f,%.2f,%.2en”,f,f,f,f,f); printf(“%3cn”,ch);運(yùn)行 1234,1234結(jié)果: 123.456000,123.456000, 123.5,123.46,1.23e+02 a例 static char a=“Hello,world!” printf(“%

30、sn%15sn%10.5sn%2.5sn%.3sn”,a,a,a,a,a);運(yùn)行結(jié)果:Hello,world! Hello,world! Hello Hello Hel 例 m.n格式:getchar( )功能:從鍵盤讀一字符返值:正常,返回讀取的代碼值;出錯(cuò),返回EOF(-1) 2 數(shù)據(jù)輸入 字符輸入函數(shù) 例 /*ch3_4.c*/#include main() int c; printf(Enter a character:); c=getchar(); printf(%c-hex%xn,c,c);運(yùn)行結(jié)果:Enter a character:AA-hex41 格式輸入函數(shù)格式: scan

31、f(“格式控制串”,地址表)功能:按指定格式從鍵盤讀入數(shù)據(jù),存入地址表指定的 存儲(chǔ)單元中,并按回車鍵結(jié)束返值:正常,返回輸入數(shù)據(jù)個(gè)數(shù) 地址表:變量的地址,常用取地址運(yùn)算符& 格式字符:d,i,o,x,u,c,s,f,e例 scanf(“%d”,&a); 輸入:10 則 a=10例 scanf(“%x”,&a); 輸入:11 則 a=17 附加格式說(shuō)明符(修飾符)l修飾符功 能hm*用于d,o,x前,指定輸入為short型整數(shù)用于d,o,x前,指定輸入為long型整數(shù)用于e,f前,指定輸入為double型實(shí)數(shù)指定輸入數(shù)據(jù)寬度,遇空格或不可轉(zhuǎn)換字符則結(jié)束抑制符,指定輸入項(xiàng)讀

32、入后不賦給變量例 scanf(“%4d%2d%2d”,&yy,&mm,&dd); 輸入 19991015 則1999yy, 10 mm, 15 dd例 scanf(“%3d%*4d%f”,&k,&f); 輸入 12345678765.43 則123k, 8765.43f例 scanf(“%2d%*3d%2d”,&a,&b); 輸入 1234567 則12a, 67b例 scanf(“%3c%2c”,&c1,&c2); 輸入 abcde 則ac1, d c2 說(shuō)明:用“%c”格式符時(shí),空格和轉(zhuǎn)義字符作為有效字符輸入如 sca

33、nf(“%c%c%c”,&c1,&c2,&c3); 若輸入abc 則ac1, c2, b c3輸入數(shù)據(jù)時(shí),遇以下情況認(rèn)為該數(shù)據(jù)結(jié)束:遇空格、TAB、或回車遇寬度結(jié)束遇非法輸入如 scanf(“%d%c%f”,&a,&b,&c); 若輸入1234a123o.26 則 1234 a, a b, 123 c輸入函數(shù)留下的“垃圾”:例 int x; char ch; scanf(“%d”,&x); ch=getchar(); printf(“x=%d,ch=%dn”,x,ch);執(zhí)行:123輸出:x=123,ch=10例 int x; char

34、ch; scanf(“%d”,&x); scanf(“%c”,&ch); printf(“x=%d,ch=%dn”,x,ch);執(zhí)行:123輸出:x=123,ch=10解決方法:(1)用getchar()清除(2)用函數(shù)fflush(stdin)清除全部剩余內(nèi)容 (3) 用格式串中空格或“%*c”來(lái)“吃掉”例 int x; char ch; scanf(“%d”,&x); scanf(“ %c”,&ch);或 scanf(“%*c%c”,&ch); 2.6 2.6 指針的概念指針的概念 變量與地址程序中: int i; float k; 內(nèi)存中每個(gè)字節(jié)有

35、一個(gè)編號(hào)-地址.2000200120022005內(nèi)存02003ik 編譯或函數(shù)調(diào)用時(shí)為其分配內(nèi)存單元變量是對(duì)程序中數(shù)據(jù)存儲(chǔ)空間的抽象.2000200420062005整型變量i10變量i_pointer200120022003 指針與指針變量 指針:一個(gè)變量的地址 指針變量:專門存放變量地址的變量叫2000指針指針變量 變量的內(nèi)容 變量的地址指針變量變量變量地址(指針)變量值指向地址存入指針變量 &與*運(yùn)算符 含義含義: 取變量的地址單目運(yùn)算符優(yōu)先級(jí): 2結(jié)合性:自右向左含義: 取指針?biāo)赶蜃兞康膬?nèi)容單目運(yùn)算符優(yōu)先級(jí): 2結(jié)合性:自右向左 兩者關(guān)系:互為逆運(yùn)算 理解.200020042

36、0062005整型變量i10變量i_pointer2001200220032000指針變量i_pointer-指針變量,它的內(nèi)容是地址量*i_pointer-指針的目標(biāo)變量,它的內(nèi)容是數(shù)據(jù)&i_pointer-指針變量占用內(nèi)存的地址200010i_pointer*i_pointer&i_pointerii_pointer &i &(*i_pointer)i *i_pointer *(&i)i_pointer = &i = &(*i_pointer)i = *i_pointer = *(&i) 直接訪問(wèn)與間接訪問(wèn) 直接訪問(wèn):按變量地

37、址存取變量值 間接訪問(wèn):通過(guò)存放變量地址的變量去訪問(wèn)變量例 i=3; -直接訪問(wèn)指針變量.2000200420062005整型變量i10變量i_pointer20012002200320003例 *i_pointer=20; -間接訪問(wèn)20指針變量.2000200420062005整型變量i10變量i_pointer2001200220032000整型變量k例 k=i; -直接訪問(wèn) k=*i_pointer; -間接訪問(wèn)10例 k=i; k=*i_pointer; 指針變量指針變量與其所指向的變量之間的關(guān)系 指針變量的定義 一般形式: 存儲(chǔ)類型 數(shù)據(jù)類型 *指針名;3變量i2000i_pointer*i_pointeri*i_pointer&ii_pointeri=3;*i_pointer=33變量i2000i_pointer*i_pointeri*i_pointer&ii_pointeri=3;*i_pointer=3合法標(biāo)識(shí)符指針變量本身的存儲(chǔ)類型指針的目標(biāo)變量的數(shù)據(jù)類型表示定義指針變量不是*運(yùn)算符例 int *p1,*p2; float *q ; static char *name;注意:1、int *p1, *p2;

溫馨提示

  • 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)論