程序設(shè)計02章數(shù)據(jù)類型與運算_第1頁
程序設(shè)計02章數(shù)據(jù)類型與運算_第2頁
程序設(shè)計02章數(shù)據(jù)類型與運算_第3頁
程序設(shè)計02章數(shù)據(jù)類型與運算_第4頁
程序設(shè)計02章數(shù)據(jù)類型與運算_第5頁
已閱讀5頁,還剩123頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第二章第二章進位計數(shù)制進位計數(shù)制l在計算機科學(xué)中除在計算機科學(xué)中除十進制十進制外,常用的外,常用的還有還有二進制二進制、八進制八進制和和十六進制十六進制。l如果用如果用r個基本符號(例如個基本符號(例如0,1,2,r 1)表示數(shù)值,則稱其為)表示數(shù)值,則稱其為r進進制數(shù),制數(shù),r稱為該數(shù)制的稱為該數(shù)制的基數(shù)基數(shù)。不同計數(shù)制具有的共同特點 每一種計數(shù)制都有固定的符號集每一種計數(shù)制都有固定的符號集 如十進如十進制數(shù)制,其符號有十個:制數(shù)制,其符號有十個:0,1,2,9。二進制數(shù)制,其符號有兩個:二進制數(shù)制,其符號有兩個:0和和1。 不同進制都使用不同進制都使用位置表示法位置表示法,即處于不,即處于

2、不同位置的數(shù)符所代表的值不同,該值與所在同位置的數(shù)符所代表的值不同,該值與所在位置的權(quán)值有關(guān)。位置的權(quán)值有關(guān)。 值值=數(shù)符數(shù)符*權(quán)值權(quán)值 x4x3x2x1x0.x-1x-2x-3x-4權(quán)值權(quán)值是基數(shù)的是基數(shù)的i次冪次冪十進制各位置(十進制各位置(012.)的權(quán)值)的權(quán)值100=1 101=10 102=100 103=1000 如 123.456 =1*102+2*101+3+4*10-1+5*10-2+6*10-3二進制各位置(二進制各位置(012.)的權(quán)值)的權(quán)值20=1 21=2 22=4 23=8 24=1625=32 26=64 27=128 28=25629=512 210=102

3、4 211=2048212=4096 213=8192 214=16384215=32768 216=65536不同進制之間的轉(zhuǎn)換不同進制之間的轉(zhuǎn)換lr進制轉(zhuǎn)換為十進制進制轉(zhuǎn)換為十進制 將將r進制數(shù)的進制數(shù)的每位(非零)數(shù)值每位(非零)數(shù)值與相應(yīng)與相應(yīng)位置的位置的權(quán)值權(quán)值相相乘乘,然后相,然后相加加即可。即可。 x4x3x2x1x0.x-1x-2x-3x-4如如 ( 100110.101)2 =(1*25+1*22+1*21+1*2-1+1*2-3)10 =(38.625)10思考思考(1111)2=( ? ) 10=2?-1(11111)2=( ? ) 10=2?-1(111111)2=(

4、? ) 10=2?-1(1111111)2=( ? ) 10=2?-1(11111111)2=( ? ) 10=2?-1l十進制數(shù)轉(zhuǎn)換為十進制數(shù)轉(zhuǎn)換為r進制:進制:除除r取余法取余法 將一個十進制整數(shù)反復(fù)除以基數(shù)將一個十進制整數(shù)反復(fù)除以基數(shù)r,直到,直到商為商為0為止,并記下每次所得余數(shù)為止,并記下每次所得余數(shù) 將最后一個余數(shù)到第一余數(shù)按從左到右的將最后一個余數(shù)到第一余數(shù)按從左到右的次序連起來,它們所組成的數(shù)字串即為相應(yīng)次序連起來,它們所組成的數(shù)字串即為相應(yīng)的的r進制整數(shù)。進制整數(shù)。l非十進制數(shù)間的轉(zhuǎn)換非十進制數(shù)間的轉(zhuǎn)換l兩個非十進制數(shù)之間的轉(zhuǎn)換方法一般結(jié)合兩個非十進制數(shù)之間的轉(zhuǎn)換方法一般結(jié)合

5、上述兩種方法進行轉(zhuǎn)換,即先把被轉(zhuǎn)換數(shù)上述兩種方法進行轉(zhuǎn)換,即先把被轉(zhuǎn)換數(shù)據(jù)轉(zhuǎn)換為相應(yīng)的十進制數(shù),然后再將十進據(jù)轉(zhuǎn)換為相應(yīng)的十進制數(shù),然后再將十進制數(shù)轉(zhuǎn)換為其他進制數(shù)。制數(shù)轉(zhuǎn)換為其他進制數(shù)。l由于由于二進制、八進制和十六進制之間二進制、八進制和十六進制之間存在存在特殊關(guān)系,即特殊關(guān)系,即8=23,16=24,因此轉(zhuǎn)換方法,因此轉(zhuǎn)換方法就比較容易就比較容易特殊關(guān)系特殊關(guān)系l1位二進制數(shù)相當(dāng)于位二進制數(shù)相當(dāng)于1位二進制數(shù)位二進制數(shù) l1位四進制數(shù)相當(dāng)于位四進制數(shù)相當(dāng)于2位二進制數(shù)位二進制數(shù) 22l1位八進制數(shù)相當(dāng)于位八進制數(shù)相當(dāng)于3位二進制數(shù)位二進制數(shù) 23l1位十六進制數(shù)相當(dāng)于位十六進制數(shù)相當(dāng)于4

6、位二進制數(shù)位二進制數(shù) 24特殊關(guān)系基本對照表特殊關(guān)系基本對照表二進制 八進制 二進制 十六進制 二進制 十六進制 000 0 0000 0 1000 8 001 1 0001 1 1001 9 010 2 0010 2 1010 a 011 3 0011 3 1011 b 100 4 0100 4 1100 c 101 5 0101 5 1101 d 110 6 0110 6 1110 e 111 7 0111 7 1111 fl二進制轉(zhuǎn)換到八進制二進制轉(zhuǎn)換到八進制 只需將二進制數(shù)只需將二進制數(shù)從右向左從右向左每每3位一組(最位一組(最后不足后不足3位補零),根據(jù)基本對照表,從左位補零),根據(jù)

7、基本對照表,從左向右即可完成轉(zhuǎn)換。向右即可完成轉(zhuǎn)換。l二進制同十六進制之間的轉(zhuǎn)換二進制同十六進制之間的轉(zhuǎn)換:4位一組位一組l反之,可以轉(zhuǎn)換為二進制反之,可以轉(zhuǎn)換為二進制其他相關(guān)內(nèi)容其他相關(guān)內(nèi)容l參考參考1.1.2有關(guān)位的知識以及計算機中數(shù)值的有關(guān)位的知識以及計算機中數(shù)值的編碼表示方法編碼表示方法l內(nèi)存是以內(nèi)存是以2的指數(shù)(的指數(shù)(0123.)個字節(jié)為個字節(jié)為單位的連續(xù)的存儲空間,每個內(nèi)存單元有單位的連續(xù)的存儲空間,每個內(nèi)存單元有一個唯一的編號,即地址一個唯一的編號,即地址l一個字節(jié)由一個字節(jié)由8個二進制位組成個二進制位組成l最右邊的一位稱為最右邊的一位稱為“最低位最低位”,最左邊的,最左邊的一

8、位稱為一位稱為“最高位最高位”。l每一個二進制位的值是每一個二進制位的值是0或或1。l以最高位作為以最高位作為符號位符號位l為為0表示正數(shù),為表示正數(shù),為1表示負數(shù)。表示負數(shù)。l表示數(shù)值,可采用不同的編碼方法,表示數(shù)值,可采用不同的編碼方法,一般有:一般有:原碼、反碼和補碼原碼、反碼和補碼。 原碼原碼l符號位為符號位為0代表正數(shù),為代表正數(shù),為1代表負數(shù),其余代表負數(shù),其余各位代表數(shù)值本身的各位代表數(shù)值本身的絕對值絕對值l+0和和 0是同一個數(shù)是同一個數(shù)0,而在內(nèi)存中卻有兩,而在內(nèi)存中卻有兩個不同的表示個不同的表示 。l0000000000000000l1000000000000000l由于由

9、于0的表示方法的表示方法不唯一不唯一,不適合計算機,不適合計算機的運算。的運算。反碼反碼l正數(shù)的反碼與原碼相同。正數(shù)的反碼與原碼相同。l而負數(shù)的反碼是:原碼除符號位外(仍為而負數(shù)的反碼是:原碼除符號位外(仍為1),),各位取反各位取反。l+0的反碼是:的反碼是:0000000000000000l 0的反碼是:的反碼是:1111111111111111l同樣,同樣,0的表示不唯一。所以在計算機內(nèi)的表示不唯一。所以在計算機內(nèi)部一般也不使用反碼來表示數(shù)。部一般也不使用反碼來表示數(shù)。補碼補碼l正數(shù)的補碼與原碼相同。正數(shù)的補碼與原碼相同。l而負數(shù)的補碼是:除最高位仍為而負數(shù)的補碼是:除最高位仍為1外,外

10、,原原碼的其余各位求反(即反碼)碼的其余各位求反(即反碼),再加,再加1。 l用補碼形式表示數(shù)值用補碼形式表示數(shù)值0時,是唯一的:時,是唯一的: 0000000000000000l計算機通常都是以計算機通常都是以補碼形式補碼形式存放數(shù)。存放數(shù)。l不僅數(shù)值表示唯一,而且能將符號位不僅數(shù)值表示唯一,而且能將符號位與其他位統(tǒng)一處理。與其他位統(tǒng)一處理。l在計算機中可以使在計算機中可以使減法變?yōu)榧臃p法變?yōu)榧臃ǎ瑸?,為硬件實現(xiàn)提供方便。硬件實現(xiàn)提供方便。主要內(nèi)容主要內(nèi)容數(shù)據(jù)類型數(shù)據(jù)類型常量常量變量變量運算符與表達式運算符與表達式類型轉(zhuǎn)換類型轉(zhuǎn)換運算的優(yōu)先級與結(jié)合性等運算的優(yōu)先級與結(jié)合性等數(shù)據(jù)類型l數(shù)據(jù)類

11、型是一個抽象的概念,包含有一組數(shù)據(jù)類型是一個抽象的概念,包含有一組數(shù)據(jù)(值)數(shù)據(jù)(值)的定義和對該組數(shù)據(jù)能夠進行的定義和對該組數(shù)據(jù)能夠進行的的操作(運算)操作(運算)的定義。的定義。l對數(shù)據(jù)類型的使用,必須通過類型的實際對數(shù)據(jù)類型的使用,必須通過類型的實際例子例子(實例實例/實體,即變量或常量實體,即變量或常量)來體現(xiàn)。來體現(xiàn)。l程序中,數(shù)據(jù)僅以程序中,數(shù)據(jù)僅以變量或常量變量或常量的形式表示的形式表示c語言的數(shù)據(jù)類型語言的數(shù)據(jù)類型數(shù)組類型數(shù)組類型結(jié)構(gòu)類型結(jié)構(gòu)類型 structstruct聯(lián)合類型聯(lián)合類型基本類型基本類型整型整型字符型字符型實型(浮點型)實型(浮點型)單精度實型單精度實型 flo

12、atfloat雙精度實型雙精度實型 doublec語言的數(shù)據(jù)類型語言的數(shù)據(jù)類型l基本數(shù)據(jù)類型基本數(shù)據(jù)類型較簡單,是語言(編譯器)較簡單,是語言(編譯器)已經(jīng)定義好的類型,可直接使用;已經(jīng)定義好的類型,可直接使用;l構(gòu)造類型構(gòu)造類型是由基本數(shù)據(jù)類型或其他構(gòu)造類是由基本數(shù)據(jù)類型或其他構(gòu)造類型型組織組織而成的,是程序員而成的,是程序員自自己己定義的類型定義的類型l指針在指針在c語言中極為普遍,指針提供了動語言中極為普遍,指針提供了動態(tài)處理變量的能力,是態(tài)處理變量的能力,是c語言的語言的精髓精髓。第第2章章 第第4章章第第5章章2.1 基本數(shù)據(jù)類型基本數(shù)據(jù)類型l基本數(shù)據(jù)類型是其他類型的基礎(chǔ)基本數(shù)據(jù)類型

13、是其他類型的基礎(chǔ)整型、字符型、浮點型整型、字符型、浮點型l基本類型基本類型數(shù)據(jù)數(shù)據(jù)是程序處理的基本對象是程序處理的基本對象l不同的數(shù)據(jù)類型的數(shù)據(jù)具有不同的不同的數(shù)據(jù)類型的數(shù)據(jù)具有不同的取取 值范圍值范圍和允許的操作。和允許的操作。思考思考l為什么為什么c語言不提供語言不提供布爾類型布爾類型?2.1.1 整型整型l整型的基本類型名為整型的基本類型名為int。l根據(jù)數(shù)值的范圍又可分為根據(jù)數(shù)值的范圍又可分為普通整型普通整型(int)、)、短整型短整型 (short int或或short)和)和長整型長整型(long int或或long)。)。l根據(jù)整型值是否帶符號位來分類,可以分根據(jù)整型值是否帶符號

14、位來分類,可以分為無符號整型(為無符號整型( unsigned )和帶符號整)和帶符號整型型(signed可以省略可以省略) 。類型與類型名類型與類型名有符號基本整型有符號基本整型有符號短整型有符號短整型有符號長整型有符號長整型無符號基本整型無符號基本整型無符號短整型無符號短整型無符號長整型無符號長整型( signed) int (signed ) short ( int )( signed ) long ( int )unsigned intunsigned short ( int )unsigned long ( int )整型整型l需要注意的是,標(biāo)準(zhǔn)需要注意的是,標(biāo)準(zhǔn)c沒有具體規(guī)定以上沒

15、有具體規(guī)定以上各類數(shù)據(jù)所占內(nèi)存字節(jié)數(shù)。各類數(shù)據(jù)所占內(nèi)存字節(jié)數(shù)。l只要求只要求long型數(shù)據(jù)長度不短于型數(shù)據(jù)長度不短于int型,型,short型不長于型不長于int型。型。l具體如何實現(xiàn),由各計算機系統(tǒng)和編譯系具體如何實現(xiàn),由各計算機系統(tǒng)和編譯系統(tǒng)決定。統(tǒng)決定。整型整型l如在如在turbo c 2.0中,一個中,一個int型和一個型和一個short型數(shù)據(jù)分別占用型數(shù)據(jù)分別占用2個字節(jié)(個字節(jié)(16位)的位)的內(nèi)存空間,一個內(nèi)存空間,一個long型數(shù)據(jù)占用型數(shù)據(jù)占用4個字節(jié)個字節(jié)(32位)的內(nèi)存空間;位)的內(nèi)存空間;l而在而在visual c+ 6.0中,一個中,一個short型數(shù)據(jù)型數(shù)據(jù)占用占用

16、2個字節(jié)的內(nèi)存空間,一個個字節(jié)的內(nèi)存空間,一個int型數(shù)據(jù)型數(shù)據(jù)和一個和一個long型數(shù)據(jù)分別都占用型數(shù)據(jù)分別都占用4個字節(jié)的個字節(jié)的內(nèi)存空間。內(nèi)存空間。常用存儲容量常用存儲容量1b=8bit=1字節(jié)字節(jié)1kb=1024b1mb=1024kb (百萬、兆)1gb=1024mb (十億、千兆)1tb=1024gb (萬億、百萬兆 )整型整型l根據(jù)整型數(shù)據(jù)所占的位數(shù),可以計算一個根據(jù)整型數(shù)據(jù)所占的位數(shù),可以計算一個整型數(shù)據(jù)能表示的數(shù)據(jù)的整型數(shù)據(jù)能表示的數(shù)據(jù)的取值范圍取值范圍。l超出最大值:超出最大值:溢出溢出。 l以以int(有符號普通整型)為例計算取值范(有符號普通整型)為例計算取值范圍。在圍。

17、在visual c+ 6.0中,普通整型占中,普通整型占32位,位,即即4個字節(jié)。個字節(jié)。存儲方式存儲方式l 0 1 31l第第0位是位是符號位:符號位:0:正整數(shù),最大為正整數(shù),最大為231 1,即,即2147483647。1:負整數(shù),負整數(shù),1到到31位全為位全為0時表示的數(shù)最小時表示的數(shù)最?。?231的的補碼補碼)。最小整數(shù)是。最小整數(shù)是 231turbo c2.0中中類型類型 字節(jié)數(shù)字節(jié)數(shù) 數(shù)值范圍數(shù)值范圍short 2 215(215 1) unsigned short 2 0(216 1) int 2 215(215 1) unsigned 2 0 216 long 4 231(2

18、31 1) unsigned long 4 0(232 1) visual c+ 6.0類型類型 字節(jié)數(shù)字節(jié)數(shù) 數(shù)值范圍數(shù)值范圍short 2 215(215-1) unsigned short 2 0(216-1) int 4 231(231-1)unsigned 4 0(232-1) long 4 231(231-1)unsigned long 4 0(232 1) 2.1.2 浮點型浮點型l標(biāo)準(zhǔn)標(biāo)準(zhǔn)c語言中,浮點型數(shù)分為單精度型語言中,浮點型數(shù)分為單精度型(float)、雙精度型()、雙精度型(double)和長雙精)和長雙精度型(度型(long double)浮點數(shù)三類。)浮點數(shù)三類。

19、l一個一個float型數(shù)據(jù)占用型數(shù)據(jù)占用4個字節(jié)的內(nèi)存空間,個字節(jié)的內(nèi)存空間,一個一個double型數(shù)據(jù)占用型數(shù)據(jù)占用8個字節(jié)的內(nèi)存空個字節(jié)的內(nèi)存空間,一個間,一個long double型數(shù)據(jù)占用型數(shù)據(jù)占用16個字節(jié)個字節(jié)(128位)的內(nèi)存空間。位)的內(nèi)存空間。有效位數(shù)l浮點型數(shù)據(jù)的取值范圍和值的浮點型數(shù)據(jù)的取值范圍和值的精度精度與與所用的所用的機器有關(guān)機器有關(guān)。l有效位數(shù):是該數(shù)中有效數(shù)字的個數(shù),有效位數(shù):是該數(shù)中有效數(shù)字的個數(shù),指從該數(shù)左方第一個非零數(shù)字算起到指從該數(shù)左方第一個非零數(shù)字算起到最末一個數(shù)字(包括中間的零)的個最末一個數(shù)字(包括中間的零)的個數(shù),它不取決于小數(shù)點的位置。數(shù),它不

20、取決于小數(shù)點的位置。 l浮點型數(shù)據(jù)是按照浮點型數(shù)據(jù)是按照指數(shù)形式指數(shù)形式存儲的。存儲的。l系統(tǒng)把一個浮點型數(shù)據(jù)表示為小數(shù)部系統(tǒng)把一個浮點型數(shù)據(jù)表示為小數(shù)部分和指數(shù)部分,分別存放。分和指數(shù)部分,分別存放。數(shù)值范圍數(shù)值范圍類型類型 字節(jié)數(shù)字節(jié)數(shù) 有效位數(shù)有效位數(shù)float 4 7 數(shù)值范圍數(shù)值范圍 3.410383.41038階的范圍階的范圍 3838思考思考l最接近最接近0的正的的正的float型數(shù)據(jù)是?型數(shù)據(jù)是?數(shù)值范圍數(shù)值范圍類型類型 字節(jié)數(shù)字節(jié)數(shù) 有效位數(shù)有效位數(shù)double 8 16 數(shù)值范圍數(shù)值范圍 1.7103081.710308階的范圍階的范圍 308308數(shù)值范圍數(shù)值范圍類型類型

21、 字節(jié)數(shù)字節(jié)數(shù) 有效位數(shù)有效位數(shù)long double 16 1819 數(shù)值范圍數(shù)值范圍 1.21049321.2104932階的范圍階的范圍 493249322.1.3 字符型字符型lc語言中,字符型的基本類型名為語言中,字符型的基本類型名為char。l以以1個字節(jié)(個字節(jié)(8位)來存放一個字符位)來存放一個字符l有符號字符型數(shù)據(jù)的取值是有符號字符型數(shù)據(jù)的取值是 128127l無符號字符型數(shù)據(jù)的取值是無符號字符型數(shù)據(jù)的取值是02552.2 常量常量l常量是在程序執(zhí)行過程中常量是在程序執(zhí)行過程中值不變值不變的數(shù)據(jù)。的數(shù)據(jù)。l如圓周率如圓周率 的值、字母的值、字母b在在asc碼字符集碼字符集中的

22、編碼值等,這類數(shù)據(jù)就稱為常量。中的編碼值等,這類數(shù)據(jù)就稱為常量。l數(shù)值常量:整型常量、浮點數(shù)常量數(shù)值常量:整型常量、浮點數(shù)常量l字符型常量:字符型常量: 字符常量、字符串常量、轉(zhuǎn)義字符字符常量、字符串常量、轉(zhuǎn)義字符l符號常量符號常量2.2.1 整型常量整型常量常用的三種不同的數(shù)制常用的三種不同的數(shù)制十進制十進制 八進制八進制 十六進制十六進制65 0101 0 x41125 0175 0 x7d長整型:長整型:-56l;3567l;04l無符號整型:無符號整型:586u;077765u;0 xfffdu無符號長整型:無符號長整型:0375ul;0 x45feul例2.1 整數(shù)的不同進制數(shù)表示m

23、ain( ) printf(%d %x %on,125,125,125); printf(%d %x %on,045,045,045); printf(%d %x %on,0 x32,0 x32,0 x32); 執(zhí)行結(jié)果執(zhí)行結(jié)果: 125 7d 175 37 25 45 50 32 622.2.2 浮點數(shù)常量浮點數(shù)常量l浮點數(shù)在程序中只能以十進制數(shù)表示。浮點數(shù)在程序中只能以十進制數(shù)表示。 小數(shù)形式:小數(shù)形式: 3.141 -25.3 23. .45 指數(shù)形式指數(shù)形式:l (整數(shù)部分整數(shù)部分).(小數(shù)部分小數(shù)部分)e( 或或e)(指數(shù)部分指數(shù)部分) 注意注意:字母字母e(或或e)之前必須有數(shù)字,

24、且之前必須有數(shù)字,且e后面的指后面的指數(shù)必須為整數(shù)數(shù)必須為整數(shù) 非法浮點數(shù)非法浮點數(shù) 3.14e7.8 ; 12.34 e8; 12,345e-22.2.3 字符常量字符常量字符常量是指用單引號括起來的一個字符。字符常量是指用單引號括起來的一個字符。字符按對應(yīng)的字符按對應(yīng)的ascii碼值存儲,占一個字節(jié)碼值存儲,占一個字節(jié) a:97 a:65 9: 57 0:48字符常量可以作為整數(shù)參與運算字符常量可以作為整數(shù)參與運算a-32 等價于等價于 97-32=65 9-9 等價于等價于 57-9=48 a+32 等價于等價于 65+32=97例例 大小寫字母的轉(zhuǎn)換大小寫字母的轉(zhuǎn)換#include v

25、oid main() char c1,c2; c1=a; c2=c; printf(“c c ” ,c1+32,c2-32); 轉(zhuǎn)義字符轉(zhuǎn)義字符l還有一種特殊形式的字符常量,以一個還有一種特殊形式的字符常量,以一個開頭的字符序列:轉(zhuǎn)義(開頭的字符序列:轉(zhuǎn)義(escape)字符)字符l轉(zhuǎn)義字符,在屏幕上不能顯示,在程序中轉(zhuǎn)義字符,在屏幕上不能顯示,在程序中也無法用一個一般形式的字符表示,只能也無法用一個一般形式的字符表示,只能采用特殊形式來表示。采用特殊形式來表示。lc語言中,轉(zhuǎn)義字符有三種:簡單轉(zhuǎn)義字語言中,轉(zhuǎn)義字符有三種:簡單轉(zhuǎn)義字符、八進制轉(zhuǎn)義字符和十六進制轉(zhuǎn)義字符符、八進制轉(zhuǎn)義字符和十六

26、進制轉(zhuǎn)義字符轉(zhuǎn)義字符轉(zhuǎn)義字符 含含 義義 ascii代碼代碼 n換行,將當(dāng)前位置移到下一行開頭換行,將當(dāng)前位置移到下一行開頭 10t 水平制表(跳到下一個水平制表(跳到下一個tab位置)位置) 9b 退格,將當(dāng)前位置移到前一列退格,將當(dāng)前位置移到前一列 8r 回車,將當(dāng)前位置移到本行開頭回車,將當(dāng)前位置移到本行開頭 13f 換頁,將當(dāng)前位置移到下頁開頭換頁,將當(dāng)前位置移到下頁開頭 12a發(fā)出鈴聲發(fā)出鈴聲 7 代表一個反斜杠字符代表一個反斜杠字符“”92代表一個單撇號字符代表一個單撇號字符 39” 代表一個雙撇號字符代表一個雙撇號字符34ddd 1到到3位八進制數(shù)對應(yīng)字符位八進制數(shù)對應(yīng)字符xhh

27、1到到2位十六進制數(shù)對應(yīng)字符位十六進制數(shù)對應(yīng)字符八進制轉(zhuǎn)義字符和十六進制轉(zhuǎn)義字符八進制轉(zhuǎn)義字符和十六進制轉(zhuǎn)義字符用用ddd 或或xhh形式可以表示任意字符形式可以表示任意字符 a 65 101 x41 5 53 065 x35 234 352 xea2.2.4 字符串常量字符串常量l用一對用一對雙引號雙引號括起來的零個或多個字括起來的零個或多個字符的序列。如:符的序列。如:“hello” “b” “$43.23”l字符串常量與字符常量的存儲不同字符串常量與字符常量的存儲不同lc編譯程序在存儲字符串常量時自動在編譯程序在存儲字符串常量時自動在其末尾加上其末尾加上null 或或0 (ascii碼值

28、為碼值為0)作為字符串作為字符串結(jié)束標(biāo)志結(jié)束標(biāo)志l“china” 長度為長度為5, 需要占需要占6個字節(jié)個字節(jié)l c h i n a null09711210510467區(qū)別區(qū)別 b 和和 “b” “” 和和 “ ” 2.2.5 符號常量符號常量l便于程序調(diào)試和修改,將常量定義為一個便于程序調(diào)試和修改,將常量定義為一個標(biāo)識符標(biāo)識符,稱為稱為符號常量符號常量。通常用大寫表示。通常用大寫表示。 #define max 1024 #define star * const float pi=3.1415926; /c99方式方式 int const numb=1024; /c99方式方式常量的存儲常量

29、的存儲l內(nèi)存中安排常量數(shù)據(jù)存儲區(qū)內(nèi)存中安排常量數(shù)據(jù)存儲區(qū)l按照常量在程序中的出現(xiàn)順序(重復(fù)按照常量在程序中的出現(xiàn)順序(重復(fù)出現(xiàn)的常量,僅僅存放一次),依次出現(xiàn)的常量,僅僅存放一次),依次存放各個常量存放各個常量(二進制機器數(shù)形式二進制機器數(shù)形式);l只能使用常量,不能夠改變常量的值只能使用常量,不能夠改變常量的值2.3 變量變量l值可以改變值可以改變的數(shù)據(jù)。的數(shù)據(jù)。l變量代表內(nèi)存中的一個變量代表內(nèi)存中的一個(或多個或多個)存儲存儲單元,單元內(nèi)容就是變量的值。單元,單元內(nèi)容就是變量的值。l需要給變量取個名字需要給變量取個名字l使用使用標(biāo)識符標(biāo)識符代表變量代表變量(變量名變量名)l標(biāo)識符:以字母和

30、標(biāo)識符:以字母和 “_”開頭的;開頭的;字母、數(shù)字和字母、數(shù)字和“_”組成的串組成的串l一般用小寫字母一般用小寫字母l不能與關(guān)鍵字同名。不能與關(guān)鍵字同名。2.3.1 變量定義變量定義l變量必須變量必須先定義后使用先定義后使用。定義格式為。定義格式為 數(shù)據(jù)類型名數(shù)據(jù)類型名 變量名表;變量名表;l例如:例如: int num; char ch1, ch2; double length,result,sum; 以逗號分開的變量列表以逗號分開的變量列表2.3.2 變量的初始化變量的初始化l定義變量時可以對變量賦初值。例如:定義變量時可以對變量賦初值。例如: int num2, num3=100; ch

31、ar ch1=b,ch2; float r=2.345;變量的存儲變量的存儲l內(nèi)存中(按照函數(shù)的調(diào)用順序動態(tài)地)內(nèi)存中(按照函數(shù)的調(diào)用順序動態(tài)地)安排變量數(shù)據(jù)存儲區(qū)安排變量數(shù)據(jù)存儲區(qū)l按照變量在程序中的出現(xiàn)順序,依次按照變量在程序中的出現(xiàn)順序,依次存放各個變量;存放各個變量;l可以使用變量,也能夠改變變量的值可以使用變量,也能夠改變變量的值2.3.3 變量地址變量地址l 存放變量的內(nèi)存空間中的首單元地存放變量的內(nèi)存空間中的首單元地址稱為變量地址址稱為變量地址l內(nèi)存空間存放的內(nèi)容稱為變量的值。內(nèi)存空間存放的內(nèi)容稱為變量的值。 &a2500h| 2501h|- 1250 - a=1250 &b25

32、02h| 2503h|- - 2504h|- - 2505h|-123.67 - b=123.67 2506h| 變量名、變量值、變量地址間的關(guān)系變量名、變量值、變量地址間的關(guān)系例如:例如: int a=1250; float b=123.67;2.4 運算符與表達式運算符與表達式lc語言的運算符范圍很寬,把除了語言的運算符范圍很寬,把除了控制語句和輸入輸出以外的控制語句和輸入輸出以外的幾乎所幾乎所有的基本操作都作為運算符處理有的基本操作都作為運算符處理。lc的運算符可分為的運算符可分為算術(shù)運算符算術(shù)運算符、賦賦值運算符值運算符、關(guān)系運算符關(guān)系運算符等。等。l按運算對象(操作數(shù))的數(shù)目可將按運

33、算對象(操作數(shù))的數(shù)目可將c的運算符分為的運算符分為l單目運算符、雙目運算符單目運算符、雙目運算符和和三目運算三目運算符(僅有符(僅有1個)個)語言的運算符 算術(shù)運算符算術(shù)運算符 + - * / % + - 關(guān)系運算符關(guān)系運算符 !邏輯運算符邏輯運算符 ! | 位運算符位運算符 | 賦值運算符賦值運算符 及其擴展賦值運算符及其擴展賦值運算符 條件運算符條件運算符 ?:?: 逗號運算符逗號運算符 , 語言的運算符(8)指針運算符指針運算符 * (9)求字節(jié)數(shù)運算符求字節(jié)數(shù)運算符 sizeof (10)強制類型轉(zhuǎn)換運算符強制類型轉(zhuǎn)換運算符 (類型)類型) (11)分量運算符分量運算符 - (12)

34、下標(biāo)運算符下標(biāo)運算符 (13) 函數(shù)調(diào)用運算符()函數(shù)調(diào)用運算符()表達式定義(遞歸方法)l單個常量或變量就是一個表達式單個常量或變量就是一個表達式l將表達式通過將表達式通過運算符運算符進行連接,得到進行連接,得到新的表達式新的表達式l表達式中的運算符有表達式中的運算符有優(yōu)先級優(yōu)先級和和結(jié)合性結(jié)合性的限制的限制l可以使用可以使用()()改變改變優(yōu)先級和結(jié)合性優(yōu)先級和結(jié)合性c語言的表達式語言的表達式(1)算術(shù)表達式算術(shù)表達式 (2)關(guān)系表達式關(guān)系表達式 (3)邏輯表達式邏輯表達式 (4)賦值表達式賦值表達式 (5)逗號表達式逗號表達式2.4.1算術(shù)運算符和算術(shù)表達式 l1. 雙目運算雙目運算加加

35、+ 10+5=15減減- 10-5=5乘乘* 10*5=50除除/ 30/4=7 30.0/4=7.5取余取余% 14%3=2; 25%8=12 單目運算單目運算自增自增 a+ 或或 +a 等效于等效于 a=a+1 自減自減 a- 或或 -a 等效于等效于 a=a-1取負取負 -a注意注意: 單目運算的單目運算的“前置前置”和和“后置后置”的的區(qū)別區(qū)別“前置前置” 變量先增值變量先增值(或先減值或先減值),后被使用后被使用“后置后置” 變量先被使用變量先被使用,后增值后增值(或后減值或后減值)l自增運算符和自減運算符只能用于變量,自增運算符和自減運算符只能用于變量,而不能用于常量或表達式,而不

36、能用于常量或表達式,l結(jié)合方向是結(jié)合方向是“自右至左自右至左”。l為避免二義性,最好采取大家都能理解的為避免二義性,最好采取大家都能理解的寫法,可以加一些寫法,可以加一些“不必要不必要”的括號,如的括號,如(i+)+j。 int x, y, i=25; x=-i; /* 相當(dāng)于相當(dāng)于: i=i-1; x=i; */ y=i;結(jié)果是結(jié)果是: x=24, y=24; int x, y, i=25; x=i-; /* 相當(dāng)于相當(dāng)于: x=i; i=i-1; */ y=i;結(jié)果是結(jié)果是: x=25, y=24;算術(shù)表達式和運算符的優(yōu)先級與結(jié)合性算術(shù)表達式和運算符的優(yōu)先級與結(jié)合性 l將表達式通過將表達式

37、通過算術(shù)運算符算術(shù)運算符進行連接進行連接l先取負先取負 ,再再 * / % 后后 + -l結(jié)合方向為結(jié)合方向為“自左至右自左至右”l可以使用可以使用( )改變優(yōu)先級和結(jié)合性改變優(yōu)先級和結(jié)合性 (ij)*k (i+j)*k 2.4.2 賦值運算符和賦值表達式賦值運算符和賦值表達式 賦值是指將表達式的值賦給一個變量賦值是指將表達式的值賦給一個變量 = x=18 x=5*2+y num=x*(a+b) 賦值表達式可以連用賦值表達式可以連用(右結(jié)合右結(jié)合) x=y=z=100賦值表達式賦值表達式l賦值運算符比算術(shù)運算符的優(yōu)先級賦值運算符比算術(shù)運算符的優(yōu)先級低低l賦值表達式的值賦值表達式的值等于表達式的

38、值等于表達式的值l如果賦值運算符右邊值的類型與左邊變量如果賦值運算符右邊值的類型與左邊變量的類型不一致,需要把右邊值的類型轉(zhuǎn)換的類型不一致,需要把右邊值的類型轉(zhuǎn)換成左邊變量的類型(自動完成)成左邊變量的類型(自動完成) l可以構(gòu)成可以構(gòu)成復(fù)合賦值運算符復(fù)合賦值運算符(算術(shù))復(fù)合賦值運算符加賦值加賦值a+=b等效于等效于a=a+(b)減賦值減賦值a-=b等效于等效于a=a-(b)乘賦值乘賦值a*=b等效于等效于a=a*(b)除賦值除賦值a/=b等效于等效于a=a/(b)取余賦值取余賦值 a%b等效于等效于a=a%(b)如如 x*=10+2 等效于等效于 x=x*(10+2)2.4.3關(guān)系運算符和

39、關(guān)系表達式關(guān)系運算符和關(guān)系表達式 6個關(guān)系運算符,用于比較兩個運算分量間個關(guān)系運算符,用于比較兩個運算分量間的大小關(guān)系。的大小關(guān)系。 大于大于 = 大于等于大于等于 小于小于 42 的結(jié)果為?的結(jié)果為?l關(guān)系運算符關(guān)系運算符結(jié)合性是結(jié)合性是左結(jié)合性左結(jié)合性。2.4.4 邏輯運算符和邏輯表達式邏輯運算符和邏輯表達式 c語言中邏輯運算符有語言中邏輯運算符有3個個 邏輯與邏輯與a&b 邏輯或邏輯或a|b 邏輯非邏輯非!a 關(guān)系和邏輯表達式構(gòu)成復(fù)合的邏輯關(guān)系,關(guān)系和邏輯表達式構(gòu)成復(fù)合的邏輯關(guān)系,常用于控制結(jié)構(gòu)中。常用于控制結(jié)構(gòu)中。判斷閏年的表達式為?判斷閏年的表達式為? (year%4=0)&(yea

40、r%100!=0) | (year%400=0)2.2.5位運算符和位表達式位運算符和位表達式 位運算是指進行二進制位的運算。位運算是指進行二進制位的運算。 c語言中,位運算符有語言中,位運算符有位邏輯運算符位邏輯運算符和和移位運移位運算符算符。可以完成匯編語言的一些工作??梢酝瓿蓞R編語言的一些工作. 位邏輯運算位邏輯運算:移位運算移位運算: 按位與按位與 a&b右移位右移位 a4 按位或按位或 a|b左移位左移位 a右移位數(shù)右移位數(shù) 每右移每右移1位相當(dāng)于除以位相當(dāng)于除以2l左移位運算左移位運算 變量名變量名3!=x 優(yōu)先級l優(yōu)先級是指不同級別運算符之間的運優(yōu)先級是指不同級別運算符之間的運算

41、次序算次序l單目運算符的優(yōu)先級高于雙目運算符單目運算符的優(yōu)先級高于雙目運算符l雙目運算符優(yōu)先級高于三目運算符雙目運算符優(yōu)先級高于三目運算符l算術(shù)運算符高于關(guān)系運算符算術(shù)運算符高于關(guān)系運算符l關(guān)系運算符高于邏輯運算符關(guān)系運算符高于邏輯運算符l移位運算符高于關(guān)系運算符移位運算符高于關(guān)系運算符l位邏輯運算符低于關(guān)系運算符位邏輯運算符低于關(guān)系運算符l( )括號運算符優(yōu)先級最高)括號運算符優(yōu)先級最高l逗號運算符優(yōu)先級最低逗號運算符優(yōu)先級最低l賦值運算符及復(fù)合賦值運算符的優(yōu)先級僅賦值運算符及復(fù)合賦值運算符的優(yōu)先級僅高于逗號運算符高于逗號運算符.結(jié)合性l結(jié)合性是指在一個表達式中有多個優(yōu)結(jié)合性是指在一個表達式

42、中有多個優(yōu)先級相同的運算符之間的運算次序先級相同的運算符之間的運算次序.l右結(jié)合性右結(jié)合性 右右左左 包括包括 單目、三目和賦值運算符單目、三目和賦值運算符l左結(jié)合性左結(jié)合性 左左右右 其余運算符其余運算符優(yōu)先級優(yōu)先級結(jié)合性結(jié)合性1515 ( ) - . ( ) - . 左左右右1414 ! + - & ! + - & * * ( (類型名類型名) ) sizeofsizeof右右左左1313 * * / %/ %左左右右1212 + -+ -左左右右1111 左左右右1010 = = 左左右右9 9 = = != = !=左左右右8 8 & &左左右右7 7 左左右右6 6 | |左左右右5

43、 5 &左左右右4 4 |左左右右3 3 ?:?:右右左左2 2= = * *= /= += = /= += = =右右左左1 1 , ,左左右右例如a/b*c%d 即即(a/b)*c)%da+!b+c- 即即 (a+(!b)+(c-)i=k&ij-1 即即 (i)=k)&(i(j-1)a=b=c=5即即a=(b=(c=5)!a!(!a)實際處理方式實際處理方式 a+b+x*d 2.7 2.7 數(shù)據(jù)輸入輸出數(shù)據(jù)輸入輸出l數(shù)據(jù)是程序處理的對象;數(shù)據(jù)是程序處理的對象;l 輸入輸出操作是程序不可缺少的部分輸入輸出操作是程序不可缺少的部分l c中輸入輸出操作都是通過中輸入輸出操作都是通過函數(shù)調(diào)用函數(shù)調(diào)

44、用實現(xiàn)的實現(xiàn)的lc提供了標(biāo)準(zhǔn)提供了標(biāo)準(zhǔn)i/o: stdio.h #include 2.7.1 字符輸出函數(shù)字符輸出函數(shù)putchar()和格式輸和格式輸出函數(shù)出函數(shù)printf() l字符輸出函數(shù)字符輸出函數(shù)putchar( 參數(shù)參數(shù))l向終端輸出一個字符。參數(shù)可以是字符變向終端輸出一個字符。參數(shù)可以是字符變量、字符常量、字符量、字符常量、字符ascii碼。碼。l putchar(a);顯示大寫字母顯示大寫字母al putchar(97); 顯示小寫字母顯示小寫字母al 若若 c=! 則則 putchar(c) ; 顯示字符顯示字符! 例例#include void main( ) char

45、a,b,c; a=a; b=b; c=007; putchar(a); putchar(b); putchar(n); putchar(c) ; sleep(5); putchar(c) ; putchar(a); putchar(b); putchar(n); putchar(007); sleep(3); putchar(007); 輸出輸出: ab /*響鈴一次響鈴一次,隔隔5秒后再響鈴一次秒后再響鈴一次 ab /*響鈴一次響鈴一次,隔隔3秒后再響鈴一次秒后再響鈴一次l基本形式基本形式 printf(“控制字符串控制字符串”,輸出項列表輸出項列表);l按規(guī)定的輸出格式按規(guī)定的輸出格式,把

46、輸出項依次輸出把輸出項依次輸出到缺省輸出設(shè)備(通常為顯示器)到缺省輸出設(shè)備(通常為顯示器)l輸出項可以是變量、常量、或表達式;輸出項可以是變量、常量、或表達式;其間用逗號分隔。其間用逗號分隔。l控制字符串包括格式控制字符串包括格式控制說明符控制說明符和和普通字符普通字符。l控制說明符控制說明符 %格式字符格式字符控制說明符%c按字符型輸出按字符型輸出%d 或或 %i 按十進制整數(shù)輸出按十進制整數(shù)輸出%u按無符號整數(shù)輸出按無符號整數(shù)輸出%f按浮點型小數(shù)輸出按浮點型小數(shù)輸出%o按八進制整數(shù)輸出按八進制整數(shù)輸出%x 按十六進制整數(shù)輸出按十六進制整數(shù)輸出%s 按字符串輸出按字符串輸出%e或或e 按指數(shù)

47、形式輸出浮點型數(shù)按指數(shù)形式輸出浮點型數(shù) l在格式說明中,在在格式說明中,在%和格式字符間可以插和格式字符間可以插入附加符號(又稱入附加符號(又稱修飾符修飾符),可以控制輸出可以控制輸出的寬度、精度、小數(shù)位數(shù)、對齊方式等。的寬度、精度、小數(shù)位數(shù)、對齊方式等。l附加字符說明附加字符說明l輸出長整型數(shù)(與輸出長整型數(shù)(與d、o、x、u結(jié)合用)結(jié)合用)lm 指定數(shù)據(jù)輸出的寬度(即域?qū)挘┲付〝?shù)據(jù)輸出的寬度(即域?qū)挘﹍.n 對實型數(shù)據(jù),指定輸出對實型數(shù)據(jù),指定輸出 n 位小數(shù);對位小數(shù);對字符串,指定左端截取字符串,指定左端截取n 個字符輸出個字符輸出l+ 使輸出的數(shù)據(jù)無論正負都帶符號輸出使輸出的數(shù)據(jù)無論

48、正負都帶符號輸出l 使數(shù)據(jù)在輸出域內(nèi)按左對齊方式輸出使數(shù)據(jù)在輸出域內(nèi)按左對齊方式輸出l普通字符普通字符 可打印字符:直接顯示出字符可打印字符:直接顯示出字符 不可打印字符:使用轉(zhuǎn)義字符不可打印字符:使用轉(zhuǎn)義字符n, t, a例如例如: m=3; n=12; printf(“num1=%d num2=%dn”,m,n); 顯示顯示: num1=3 num2=12 printf(“%f%n”,95.6); 顯示顯示: 95.6% 2.7.2 字符輸入函數(shù)字符輸入函數(shù)getchar()和格式輸入函數(shù)和格式輸入函數(shù)scanf()字符輸入函數(shù)字符輸入函數(shù)getchar()()l無參數(shù)無參數(shù), 只能接收一

49、個字符。只能接收一個字符。l從鍵盤上輸入一個可打印字符從鍵盤上輸入一個可打印字符,函數(shù)的返回函數(shù)的返回值為該字符的值為該字符的ascii碼。碼。l通常將其通常將其返回值返回值賦于某個字符變量或整型賦于某個字符變量或整型變量。變量。例例#include void main( ) char c; c=getchar( ); putchar(c); 例:輸入一個字符,輸出其前導(dǎo)字符,例:輸入一個字符,輸出其前導(dǎo)字符,字符和后續(xù)字符字符和后續(xù)字符 #include void main( ) char c; int c1, c2; c=getchar( ); c1=c-1; c2=c+1; printf

50、(“%c%c%c ”,c1,c,c2); printf(“%d %d %dn”,c1,c,c2);輸入輸入: b 輸出輸出: abc 65 66 67程序可靠性?程序可靠性?格式輸入函數(shù)格式輸入函數(shù)scanf()l從鍵盤輸入數(shù)據(jù),按指定的輸入格式把從鍵盤輸入數(shù)據(jù),按指定的輸入格式把數(shù)據(jù)賦給相應(yīng)的輸入項。數(shù)據(jù)賦給相應(yīng)的輸入項。lscanf(“控制字符串控制字符串”,輸入項列表輸入項列表);l注意注意:接收數(shù)據(jù)的變量必須用其地址表示接收數(shù)據(jù)的變量必須用其地址表示,l輸入數(shù)據(jù)時,在兩個數(shù)據(jù)間用一個或多輸入數(shù)據(jù)時,在兩個數(shù)據(jù)間用一個或多個空格隔開,也可用回車鍵、跳格鍵個空格隔開,也可用回車鍵、跳格鍵tabscanf()常用的格式字符常用的格式字符%c按字符型輸入按字符型輸入%d 或或%i 按十進制整數(shù)輸入按十進制整數(shù)輸入

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論