版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第3章順序程序結(jié)構(gòu)數(shù)據(jù)類型、運(yùn)算符號(hào)與表達(dá)式主要內(nèi)容預(yù)備知識(shí):信息在計(jì)算機(jī)中的表示數(shù)據(jù)類型和常量、變量定義和使用(語法)在計(jì)算機(jī)中的存儲(chǔ)方式(C的低級(jí)語言特性)運(yùn)算符的種類、優(yōu)先級(jí)和結(jié)合性表達(dá)式的類型和表達(dá)式值順序結(jié)構(gòu)程序信息在計(jì)算機(jī)系統(tǒng)中的表示外部世界的信息數(shù)整數(shù)有符號(hào)數(shù)無符號(hào)數(shù)小數(shù)文字(各種形狀)中文、藏文、英文、俄文、阿拉伯文。。。7段碼圖象(靜態(tài)、動(dòng)態(tài))聲音數(shù)字系統(tǒng)能處理的信息0、1信息的表示怎樣用0和1對(duì)上述的信息進(jìn)行編碼數(shù)制(怎樣表示一個(gè)數(shù))數(shù)數(shù)值:數(shù)的大小。數(shù)碼:表示數(shù)值的最基本符號(hào)(有限性、方便性)數(shù)符:由數(shù)碼構(gòu)成的一個(gè)排列(數(shù)碼序列)。計(jì)數(shù)制(簡稱數(shù)制):怎樣構(gòu)成一個(gè)數(shù):多位數(shù)符的構(gòu)成方法,以及數(shù)符所表示的數(shù)值(數(shù)的大?。┑挠?jì)算方法?;?數(shù)碼的個(gè)數(shù),由此決定計(jì)數(shù)規(guī)則:逢幾進(jìn)幾權(quán):由數(shù)碼所在位置所決定的一個(gè)常數(shù)。計(jì)算方法:每個(gè)數(shù)碼代表的數(shù)值×這個(gè)數(shù)碼所在位置的權(quán)的總和。十進(jìn)制數(shù)碼:0、1、2、3、4、5、6、7、8、9基:10權(quán):10的冪數(shù)符:1999計(jì)數(shù)規(guī)則:逢十進(jìn)一數(shù)值:例:(1999)10
=(1×103+9×102+9×101+9×100)10
二進(jìn)制
數(shù)碼:0、1計(jì)數(shù)規(guī)則:逢二進(jìn)一基數(shù):2權(quán):2的冪一般形式為:(N)2=(bn-1bn-2…b1b0)2
=(bn-1×2n-1+bn-2×2n-2+……+b1×21+b0×20)10例:(1011101)2=
(1×26+0×25+1×24+1×23+1×22+0×21+1×20)10
=(64+0+16+8+4+0+1)10=(93)10數(shù)值越大,位數(shù)越多,讀寫不方便,容易出錯(cuò)!八進(jìn)制
數(shù)碼:0~7計(jì)數(shù)規(guī)則:逢八進(jìn)一基數(shù):8權(quán):8的冪例:(128)8=(1×82+2×81+8×80)10=(64+16+8)10=(88)10十六進(jìn)制
數(shù)碼:0~9、A、B、C、D、E、F計(jì)數(shù)規(guī)則:逢十六進(jìn)一基數(shù):16權(quán):16的冪例:(5D)16=(5×161+13×160)10=(80+13)10=(93)10DIY數(shù)碼:⊙、♂、▲基數(shù):3權(quán):3的冪計(jì)數(shù)規(guī)則:逢三進(jìn)一將♂
⊙▲♂表示為十進(jìn)制♂
⊙▲♂=1×33+0×32
+2×31
+1×30=34♂
⊙▲♂二進(jìn)制與八進(jìn)制、十六進(jìn)制之間的轉(zhuǎn)換
(1)二進(jìn)制與八進(jìn)制之間的轉(zhuǎn)換三位二進(jìn)制數(shù)對(duì)應(yīng)一位八進(jìn)制數(shù)。(101011100101)2
=(101,011,100,101)2
=(5345)8(6574)8=(110,101,111,100)2
=(110101111100)2二進(jìn)制與十六進(jìn)制之間的轉(zhuǎn)換例如:(9A7E)16=(1001101001111110)2
=(1001101001111110)2四位二進(jìn)制數(shù)對(duì)應(yīng)一位十六進(jìn)制數(shù)。(10111010110)2=(010111010110)2
=(5D6)16十進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制
整數(shù)部分的轉(zhuǎn)換:除2取余法。例:求(217)10=()2
解:∵2∣217…………余1b02∣108…………余0b12∣54…………余0b22∣27…………余1b32∣13…………余1b42∣6…………余0b52∣3…………余1b62∣1…………余1b70∴(217)10=(11011001)2例:求(0.3125)10=()2
解:
∵0.3125×2=0.625…………整數(shù)為0b-1
0.625×2=1.25…………整數(shù)為1b-20.25×2=0.5…………整數(shù)為0b-3
0.5×2=1.0…………整數(shù)為1b-4說明:有時(shí)可能無法得到0的結(jié)果,這時(shí)應(yīng)根據(jù)轉(zhuǎn)換精度的要求適當(dāng)取一定位數(shù)。小數(shù)部分的轉(zhuǎn)換:乘2取整法?!啵?.3125)10=(0.0101)2幾種計(jì)數(shù)進(jìn)制數(shù)的對(duì)照表十進(jìn)制二進(jìn)制八進(jìn)制十六進(jìn)制00000001000111200102230011334010044501015560110667011177810001089100111910101012A11101113B12110014C13110115D14111016E15111117F數(shù)值(怎樣用0和1表示數(shù)的值)2進(jìn)制編碼表示整數(shù)無符號(hào)數(shù)帶符號(hào)數(shù)原碼反碼補(bǔ)碼小數(shù)定點(diǎn)數(shù)浮點(diǎn)數(shù)BCD編碼表示8421碼5421碼余3碼信息在計(jì)算機(jī)系統(tǒng)中的存儲(chǔ)內(nèi)存以字節(jié)為單元組成每個(gè)字節(jié)有一個(gè)地址一個(gè)字節(jié)一般由8個(gè)二進(jìn)制位組成每個(gè)二進(jìn)制位的值是0或1012345678910……...1270123456701111111計(jì)算機(jī)內(nèi)存、字節(jié)、位和地址帶符號(hào)數(shù)符號(hào)的表示表示符號(hào)的位表示數(shù)值的位0
0001011例如:N1=+1011,N2=-1011在計(jì)算機(jī)中用8位二進(jìn)制數(shù)可分別表示為:D7D6D5D4D3D2D1D0
D7D6D5D4D3D2D1D01
0001011符號(hào)數(shù)值部分原碼、補(bǔ)碼與反碼1.原碼
正數(shù)的符號(hào)位用0表示,負(fù)數(shù)的符號(hào)位用1表示,數(shù)值部分用真值的絕對(duì)值來表示的二進(jìn)制機(jī)器數(shù)稱之為原碼,用[X]原表示。正數(shù)的原碼(設(shè)機(jī)器字長為8位)[+115]原=01110011B;負(fù)數(shù)的原碼[-115]原=11110011B零的原碼[+0]原=000…00[-0]原=100…00反碼反碼一個(gè)正數(shù)的反碼,等于該數(shù)的原碼;一個(gè)負(fù)數(shù)的反碼,等于該負(fù)數(shù)絕對(duì)值的原碼按位求反(即0變1,1變0)零的反碼:[+0]反=000…00
[-0]反=111…11[+5]反=00000101[-5]反=11111010補(bǔ)碼補(bǔ)數(shù)的概念鐘有多少個(gè)刻度能表示的數(shù)是多少時(shí)針從0到9有多少種撥法9和-3有什么關(guān)系036954217810111.在前面的鐘里,有多少個(gè)刻度?2.能表示的數(shù)有哪些?3.在2進(jìn)制中,8個(gè)二進(jìn)制位能表示多少個(gè)狀態(tài)(刻度)?4.用8位2進(jìn)制能表示哪些數(shù)?問題0128255-128-10127127129-127怎樣求補(bǔ)碼正數(shù)的補(bǔ)碼與其原碼相同,即[X]補(bǔ)=[X]原;零的補(bǔ)碼為零,[+0]補(bǔ)=[-0]補(bǔ)=000…00;負(fù)數(shù)才有求補(bǔ)碼的問題。計(jì)算出該數(shù)絕對(duì)值的原碼,對(duì)原碼取反,再對(duì)整個(gè)數(shù)加1(絕對(duì)值取反加1)請計(jì)算[-5]補(bǔ)[-5]補(bǔ)=11111011[|-5|]原=00000101[[|-5|]原]反=11111010[[|-5|]原]反+1=11111011例子例1:假設(shè)X1=+83,X2=-76,當(dāng)用8位二進(jìn)制數(shù)表示一個(gè)數(shù)時(shí),求X1、X2的原碼、反碼及補(bǔ)碼。
解:[X1]原=[X1]反=[X1]補(bǔ)=
01010011B
[X2]原=11001100B[X2]反=10110011B[X2]補(bǔ)=[X]反+1=10110100B小數(shù)的表示定點(diǎn)表示法在計(jì)算機(jī)中,如將小數(shù)點(diǎn)的位置固定不變,稱為定點(diǎn)表示法。這個(gè)固定的位置是事先約定好的,不必用符號(hào)表示。小數(shù)點(diǎn)固定在最高數(shù)值位之前,機(jī)器中能表示的所有數(shù)即為純小數(shù)。浮點(diǎn)表示法在計(jì)算機(jī)中,小數(shù)點(diǎn)位置并不是固定不變的,而是可以改變的,這種表示法稱為浮點(diǎn)表示法。用浮點(diǎn)法表示的實(shí)數(shù),叫做浮點(diǎn)數(shù)??茖W(xué)計(jì)數(shù)法任意一個(gè)二進(jìn)制數(shù)N可以表示成如下形式:N=±M·2±E數(shù)符,表示數(shù)的正、負(fù)尾數(shù)階碼階符IEEE754標(biāo)準(zhǔn)
符號(hào)位(S)階碼(E)尾數(shù)(M)類型
存儲(chǔ)位數(shù)
總位數(shù)
偏移值
(offset)數(shù)符(S)
階碼(E)尾數(shù)(M)短實(shí)數(shù)(float)
1
8
23
32127長實(shí)數(shù)(double)
1
11
52
64
1023說明:
1)約定小數(shù)點(diǎn)左邊隱含有一位1,實(shí)際上使尾數(shù)的有效位數(shù)為24位,即尾數(shù)為1.M2)偏移值=2^(尾數(shù)位數(shù)-1)–1。必須從指數(shù)中減去偏移值,才能確定有符號(hào)指數(shù)的實(shí)際值。
123.456(42F6E979)N(10)=123.456,換算成二進(jìn)制表示:N(2)=1111011.01110100101111001=1.11101101110100101111001(...)*2^6
那么E–127=6;E=127+6=133(10)=10000101(2)M=11101101110100101111001(省略了最高數(shù)字位1,共23bit)
組合起來就是:SEM010000101111011011101001011110014bit一間隔:0100001011110110111010010111100142F6E979文字(各種形狀)字符編碼:中文、藏文、英文、俄文、阿拉伯文ascII中文7段碼共陰共陽漢字編碼
用計(jì)算機(jī)處理漢字,每個(gè)漢字必須用代碼表示。鍵盤輸入漢字是輸入漢字的外部碼。外部碼必須轉(zhuǎn)換為內(nèi)部碼才能在計(jì)算機(jī)內(nèi)進(jìn)行存儲(chǔ)和處理。為了將漢字以點(diǎn)陣的形式輸出,還要將內(nèi)部碼轉(zhuǎn)換為字形碼。不同的漢字處理系統(tǒng)之間交換信息采用交換碼。
(1)外部碼漢字主要是從鍵盤輸入,每個(gè)漢字對(duì)應(yīng)一個(gè)外部碼,外部碼是計(jì)算機(jī)輸入漢字的代碼,是代表某一個(gè)漢字的一組鍵盤符號(hào)。外部碼也叫輸入碼。漢字的輸入方法不同,同一個(gè)漢字的外部碼可能不一樣。
(2)內(nèi)部碼 漢字內(nèi)部碼也稱漢字內(nèi)碼或漢字機(jī)內(nèi)碼。在不同的漢字輸入方案中,同一漢字的外部碼不同,但同一漢字的內(nèi)部碼是惟一的。
(3)交換碼 計(jì)算機(jī)之間或計(jì)算機(jī)與終端之間交換信息時(shí),要求其間傳送的漢字代碼信息要完全一致。為此,國家根據(jù)漢字的常用程度定出了一級(jí)和二級(jí)漢字字符集,并規(guī)定了編碼,這就是國標(biāo)GB2312-80《信息交換用漢字編碼字符集基本集》,GB231280中漢字的編碼即國標(biāo)碼。該標(biāo)準(zhǔn)編碼字符集共收錄漢字和圖形符號(hào)7445個(gè)。
(4)輸出碼 漢字輸出碼又稱漢字字形碼或漢字發(fā)生器的編碼。眾所周知,漢字無論字形有多少變化,也無論筆劃有多有少,都可以寫在一個(gè)方塊中;一個(gè)方塊可以看作m行n列的矩陣,稱為點(diǎn)陣。一個(gè)m行n列的點(diǎn)陣共有m×n個(gè)點(diǎn)。例如16×16點(diǎn)陣的漢字,共有256個(gè)點(diǎn)。每個(gè)點(diǎn)可以是黑點(diǎn)或者非黑點(diǎn),凡是筆劃經(jīng)過的點(diǎn)用黑點(diǎn),于是利用點(diǎn)陣描繪出了漢字字形,漢字的點(diǎn)陣字形在計(jì)算機(jī)中稱為字模。如圖1-8表示漢字“中”的16×16點(diǎn)陣字模。圖形信息在數(shù)字系統(tǒng)中的表示圖畫在計(jì)算機(jī)中有兩種表示方法:圖像(image)表示法和圖形表示法(graphics)。圖像表示法是把原始畫面離散成m×n個(gè)像點(diǎn)(或稱“像素”)所組成的一個(gè)矩陣,黑白畫面的每個(gè)像素用1個(gè)二進(jìn)制數(shù)表示該點(diǎn)的灰度,彩色畫面的每個(gè)像素用3個(gè)二進(jìn)制數(shù)來表示該點(diǎn)的3個(gè)分量(如R、G、B)的灰度。漢字字形的點(diǎn)陣描述就是一種黑白圖像表示。圖形表示法是根據(jù)畫面中所包含的內(nèi)容,分別用幾何要素(點(diǎn)、線、面、體)和物體表面的材料與性質(zhì)以及環(huán)境的光照條件、觀察位置等來進(jìn)行描述,如工程圖紙、地圖等。漢字字形的輪廓描述法就屬于圖形表示。其優(yōu)點(diǎn)是易于加工處理,數(shù)據(jù)量少。C語言中的數(shù)和量C的數(shù)據(jù)是以某種類型的形式出現(xiàn)的程序中用到的所有數(shù)據(jù)都必須指定類型C語言的數(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長整型long整型int標(biāo)識(shí)符(Identifier)標(biāo)識(shí)符變量名、符號(hào)常量名、函數(shù)名、類型名…標(biāo)識(shí)符命名規(guī)范由字母、數(shù)字、下劃線(Underscore,'_')組成第一個(gè)字符必須為字母或下劃線C語言標(biāo)識(shí)符是大小寫敏感的不能與C語言關(guān)鍵字(Keywords)重復(fù)標(biāo)識(shí)符的名稱一般應(yīng)具有一定的含義一般不要使用以下劃線開頭的標(biāo)識(shí)符標(biāo)識(shí)符示例正確的標(biāo)識(shí)符student、num1、_SUM、_1_2_3MyName、myname、my_name錯(cuò)誤的標(biāo)識(shí)符room3-1包含了其他字符(減號(hào))2men
以數(shù)字開頭long
與關(guān)鍵字重復(fù)Mr.Zhu
包含了其他字符(小數(shù)點(diǎn))例:判斷下列標(biāo)識(shí)符號(hào)合法性sumSumM.D.JohndayDate3daysstudent_name#33lotus_1_2_3chara>b_above$123M.D.John3days#33char$123a>b常量(Constants)常量程序運(yùn)行過程中,其值不能被改變的量例如:12、-6.7、'a'…直接常量符號(hào)常量(SymbolicConstants)用一個(gè)標(biāo)識(shí)符代表的常量相當(dāng)于把標(biāo)識(shí)符用一個(gè)常量簡單替換下來含義清楚,一改全改習(xí)慣上符號(hào)常量名用大寫字母常量示例#definePRICE30#defineNUM12voidmain(){......total=NUM*PRICE;total2=84*PRICE2;printf("total=%d",total);......}不會(huì)被替換=>total=12*30;常量符號(hào)常量概念:其值可以改變的量變量名與變量值變量定義的一般格式:數(shù)據(jù)類型變量1[,變量2,…,變量n];變量初始化
定義時(shí)賦初值例:inta,b,c;floatdata;決定分配字節(jié)數(shù)和數(shù)的表示范圍合法標(biāo)識(shí)符例:inta=2,b,c=4;floatdata=3.67;charch=‘A’;intx=1,y=1,z=1;intx=y=z=1;變量的使用:先定義,后使用例1intstudent;stadent=19;例2floata,b,c;c=a%b;變量定義位置:一般放在函數(shù)開頭main(){inta,b=2;floatdata;a=1;data=(a+b)*1.2;printf(“data=%f\n”,data);}變量定義可執(zhí)行語句main(){inta,b=2;a=1;floatdata;data=(a+b)*1.2;printf(“data=%f\n”,data);}變量(語法)編譯程序根據(jù)變量定義為其分配指定字節(jié)的內(nèi)存單元…...硬件地址main(){inta=1,b=-5,c;
c=b;printf(“%d”,a);}0000H0001H2字節(jié)abc變量名(符號(hào)地址)…...內(nèi)存隨機(jī)數(shù)000000010000000011111011111111110002H0003H10010001001101011111101111111111變量(實(shí)質(zhì))整型(Integer)整型變量整型變量的類型整型變量的定義整形變量的輸入、輸出整型常量表示方法類型整型變量的分類按占用存儲(chǔ)空間的大小劃分(表示的數(shù)的范圍)基本整型 int短整型 short[int]長整型 long[int]按有無符號(hào)劃分有符號(hào) [signed]無符號(hào) unsigned上述兩種分類方式組合,可得到6種類型整數(shù)的長度整數(shù)的類型與長度short:占2字節(jié)(16bit)long:占4字節(jié)(32bit)int:占2或4字節(jié)(16或32bit)2Bytes=short≤int≤long=4Bytes若需要精確的長度,可選用short或long舉例BC3.1: int長度為2Bytesgcc: int長度為4Bytes整型數(shù)據(jù)的取值范圍類型長度(bit)取值范圍[signed]short[int]16-215~215-1unsignedshort[int]160~216-1[signed]int16or32-215(31)~215(31)-1unsigned[int]16or320~216(32)-1[signed]long[int]32-231~231-1unsignedlong[int]320~232-1整型變量的定義(Definition)定義形式[signed]short[int]a,i;unsignedshort[int]b=1,j;[signed]int c;unsigned[int] d;[signed]long[int] e;unsignedlong[int] f;整型變量的定義與使用舉例voidmain(){inta; unsignedb; longc; a=-23; b=45; c=a+b; }程序舉例設(shè)計(jì)一個(gè)程序,計(jì)算1到5的平方并將其顯示到屏幕上計(jì)算1到5的平方并將其顯示到屏幕上main(){printf(“1491625”);}程序舉例設(shè)計(jì)一個(gè)程序,計(jì)算1到5的平方并將其顯示到屏幕上問題:1、在這個(gè)題中怎樣使用變量
2、使用多少個(gè)變量
3、怎樣定義變量
4、怎樣將一個(gè)整形變量的內(nèi)容顯示在屏幕上5、流程圖是什么怎樣將整形變量的內(nèi)容顯示到屏幕上voidmain(){inta; intb; intc; a=-23; b=45; c=a+b; printf(”%d”,a);printf(”bis%d,a+b=%d”,b,c);}計(jì)算1到5的平方并將其顯示到屏幕上main(){intx1=1,x2=2,x3=3,x4=4,x5=5;x1=x1*x1;x2=x2*x2;x3=x3*x3;x4=x4*x4;x5=x5*x5;
printf(“%d,%d,%d,%d,%d”,x1,x2,x3,x4,x5);}怎樣使用一個(gè)變量顯示1-5的平方main(){intx=0;x=x+1;printf(“%d”,x*x);x=x+1;printf(“%d”,x*x);
x=x+1;printf(“%d”,x*x);
}使用這種方法能否將1…100的平方顯示到屏幕上?能找到一個(gè)更方便一點(diǎn)的方法嗎?計(jì)算1到5的平方并將其顯示到屏幕上main(){intx=1;
clrscr();while(x<=5){printf(“%d”,x*x);x=x+1;}getch();}計(jì)算1到100、200、500的平方并將其顯示到屏幕上main(){intx=1;
clrscr();while(x<=5){printf(“%d”,x*x);x=x+1;}getch();}整型數(shù)據(jù)在內(nèi)存中的存放方式長度shortintlong舉例,inti=50;/*int類型占2字節(jié)*/符號(hào)signedunsigned0000000000110010高地址字節(jié)低地址字節(jié)負(fù)整數(shù)舉例舉例inti=-50;/*int類型占2字節(jié)*/00000000001100101111111111001101111111111100111050的原碼-50的補(bǔ)碼取反加一整型數(shù)據(jù)的溢出(Overflow)溢出數(shù)據(jù)超出了變量能夠存儲(chǔ)的范圍,造成數(shù)據(jù)丟失或數(shù)值改變等舉例voidmain(){inta=32767;a=a+1;}01111111111111111000000000000000+132767的補(bǔ)碼-32768的補(bǔ)碼有符號(hào)數(shù)與無符號(hào)數(shù)有符號(hào)數(shù)二進(jìn)制補(bǔ)碼表示,首位為符號(hào)位指定signed或缺省情況,即為有符號(hào)數(shù)無符號(hào)數(shù)沒有符號(hào)位,只能表示非負(fù)數(shù)無符號(hào)數(shù)類型必須指定為unsignedvoidmain(){inti;unsignedj;i=-50;j=-50;i=i/2;j=j/2;}若把負(fù)數(shù)賦值給無符號(hào)數(shù),則把該負(fù)數(shù)的補(bǔ)碼當(dāng)作無符號(hào)數(shù)進(jìn)行處理有符號(hào)數(shù)與無符號(hào)數(shù)舉例voidmain(){inti;unsignedj;i=-50;j=-50;i=i/2;/*-25*/j=j/2;/*32743*/}1111111111001110-50的補(bǔ)碼i,j/211111111111001110111111111100111i/2-25的補(bǔ)碼j/232743的原碼整形變量的內(nèi)容顯示voidmain(){inta; unsignedintb; longc; a=-23; b=45; c=a+b; printf(”%d\n”,a);printf(”%u\n”,b);printf(“%ld\n”,c)}求s=12+22+32+42+52數(shù)列的通項(xiàng)是什么?怎樣求數(shù)列的和?問題設(shè)計(jì)一程序使用變量的方式計(jì)算下面和式:
S=12+23+32+43+52+63上一問題的兩種方法定義兩個(gè)變量,x和y分別從1,2開始每次+2定義三個(gè)變量x,y,t,t從1到3x=2*t-1;y=2*t;求12+22+32+…+n2,其中n需要用戶從屏幕輸如intx;unsignedy;longz;scanf(“%d”,&x);scanf(“%u”,&y);scanf(“%ld”,&z);演示(3-1)整型常量的表示方法十進(jìn)制(Decimal)例如,123、-456、0八進(jìn)制(Octal)以0開頭,不得含有8或9例如,0123、-0456錯(cuò)例,0138、-0912十六進(jìn)制(Hexadecimal)以0x或0X開頭,用a~f或A~F表示10~15例如,0x123、-0X45、0x3AB、-0xabc整型常量的類型常量的類型后綴(Suffix)l、L 表示常量是一個(gè)長整型u、U 表示常量是一個(gè)無符號(hào)整型數(shù)兩種后綴可以一起使用舉例123l 長整型常數(shù)123456U 無符號(hào)整型常數(shù)456789ul 無符號(hào)長整型常數(shù)789101Lu 無符號(hào)長整型常數(shù)101浮點(diǎn)型(FloatingPoint)浮點(diǎn)型常量的表示方法浮點(diǎn)型變量浮點(diǎn)型變量的類型浮點(diǎn)型變量的輸入、輸出浮點(diǎn)型數(shù)據(jù)在內(nèi)存中的存放形式浮點(diǎn)型數(shù)據(jù)的舍入誤差浮點(diǎn)型常數(shù)的類型浮點(diǎn)型常量的表示方法十進(jìn)制小數(shù)形式由符號(hào)、數(shù)字和小數(shù)點(diǎn)(必須)組成整數(shù)和小數(shù)部分都可省略,但不能同時(shí)省略舉例,12.3、-.123、123.、0.、.0指數(shù)形式由整數(shù)(或小數(shù))、e(或E)、整數(shù)順序組成e或E之前必須有數(shù)字,之后必須是整數(shù)舉例,123.4e-5表示123.4×10-5錯(cuò)例,e1、12e、1.2e3.4、.e5、e規(guī)范化指數(shù)形式規(guī)范化指數(shù)形式類似于“科學(xué)計(jì)數(shù)法”e或E之前的小數(shù)中,小數(shù)點(diǎn)前面有且僅有一個(gè)非零數(shù)字舉例,123.456規(guī)范化形式,1.23456e2、1.23456E+002非規(guī)范化形式,123.456、12.3456e1、12345.6e-2、0.123456e3、12345600e-5…浮點(diǎn)型變量的類型分類單精度float雙精度double長雙精度longdouble長度和取值范圍類型長度(bit)有效數(shù)字絕對(duì)值范圍float326~710-37~1038double6415~1610-307~10308longdouble12818~1910-4931~104932浮點(diǎn)數(shù)的定義和輸出main(){floatx=1.3,y=12e-3,t;doublea=.4,u=13;
u=x*12;printf(“%f”,x);printf(“%f,%f”,a);}編程例題設(shè)長方形的高為1.5,寬為2.3,編程求該長方形的周長和面積。在屏幕上顯示1到10的平方根問題平方根是什么數(shù)據(jù)類型?(整型/實(shí)型)?怎樣定義變量?怎樣在C語言中求一個(gè)數(shù)的平方根?怎樣將一個(gè)實(shí)型變量顯示在屏幕上?sin函數(shù)計(jì)算器要求:設(shè)計(jì)一個(gè)程序,用戶從鍵盤上輸入一個(gè)實(shí)數(shù)(0~2×3.14),將該實(shí)數(shù)的sin函數(shù)值顯示在屏幕上問題:
1.怎樣輸入一個(gè)實(shí)數(shù)到一個(gè)變量中?
2.怎樣計(jì)算sin函數(shù)浮點(diǎn)型數(shù)據(jù)在內(nèi)存中的存放方式二進(jìn)制規(guī)范化指數(shù)形式小數(shù)部分長度與能表示的精度有關(guān)指數(shù)部分長度與能表示的數(shù)值范圍有關(guān)1101100110110010指數(shù)部分e小數(shù)部分f符號(hào)s123.456N(10)=123.456,換算成二進(jìn)制表示:N(2)=1111011.01110100101111001=1.11101101110100101111001(...)*2^6
那么E–127=6;E=127+6=133(10)=10000101(2)M=11101101110100101111001(省略了最高數(shù)字位1,共23bit)
組合起來就是:SEM010000101111011011101001011110014bit一間隔:0100001011110110111010010111100142F6E979浮點(diǎn)型數(shù)據(jù)的舍入誤差由于浮點(diǎn)型變量能夠表示的有效數(shù)字有限,將有效位以外的數(shù)字舍去造成誤差舉例floata=123456.789e5,b;/*a=12345678900*/b=a+20;/*b=12345678920?*/printf("a=%f\nb=%f\n",a,b);運(yùn)行結(jié)果>a=12345678848.000000b=12345678848.000000浮點(diǎn)型常量的類型類型后綴f、F 表示常量是一個(gè)單精度型浮點(diǎn)數(shù)l、L 表示常量是一個(gè)長雙精度型浮點(diǎn)數(shù)無任何后綴的浮點(diǎn)型常量視作雙精度型對(duì)浮點(diǎn)型變量賦值一個(gè)浮點(diǎn)型常量可以賦值給任何類型的浮點(diǎn)型變量根據(jù)變量類型截取常量的相應(yīng)有效數(shù)字注意防止出現(xiàn)溢出字符型(Character)字符型常量字符型變量字符型數(shù)據(jù)在內(nèi)存中的存放形式字符型數(shù)據(jù)的使用方法字符串常量字符型常量單引號(hào)括起來的一個(gè)字符普通字符舉例,'a'、'A'、'1'、''、'?'…錯(cuò)例,'abc'、''、'我'…轉(zhuǎn)義字符以‘\’開頭+一個(gè)字母的特殊字符'\ddd'1到3位8進(jìn)制數(shù)ASCII碼代表的字符'\xhh'1到2位16進(jìn)制數(shù)ASCII碼代表的字符舉例,'\n'、'\t'、'\\'、'\''、'\"'、'\123'、'\x3A'…<轉(zhuǎn)義字符含義\n\v\r\a\‘\ddd\t\b\f\\\“\xhh轉(zhuǎn)義字符含義換行垂直制表回車響鈴單引號(hào)3位8進(jìn)制數(shù)代表的字符水平制表退格換頁反斜線雙引號(hào)2位16進(jìn)制數(shù)代表的字符例轉(zhuǎn)義字符舉例(ch2_001.c,ch2_004.c)main(){printf("\101\x42C\n");printf("Isay:\"Howareyou?\"\n");printf("\\CProgram\\\n");printf("Turbo\'C\'");}運(yùn)行結(jié)果:(屏幕顯示)ABCIsay:”Howareyou?”\CProgram\Turbo‘C’例main(){printf(“Y\b=\n”);}運(yùn)行結(jié)果:屏幕顯示:=打印機(jī)輸出:¥轉(zhuǎn)義字符舉例84aaa字符型變量字符型變量只能存放一個(gè)字符定義與使用voidmain(){charc1,c2;/*定義字符型變量c1和c2*/
c1='a';/*c1的值為'a'*/c2='2';/*c2的值為'2'*/}字符型數(shù)據(jù)在內(nèi)存中的存放形式一個(gè)字符型數(shù)據(jù)占一個(gè)字節(jié)的空間字符型數(shù)據(jù)以其ASCII碼形式存放字符型數(shù)據(jù)的存放形式與只占一個(gè)字節(jié)長度的整型數(shù)據(jù)完全相同01100001c1='a'(ASCII=97)00110010c1='2'(ASCII=50)字符型數(shù)據(jù)使用舉例voidmain(){charc;inti,j;c=97; i=c+2;j='2'; printf("%c,%c\n",c,i);}字符型數(shù)據(jù)的使用方法可以把字符型數(shù)據(jù)視作一種長度為1字節(jié)的整型數(shù)據(jù)處理當(dāng)使用字符型數(shù)據(jù)時(shí),與使用這個(gè)字符的ASCII碼(一個(gè)8位整數(shù))是完全一樣的字符型數(shù)據(jù)的用法與整型數(shù)據(jù)完全一樣,包括運(yùn)算、賦值、輸入、輸出等字符型數(shù)據(jù)使用過程中,同樣需要注意溢出、符號(hào)等問題是字符還是整數(shù),只有在輸出時(shí)才有意義字符型數(shù)據(jù)使用舉例voidmain(){charc;inti,j;c=97; i=c+2;j='2'; printf("%c,%d\n",c,c);}輸出ASCII碼字符型變量與整型變量一樣,也分為有符號(hào)數(shù)與無符號(hào)數(shù)無符號(hào)字符unsignedcharc;舉例,表示一個(gè)班級(jí)的人數(shù)(<256)賦值和使用中需要注意的問題,與整型變量相同voidmain(){charc=0;while(c<255){printf("%c,%d\n",c,c);c=c+1;}}字符串(String)常量表示形式一對(duì)雙引號(hào)括起來的字符序列引號(hào)內(nèi)可以包括0個(gè)、1個(gè)或多個(gè)字符字符序列中的特殊字符用轉(zhuǎn)義字符表示舉例,"abc"、"a"、""、""、"我"舉例,"12.4"、"$#*!"、"C:\\HOME"字符常量和字符串常量是不同類型的數(shù)據(jù)例如,'a'與"a"是不同的不能把一個(gè)字符串賦值給一個(gè)字符型變量字符串在內(nèi)存中的存放方式在內(nèi)存中每個(gè)字符按順序存放字符串結(jié)尾有一個(gè)空字符(ASCII=0,'\0')作為字符串結(jié)束標(biāo)志字符串結(jié)束標(biāo)志'\0'是不能顯示的,在字符串常量中,也不用顯式寫出來舉例"TEST""""a"'T''E''S''T'\08469838400\0'a'\0009700各類數(shù)值型數(shù)據(jù)間的混合運(yùn)算整型、字符型、浮點(diǎn)型數(shù)據(jù)可混合運(yùn)算混合運(yùn)算時(shí),不同類型的數(shù)據(jù)按照一定的規(guī)則先轉(zhuǎn)換為同一類型,然后再運(yùn)算doublefloatlongunsignedintchar,short低高說明:必定轉(zhuǎn)換運(yùn)算對(duì)象類型不同時(shí)轉(zhuǎn)換
charch;inti;floatf;doubled;intintdoubledoubledoubledoubledoubledouble10+‘a(chǎn)’+i*f-d/l例2inti;floatf;doubled;longl;例1例main(){floatx;inti;x=1/2*3.6;printf(“x=%f”,x);}結(jié)果:ch/i+f*d-(f+i)intintdoubledoubledoubledoubledoubledoubledouble基本數(shù)據(jù)類型類型符號(hào)關(guān)鍵字?jǐn)?shù)的表示范圍所占位數(shù)整型字符型實(shí)型有無[signed]int16-32768~32767[signed]short[int]16-32768~32767[signed]long[int]32-2147483648~214748364716unsigned
int0~65535320~4294967295unsigned
long[int]unsigned
short[int]160~65535有float323.4e-38~3.4e38有double641.7e-308~1.7e308有char8-128~127無unsignedchar80~255C運(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)算符:([])其它:(()-)運(yùn)算符和表達(dá)式C表達(dá)式算術(shù)表達(dá)式關(guān)系表達(dá)式邏輯表達(dá)式
賦值表達(dá)式條件表達(dá)式逗號(hào)表達(dá)式
用運(yùn)算符號(hào)將運(yùn)算對(duì)象連接起來形成的式子稱為表達(dá)式表達(dá)式什么是表達(dá)式:表達(dá)式是簡單表達(dá)式與運(yùn)算符的組合,我們可以對(duì)其求值以獲得單個(gè)數(shù)據(jù)值。簡單的表達(dá)式可以是一個(gè)常量、變量、或函數(shù)??梢杂眠\(yùn)算符將兩個(gè)或更多的簡單表達(dá)式聯(lián)接起來組成復(fù)雜的表達(dá)式。運(yùn)算符功能要求運(yùn)算量個(gè)數(shù)和類型運(yùn)算符優(yōu)先級(jí)別結(jié)合方向?qū)W習(xí)運(yùn)算符應(yīng)注意x=y^0xf0y=y%10x=10+15*2x=10+15-2基本算術(shù)運(yùn)算符:+-*/%優(yōu)先級(jí):-*/%+-(2)(3)(4) 結(jié)合方向:從左向右說明:“-”可為單目運(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算術(shù)運(yùn)算符和表達(dá)式2-2.51-110()作用:使變量值加1或減1種類:前置++i,--i(先執(zhí)行i+1或i-1,再使用i值)后置i++,i--(先使用i值,再執(zhí)行i+1或i-1)由++--構(gòu)成的表達(dá)式的值,變量的值例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)++--不能用于常量和表達(dá)式,如5++,(a+b)++2)優(yōu)先級(jí):-++--*/%+-(2)(3)(4)3)結(jié)合方向:自右向左例-i++-(i++)i=3;printf(“%d”,-i++);//-3例j+++k;例-i++i=3;printf(“%d”,-i++);
續(xù):自增、自減運(yùn)算符++--
(j++)+k;一般形式:(類型名)(表達(dá)式)例:(int)(x+y)(int)x+y(double)(3/2)(int)3.6
說明:強(qiáng)制轉(zhuǎn)換得到所需類型的中間變量,原變量類型不變
例main(){floatx;inti;x=3.6;i=(int)x;printf(“x=%f,i=%d”,x,i);}結(jié)果:x=3.600000,i=3較高類型向較低類型轉(zhuǎn)換時(shí)可能發(fā)生精度損失問題顯式轉(zhuǎn)換(強(qiáng)制轉(zhuǎn)換)<簡單賦值運(yùn)算符符號(hào):=格式:變量標(biāo)識(shí)符=表達(dá)式作用:將一個(gè)數(shù)據(jù)(常量或表達(dá)式)賦給一個(gè)變量表達(dá)式的值:變量的值復(fù)合賦值運(yùn)算符種類:+=-=*=/=%=《=》=&=^=|=含義:a+=3a=a+3x*=y+8x=x*(y+8)x%=3x=x%3例a=3;d=func();c=d+2;賦值運(yùn)算符和表達(dá)式優(yōu)先級(jí):14結(jié)合方向:自右向左左側(cè)必須是變量,不能是常量或表達(dá)式賦值表達(dá)式的值與變量值相等,且可嵌套賦值轉(zhuǎn)換規(guī)則:使賦值號(hào)右邊表達(dá)式值自動(dòng)轉(zhuǎn)換成其左邊變量的類型例3=x-2*y;a+b=3;例
floatf;inti;i=10;f=i;則
f=10.0例inti;i=2.56;//結(jié)果i=2;例:a=b=c=5a=(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簡單賦值說明(1):結(jié)合方向:自右向左優(yōu)先級(jí):12
左側(cè)必須是變量,不能是常量或表達(dá)式賦值表達(dá)式的值與變量值相等,且可嵌套賦值轉(zhuǎn)換規(guī)則:使賦值號(hào)右邊表達(dá)式值自動(dòng)轉(zhuǎn)換成其左邊變量的類型例:a=5;a+=a-=a*a例:inta=2;a%=4-1;a+=a*=a-=a*=3;//a=-40等價(jià)于a=a+(a=a-(a*a))//a=0等價(jià)于a=a+(a=a*(a=a-(a=a*3)))復(fù)合賦值說明:形式:表達(dá)式1,表達(dá)式2,……表達(dá)式n結(jié)合性:從左向右優(yōu)先級(jí):15逗號(hào)表達(dá)式的值:等于表達(dá)式n的值用途:常用于循環(huán)for語句中例a=3*5,a*4a=3*5,a*4,a+5例x=(a=3,6*3)x=a
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《綿陽求職招聘技巧》課件
- 2020-2021學(xué)年遼寧省沈陽市郊聯(lián)體高一下學(xué)期期末考試歷史試題
- 小學(xué)一年級(jí)10以內(nèi)數(shù)字的分與合
- 小學(xué)數(shù)學(xué)新人教版一年級(jí)下冊20以內(nèi)口算練習(xí)題大全
- 小學(xué)三年級(jí)數(shù)學(xué)三位數(shù)加減法口算題
- 《汽車行業(yè)概述》課件
- 《運(yùn)輸與包裝》課件
- 吉他行業(yè)客服工作總結(jié)用心服務(wù)打造音樂快樂
- 《光纖通信基礎(chǔ)知識(shí)》課件
- 酒店招聘與人才引進(jìn)策略
- 應(yīng)急救援員五級(jí)理論考試題庫含答案
- 2024年導(dǎo)游服務(wù)技能大賽《導(dǎo)游綜合知識(shí)測試》題庫及答案
- 高中化學(xué)實(shí)驗(yàn)開展情況的調(diào)查問卷教師版
- 期末全真模擬測試卷2(試題)2024-2025學(xué)年二年級(jí)上冊數(shù)學(xué)蘇教版
- 《聲聲慢(尋尋覓覓)》課件 統(tǒng)編版高中語文必修上冊
- 初中物理-:八年級(jí)上學(xué)期競賽題
- 生物治療與再生醫(yī)療應(yīng)用
- 2024年1月廣東省高中學(xué)業(yè)水平考試物理試題(附答案)
- 帕金森患者生活質(zhì)量問卷(PDQ-39)
- 汽車電器DFMEA-車載終端
- 安全教育年度計(jì)劃養(yǎng)老院
評(píng)論
0/150
提交評(píng)論