[IT認(rèn)證]C語言第二章.ppt_第1頁
[IT認(rèn)證]C語言第二章.ppt_第2頁
[IT認(rèn)證]C語言第二章.ppt_第3頁
[IT認(rèn)證]C語言第二章.ppt_第4頁
[IT認(rèn)證]C語言第二章.ppt_第5頁
免費(fèi)預(yù)覽已結(jié)束,剩余52頁可下載查看

下載本文檔

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

文檔簡介

1、第二章 數(shù)據(jù)的類型與基本操作,預(yù)備知識(shí) 基本數(shù)據(jù)類型與常數(shù)的表示 變量與內(nèi)存 運(yùn)算符與表達(dá)式 輸入輸出函數(shù),2.0 預(yù)備知識(shí) 計(jì)算機(jī)中數(shù)的表示及進(jìn)制轉(zhuǎn)換 數(shù)碼、基與權(quán) 數(shù)碼:表示數(shù)的符號(hào) 基:數(shù)碼的個(gè)數(shù) 權(quán):每一位所具有的值 數(shù)制,各種進(jìn)制之間的轉(zhuǎn)換 二進(jìn)制、八進(jìn)制、十六進(jìn)制轉(zhuǎn)換成十進(jìn)制 方法:按權(quán)相加,各種進(jìn)制之間的轉(zhuǎn)換(整數(shù)) 二進(jìn)制、八進(jìn)制、十六進(jìn)制轉(zhuǎn)換成十進(jìn)制 方法:按權(quán)相加,十進(jìn)制轉(zhuǎn)換成二進(jìn)制、八進(jìn)制、十六進(jìn)制 原理:,方法:連續(xù)除以基,從低到高記錄余數(shù),直至商為0,二進(jìn)制與八進(jìn)制之間的轉(zhuǎn)換 二進(jìn)制轉(zhuǎn)換成八進(jìn)制:從右向左,每3位一組(不足3位左補(bǔ)0),轉(zhuǎn)換成八進(jìn)制 八進(jìn)制轉(zhuǎn)換成二進(jìn)制

2、:用3位二進(jìn)制數(shù)代替每一位八進(jìn)制數(shù),例 (1101001)2=(001,101,001)2=(151)8,例 (246)8=(010,100,110)2=(10100110)2,000 0 001 1 010 2 011 3 100 4 101 5 110 6 111 7,二進(jìn)制與十六進(jìn)制之間的轉(zhuǎn)換 二進(jìn)制轉(zhuǎn)換成十六進(jìn)制:從右向左,每4位一組(不足4位左補(bǔ)0),轉(zhuǎn)換成十六進(jìn)制 十六進(jìn)制轉(zhuǎn)換成二進(jìn)制:用4位二進(jìn)制數(shù)代替每一位十六進(jìn)制數(shù),例 (11010101111101)2=(0011,0101,0111,1101)2=(357D)16,例 (4B9E)16=(0100,1011,1001,11

3、10)2=(100101110011110)2,0000 0 0001 1 0010 2 0011 3 0100 4 0101 5 0110 6 0111 7 1000 8 1001 9 1010 A 1011 B 1100 C 1101 D 1110 E 1111 F,字節(jié)和位 內(nèi)存以字節(jié)為單元組成 每個(gè)字節(jié)有一個(gè)地址 一個(gè)字節(jié)一般由8個(gè)二進(jìn)制位組成 每個(gè)二進(jìn)位的值是0或1,數(shù)值的表示方法原碼、反碼和補(bǔ)碼 原碼:最高位為符號(hào)位,其余各位為數(shù)值本身的絕對(duì)值 反碼: 正數(shù):反碼與原碼相同 負(fù)數(shù):符號(hào)位為1,其余位對(duì)原碼取反 補(bǔ)碼: 正數(shù):原碼、反碼、補(bǔ)碼相同 負(fù)數(shù):最高位為1,其余位為原碼取反,

4、再對(duì)整個(gè)數(shù)加1,9-5=4 9+7=16=(14)12,負(fù)數(shù)補(bǔ)碼轉(zhuǎn)換成十進(jìn)制數(shù):最高位不動(dòng),其余位取反加1,例 補(bǔ)碼:11111001 取反:10000110 加1: 10000111=-7,2.1.1 基本數(shù)據(jù)類型 數(shù)據(jù)類型總表,數(shù)據(jù)類型決定: 1. 數(shù)據(jù)占內(nèi)存字節(jié)數(shù) 2. 數(shù)據(jù)取值范圍 3. 其上可進(jìn)行的操作,基本數(shù)據(jù)類型,整型,字符型,實(shí)型,有,無,說明:數(shù)據(jù)類型所占字節(jié)數(shù)在不同的編譯器會(huì)有所不同,上表以VC6機(jī)為例:,一般用大寫字母 是宏定義預(yù)處理命令,不是C語句 直接常量: 整型常量 實(shí)型常量 字符常量 字符串常量,如 #define PRICE 30,2.1.2 常數(shù)表示 定義:程

5、序運(yùn)行時(shí)其值不能改變的量(即常數(shù)) 分類: 符號(hào)常量:用標(biāo)識(shí)符代表常量 定義格式: #define 符號(hào)常量 常量,例 符號(hào)常量舉例(ch2_1.c) #define PRICE 30 main() int num,total; num=10; total=num*PRICE; printf(total=%d,total); ,運(yùn)行結(jié)果:total=300,整型常量(整常數(shù)) 三種形式: 十進(jìn)制整數(shù):由數(shù)字09和正負(fù)號(hào)表示.如 123,-456,0 八進(jìn)制整數(shù):由數(shù)字0開頭,后跟數(shù)字07表示.如0123,011 十六進(jìn)制整數(shù):由0 x開頭,后跟09,af,AF表示. 如0 x123,0Xff,

6、例 12 與 12L,整型常量的類型 根據(jù)其值所在范圍確定其數(shù)據(jù)類型 在整常量后加字母l或L,認(rèn)為它是long int 型常量,問題: 0123 = ( )10 0 x123 = ( )10 0Xff = ( )10,實(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 型,字符常量 定義:用單引號(hào)括起來的單

7、個(gè)普通字符或轉(zhuǎn)義字符.,字符常量的值:該字符的ASCII碼值,如 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 B C Isay:”Ho

8、w are you?” C Program Turbo C,例 main() printf(“Yb=n”); ,運(yùn)行結(jié)果: 屏幕顯示:= 打印機(jī)輸出:,字符常量與字符串常量不同,字符串常量 定義:用雙引號(hào)(“”)括起來的字符序列 存儲(chǔ):每個(gè)字符串尾自動(dòng)加一個(gè) 0 作為字符串結(jié)束標(biāo)志,例: char ch; ch=“A”;,2.2 變量與內(nèi)存 2.2.1標(biāo)識(shí)符 定義:用來標(biāo)識(shí)變量、常量、函數(shù)等的字符序列 組成: 只能由字母、數(shù)字、下劃線組成,且第一個(gè)字母必須是字母或下劃線 大小寫敏感 不能使用關(guān)鍵字 長度:最長32個(gè)字符 命名原則: 見名知意 不宜混淆 如l與I, o與0,例:判斷下列標(biāo)識(shí)符號(hào)合

9、法性 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,C語言內(nèi)部預(yù)先定義的標(biāo)識(shí)符稱為關(guān)鍵字,關(guān)鍵字不能作為用戶標(biāo)識(shí)符。,2.2.2變量的定義與初始化 概念:其值可以改變的量 變量名與變量值 變量定義的一般格式: 數(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 da

10、ta=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,變量定義位置:一般放在函數(shù)開頭,Ch2_005.c,整型變量 占字節(jié)數(shù)隨機(jī)器不同而不同,一般占一個(gè)機(jī)器字 shortintlong 可用sizeof(類型標(biāo)識(shí)符)測量,實(shí)型變量 float:占4字節(jié),提供7位有效數(shù)字 double:占8字節(jié),提供1516位有效數(shù)字,字符型變量 字符變量存放字符ASCII碼 char與int數(shù)據(jù)間

11、可進(jìn)行算術(shù)運(yùn)算,例 2.3 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; */,沒有字符串變量,用字符數(shù)組存放,例 2.4 void main() char ch1,ch2; ch1=a; ch2=65; printf(“ch1=%c,ch1=%dn”,ch1,ch1); printf(“ch2=%c,ch2=%dn”,ch2,ch2); ,例 2.5 將小寫字母a

12、轉(zhuǎn)換成大寫字母后輸出 #include main() char ch1=b,ch2; int i; i=a-A; ch2=ch1-i; printf(“ch1=%c,ch2=%c,i=%dn”,ch1.ch2,i); ,2.3 運(yùn)算符和表達(dá)式,表達(dá)式:由運(yùn)算符與運(yùn)算對(duì)象(變量、常量、函數(shù)、表達(dá)式)組合而成。,學(xué)習(xí)運(yùn)算符應(yīng)注意: 運(yùn)算符功能 與運(yùn)算量關(guān)系 要求運(yùn)算量個(gè)數(shù) 要求運(yùn)算量類型 運(yùn)算符優(yōu)先級(jí)別 結(jié)合方向 結(jié)果的類型,2.3.1 算術(shù)運(yùn)算符和表達(dá)式 基本算術(shù)運(yùn)算符: + - * / % 結(jié)合方向:從左向右 優(yōu)先級(jí): - -* / % - + - (2) (3) (4) 說明: “-”可為單

13、目運(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 (),例 2.6 將一個(gè)三位整數(shù)365轉(zhuǎn)換為563,調(diào)換個(gè)位與百位數(shù)字 #include void main() int x=365,a,b,c,y; c=x%10; b=x/10%10; a=x/100; y=c*100+b*10+a; printf(x=%d,y=%dn,x,y); ,2.

14、3.2 賦值運(yùn)算符和表達(dá)式 簡單賦值運(yùn)算符 符號(hào): = 格式: 變量標(biāo)識(shí)符=表達(dá)式 作用:將一個(gè)數(shù)據(jù)(常量或表達(dá)式)賦給一個(gè)變量 賦值運(yùn)算符的優(yōu)先級(jí)別很低 賦值運(yùn)算符不同于數(shù)學(xué)中的符號(hào),復(fù)合賦值運(yùn)算符 種類:+= -= *= /= %= = = a=b;b=a; a=a+1 d=func(); c=d+2;,說明: 結(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; 3=a;,例 float f; int i; i=10; f=i; 則 f

15、=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,c=2,說明: 結(jié)合方向:自右向左 優(yōu)先級(jí): 14 左側(cè)必須是變量,不能是常量或表達(dá)式,賦值表達(dá)式的值與變量值相等,且可嵌套,賦值轉(zhuǎn)換規(guī)則:使賦值號(hào)右邊表達(dá)式值自動(dòng)轉(zhuǎn)換成其左邊變量的類型,例: a=12; a+=a-=a*a,例: int a=2; a%=4-

16、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),2.3.3數(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)換成同一類型,顯式轉(zhuǎn)換(強(qiáng)制轉(zhuǎn)換) 一般形式:(類型名)(表達(dá)式) 例 (int)(x+y) (int)x+y (double)(3/2) (int)3.6 說明:強(qiáng)制轉(zhuǎn)換得到所需類型的中間變量,原變量

17、類型不變,例 main() float x; int i; x=3.6; i=(int)x; printf(“x=%f,i=%d”,x,i); 結(jié)果:x=3.600000,i=3,精度損失問題,2.3.4 常用數(shù)學(xué)函數(shù),在表達(dá)式計(jì)算中,如果遇到一般的初等數(shù)學(xué)函數(shù),可以使用系統(tǒng)提供的標(biāo)準(zhǔn)庫函數(shù)來完成 (1)頭文件包含 #include (2)函數(shù)原型 int abs(int x) double fabs(double x) double sqrt(double x) double pow(double x,double y) (3)參數(shù)的定義域 平方根函數(shù),三角函數(shù)sin(60*3.14/180

18、),例 2.8 常用數(shù)學(xué)庫函數(shù)的用法 #include #include void main() printf(abs(-5)=%d,abs(5)=%dn,abs(-5),abs(5); printf(sqrt(2)=%20.16fn,sqrt(2); printf(pow(2,3)=%f,pow(2,0.5)=%fn,pow(2,3),pow(2,0.5); printf(exp(1)=%fn,exp(1); printf(sin(x)=%fn,sin(30*3.14/180); ,自增、自減運(yùn)算符+ - 作用:使變量值加1或減1 種類: 前置 +i, -i (先執(zhí)行i+1或i-1,再使用i

19、值) 后置 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,2.3.5 幾個(gè)特殊的運(yùn)算符,自增、自減運(yùn)算符+ - 作用:使變量值加1或減1 種類: 前置 +i, -i (先執(zhí)行i+1或i-1,再使用i值) 后置 i+,i- (先使用i值,再執(zhí)行i+1或i-1),說明: + - 不能用于常量和表達(dá)式,如

20、5+,(a+b)+ + -結(jié)合方向: 自右向左 優(yōu)先級(jí):- + - -* / % -+ - (2) (3) (4),例 -i+ -(i+) i=3; printf(“%d”,-i+); /-3,例 -i+ i=3; printf(“%d”,-i+);,逗號(hào)運(yùn)算符和表達(dá)式 形式:表達(dá)式1,表達(dá)式2,表達(dá)式n 結(jié)合性:從左向右 優(yōu)先級(jí): 15 逗號(hào)表達(dá)式的值:等于表達(dá)式n的值 用途:常用于循環(huán)for語句中,例 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

21、(“%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語句中,例: /*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,2.4 輸入輸出函數(shù) 輸入:從計(jì)算機(jī)輸入設(shè)備向內(nèi)存

22、傳送數(shù)據(jù)的過程 輸出:將主機(jī)中的數(shù)據(jù)傳送到計(jì)算機(jī)輸出設(shè)備,C語言無I/O語句,I/O操作由函數(shù)實(shí)現(xiàn) #include 2.4.1 數(shù)據(jù)輸出,格式:printf(“格式控制串”,輸出項(xiàng)表) 功能:按指定格式向顯示器輸出數(shù)據(jù) 返值:正常,返回輸出字節(jié)數(shù);出錯(cuò),返回EOF(-1),格式輸出函數(shù),輸出項(xiàng)表:要輸出的數(shù)據(jù)(可以沒有,多個(gè)時(shí)以“,”分隔)常量,變量或表達(dá)式,個(gè)數(shù)與格式說明符的個(gè)數(shù)相同,類型一致 格式控制串:包含兩種信息 格式控制符: %修飾符格式描述字符 ,用于指定輸出格式 普通字符或轉(zhuǎn)義序列:原樣輸出 格式描述字符,int a=567;printf ( “%d”,a);,int a=25

23、5;printf(“%x”,a);,int a=65;printf(“%o”,a);,int a=567;printf(“%u”,a);,char a=65;printf(“%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+02,567.789000,567.789,%,說明 格式字符要用小寫 格式字符與輸出項(xiàng)個(gè)

24、數(shù)應(yīng)相同,按先后順序一一對(duì)應(yīng) 輸出轉(zhuǎn)換:格式字符與輸出項(xiàng)類型不一致,自動(dòng)按指定格式輸出,例 int a=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=4,附加格式說明符(修飾符),例 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(“%sn%15sn%10.5sn%2.5sn%.3sn”,a,a,a,a,a);,運(yùn)行結(jié)果:Hello,world! Hello,world! Hello Hello Hel,例 m.n,2.4.2 格式輸入函數(shù),格式: scanf(“格式控制字符串”,地址表) 功能:按指定格式從鍵盤讀入數(shù)據(jù),存入地址表指定的 存儲(chǔ)單元

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論