NOIP 高中信息技術(shù)奧賽資料第二章---數(shù)據(jù)類型_第1頁
NOIP 高中信息技術(shù)奧賽資料第二章---數(shù)據(jù)類型_第2頁
NOIP 高中信息技術(shù)奧賽資料第二章---數(shù)據(jù)類型_第3頁
NOIP 高中信息技術(shù)奧賽資料第二章---數(shù)據(jù)類型_第4頁
NOIP 高中信息技術(shù)奧賽資料第二章---數(shù)據(jù)類型_第5頁
已閱讀5頁,還剩64頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、三種基本程序結(jié)構(gòu)三種基本程序結(jié)構(gòu)l幾乎所有編程語言,包括C語言,都會有三種基本的程序結(jié)構(gòu): 順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。 順序結(jié)構(gòu)順序結(jié)構(gòu)l順序結(jié)構(gòu)就是一條一條地從上到下執(zhí)行語句,所有的語句都會被執(zhí)行到,執(zhí)行過的語句不會再次執(zhí)行。選擇結(jié)構(gòu)選擇結(jié)構(gòu)l選擇結(jié)構(gòu)就是根據(jù)條件來判斷執(zhí)行哪些語句,如果給定的條件成立,就執(zhí)行相應(yīng)的語句,如果不成立,就執(zhí)行另外一些語句。 循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)l循環(huán)結(jié)構(gòu)就是在達到指定條件前,重復執(zhí)行某些語句。 用雙重循環(huán)結(jié)構(gòu)來輸出九九乘法表用雙重循環(huán)結(jié)構(gòu)來輸出九九乘法表 數(shù)據(jù)類型和運算符數(shù)據(jù)類型和運算符l在之前的學習中,我們已經(jīng)看到程序中使用的各種變量都應(yīng)預先加以定義,即先定義

2、,后使用。對變量的定義可以包括三個方面:數(shù)據(jù)類型、存儲類型、作用域。l所謂數(shù)據(jù)類型是按被定義變量的性質(zhì),表示形式,占據(jù)存儲空間的多少,構(gòu)造特點來劃分的。在C語言中,數(shù)據(jù)類型可分為:基本數(shù)據(jù)類型,構(gòu)造數(shù)據(jù)類型,指針類型,空類型四大類。數(shù)據(jù)類型說明數(shù)據(jù)類型說明l對于基本數(shù)據(jù)類型量,按其值是否可變又分為常量和變量兩種。l在程序執(zhí)行過程中,其值不發(fā)生改變的量稱為常量,其值可變的量稱為變量。它們可與數(shù)據(jù)類型結(jié)合起來分類,例如,可分為整型常量、整型變量、浮點常量、浮點變量、字符常量、字符變量。常量與變量常量常量l說明:符號常量在使用之前必須先定義,其一般形式為: #define 標識符 常量其中#defi

3、ne也是一條預處理命令(預處理命令都以“#”開頭),稱為宏定義命令(在后面預處理程序中將進一步介紹),其功能是把該標識符定義為其后的常量值。一經(jīng)定義,以后在程序中所有出現(xiàn)該標識符的地方均代之以該常量值。l習慣上符號常量的標識符用大寫字母,變量標識符用小寫字母,以示區(qū)別。【例【例3-1】符號常量的使用。】符號常量的使用。 幾點說明: l用標識符代表一個常量,稱為符號常量。 l符號常量與變量不同,它的值在其作用域內(nèi)不能改變,也不能再被賦值。 l使用符號常量的好處是: 含義清楚;能做到“一改全改”。 變量變量l其值可以改變的量稱為變量。一個變量應(yīng)該有一個名字,在內(nèi)存中占據(jù)一定的存儲單元。變量定義必須

4、放在變量使用之前。一般放在函數(shù)體的開頭部分。要區(qū)分變量名和變量值是兩個不同的概念。l例如:int a=3 ;l存儲在0 x0010ffl變量定義的一般形式為:類型說明符 變量名, 變量名, .;l在書寫變量定義時,應(yīng)注意以下幾點: 1、允許在一個類型說明符后,定義多個相同類型的變量。各變量名之間用逗號間隔。類型說明符與變量名之間至少用一個空格間隔。 2、最后一個變量名之后必須以“;”號結(jié)尾。 3、變量定義必須放在變量使用之前。一般放在函數(shù)體的開頭部分。 整型數(shù)據(jù)的分類整型數(shù)據(jù)的分類l整型數(shù)據(jù)的一般分類如下: l基本型:類型說明符為int,在內(nèi)存中占2個字節(jié)。 l短整型:類型說明符為short

5、int或short。所占字節(jié)和取值范圍均與基本型相同。 l長整型:類型說明符為long int或long,在內(nèi)存中占4個字節(jié)。 l無符號型:類型說明符為unsigned。 下表列出了下表列出了C語言中各類整型數(shù)據(jù)所語言中各類整型數(shù)據(jù)所分配的內(nèi)存字節(jié)數(shù)及數(shù)的表示范圍。分配的內(nèi)存字節(jié)數(shù)及數(shù)的表示范圍。l#include lVoid main ()ll printf(“%dn”,sizeof(int);l十進制轉(zhuǎn)二進制l十進制數(shù)轉(zhuǎn)換為二進制數(shù)時,由于整數(shù)和小數(shù)的轉(zhuǎn)換方法不同,所以先將十進制數(shù)的整數(shù)部分和小數(shù)部分分別轉(zhuǎn)換后,再加以合并。 l1.十進制整數(shù)轉(zhuǎn)換為二進制整數(shù)十進制整數(shù)轉(zhuǎn)換為二進制整數(shù) l十

6、進制整數(shù)轉(zhuǎn)換為二進制整數(shù)采用“除2取余,逆序排列”法。具體做法是:用2去除十進制整數(shù),可以得到一個商和余數(shù);再用2去除商,又會得到一個商和余數(shù),如此進行,直到商為0時為止,然后把先得到的余數(shù)作為二進制數(shù)的低位有效位,后得到的余數(shù)作為二進制數(shù)的高位有效位,依次排列起來。 l十進制整數(shù)轉(zhuǎn)二進制l如:35=(100011)B2十進制小數(shù)轉(zhuǎn)換為二進制小數(shù) l十進制小數(shù)轉(zhuǎn)換成二進制小數(shù)采用乘2取整,順序排列法。具體做法是:用2乘十進制小數(shù),可以得到積,將積的整數(shù)部分取出,再用2乘余下的小數(shù)部分,又得到一個積,再將積的整數(shù)部分取出,如此進行,直到積中的小數(shù)部分為零,此時0或1為二進制的最后一位。或者達到所

7、要求的精度為止。l然后把取出的整數(shù)部分按順序排列起來,先取的整數(shù)作為二進制小數(shù)的高位有效位,后取的整數(shù)作為低位有效位。l如:0.625=(0.101)Bl0.625*2=1.25=取出整數(shù)部分1l0.25*2=0.5=取出整數(shù)部分0l0.5*2=1=取出整數(shù)部分1整型數(shù)據(jù)在內(nèi)存中的存放形式整型數(shù)據(jù)在內(nèi)存中的存放形式l如果定義了一個整型變量i: int i; i=10; 數(shù)值是以補碼表示的: 正數(shù)的補碼和原碼相同; 負數(shù)的補碼:將該數(shù)的絕對值的二進制形式按位取反再加1。 l例如:求-10的補碼: 由此可知,左面的第一位是表示符號的。 各種無符號整型數(shù)據(jù)所占的內(nèi)存空間字節(jié)數(shù)與相應(yīng)的有符號類型量相同

8、。但由于省去了符號位,故不能表示負數(shù)。以以13為例為例整型數(shù)據(jù)的表示方法 上面講到的整數(shù),都是十進制。在C語言中,常用的還有八進制和十六進制。下面集中講解一下:1) 十進制數(shù)十進制數(shù)十進制數(shù)沒有前綴。其數(shù)碼為09。以下是合法的十進制數(shù):237、-568、65535、1627;以下是不合法的十進制數(shù):023 (不能有前導0)、23D (含有非十進制數(shù)碼)。在程序中是根據(jù)前綴來區(qū)分各種進制數(shù)的。因此在書寫時不要把前綴弄錯造成結(jié)果不正確。l2) 八進制數(shù)八進制數(shù)八進制數(shù)必須以0開頭,即以0作為八進制數(shù)的前綴。數(shù)碼取值為07。八進制數(shù)通常是無符號數(shù)。以下是合法的八進制數(shù):015(十進制為13)、010

9、1(十進制為65)、0177777(十進制為65535);以下是不合法的八進制數(shù):256(無前綴0)、03A2(包含了非八進制數(shù)碼)、-0127(出現(xiàn)了負號)。3) 十六進制數(shù)十六進制數(shù)十六進制數(shù)的前綴為0X或0 x。其數(shù)碼取值為09,AF或af。以下是合法的十六進制數(shù):0X2A(十進制為42)、0XA0 (十進制為160)、0XFFFF (十進制為65535);以下是不合法的十六進制數(shù):5A (無前綴0X)、0X3H (含有非十六進制數(shù)碼)。l4) 整數(shù)的后綴整數(shù)的后綴可以用后綴“L”或“l(fā)”來表示長整型數(shù)。例如: l十進制長整型數(shù):158L (十進制為158)、358000L (十進制為3

10、58000); l八進制長整型數(shù):012L (十進制為10)、077L (十進制為63)、0200000L (十進制為65536); l十六進制長整型數(shù):0X15L (十進制為21)、0XA5L (十進制為165)、0X10000L (十進制為65536)。 長整型數(shù)158L和基本整型數(shù)158 在數(shù)值上并無區(qū)別。但對158L,因為是長整型數(shù),C編譯系統(tǒng)將為它分配4個字節(jié)存儲空間。而對158,因為是基本整型,只分配2 個字節(jié)的存儲空間。因此在運算和輸出格式上要予以注意,避免出錯。無符號數(shù)也可用后綴表示,整型數(shù)的無符號數(shù)的后綴為“U”或“u”。例如:358u、0 x38Au、235Lu均為無符號數(shù)

11、。前綴,后綴可同時使用以表示各種類型的數(shù)。如0XA5Lu表示十六進制無符號長整型數(shù)A5,其十進制為165。幾個整型變量的定義:幾個整型變量的定義: 【例【例3-2】整型變量的定義與使用。】整型變量的定義與使用。 整型數(shù)據(jù)的溢出整型數(shù)據(jù)的溢出l【例3-3】整型數(shù)據(jù)的溢出。 l#include lint main()l short int a,b;l a=32767;l b=a+1;l printf(%d,%dn,a,b);l return 0;l l【例3-4】不同類型變量賦值 不同類型的量可以參與運算并相互賦值 2.4 實型數(shù)據(jù)(浮點數(shù))實型數(shù)據(jù)(浮點數(shù)) l實型數(shù)據(jù)也稱為浮點數(shù)或?qū)崝?shù)。在C語

12、言中,實數(shù)只采用十進制。它有二種形式:十進制小數(shù)形式和指數(shù)形式。l 實數(shù)的表示實數(shù)的表示l1) 十進制小數(shù)形式十進制小數(shù)形式由數(shù)碼0 9和小數(shù)點組成。 例如:0.0、25.0、5.789、0.13、5.0、300.、-267.8230 等均為合法的實數(shù)。注意,必須有小數(shù)點。l2) 指數(shù)形式指數(shù)形式由十進制數(shù),加階碼標志“e”或“E”以及階碼(只能為整數(shù),可以帶符號)組成。其一般形式為:a E n(a為十進制數(shù),n為十進制整數(shù))其值為 a*10n。如:2.1E5 (等于2.1*105)3.7E-2 (等于3.7*10-2)0.5E7 (等于0.5*107)-2.8E-2 (等于-2.8*10-2

13、)【例【例3-5】輸出實數(shù)。】輸出實數(shù)。 3) 實數(shù)在內(nèi)存中的存放形式實數(shù)在內(nèi)存中的存放形式 說明: 小數(shù)部分占的位(bit)數(shù)愈多,數(shù)的有效數(shù)字愈多,精度愈高。 指數(shù)部分占的位數(shù)愈多,則能表示的數(shù)值范圍愈大。 l實型變量實型變量l實型變量分為:單精度(float型)、雙精度(double型)和長雙精度(long double型)三類。 在VC6.0中單精度型占4個字節(jié)(32位)內(nèi)存空間,其數(shù)值范圍為 3.4E-383.4E+38,只能提供七位有效數(shù)字。雙精度型占8 個字節(jié)(64位)內(nèi)存空間,其數(shù)值范圍為 1.7E-3081.7E+308,可提供16位有效數(shù)字。l實型變量定義的格式和書寫規(guī)則與

14、整型相同。例如: l實數(shù)的舍入誤差實數(shù)的舍入誤差l由于實數(shù)是由有限的存儲單元組成的,因此能提供的有效數(shù)字總是有限的。如下例。【例3-6】實數(shù)的舍入誤差。 l【例3-7】 l從本例可以看出: l由于a 是單精度浮點型,有效位數(shù)只有七位。而整數(shù)已占五位,故小數(shù)二位后之后均為無效數(shù)字。 lb 是雙精度型,有效位為十六位。但VC6.0規(guī)定小數(shù)后最多保留六位,其余部分四舍五入。 2.5 字符型數(shù)據(jù)(字符字符型數(shù)據(jù)(字符 )l字符型數(shù)據(jù)就是字符。 字符型數(shù)據(jù)的表示字符型數(shù)據(jù)的表示l字符型數(shù)據(jù)是用單引號括起來的一個字符。例如:a、b、=、+、?都是合法字符型數(shù)據(jù)。在C語言中,字符型數(shù)據(jù)有以下特點: l字符型

15、數(shù)據(jù)只能用單引號括起來,不能用雙引號或其它括號。 l字符型數(shù)據(jù)只能是單個字符,不能是字符串。 l字符可以是字符集中任意字符。但數(shù)字被定義為字符型之后就不能參與數(shù)值運算。如5和5 是不同的。5是字符型數(shù)據(jù),不能參與運算。 l轉(zhuǎn)義字符轉(zhuǎn)義字符l轉(zhuǎn)義字符是一種特殊的字符。轉(zhuǎn)義字符以反斜線開頭,后跟一個或幾個字符。轉(zhuǎn)義字符具有特定的含義,不同于字符原有的意義,故稱“轉(zhuǎn)義”字符。例如,在前面各示例中printf函數(shù)的格式串中用到的“n”就是一個轉(zhuǎn)義字符,其意義是“回車換行”。轉(zhuǎn)義字符主要用來表示那些用一般字符不便于表示的控制代碼。常用的轉(zhuǎn)義字符及其含義常用的轉(zhuǎn)義字符及其含義 l廣義地講,C語言字符集中的

16、任何一個字符均可用轉(zhuǎn)義字符來表示。表中的ddd和xhh正是為此而提出的。ddd和hh分別為八進制和十六進制的ASCII代碼。如101表示字母A ,102表示字母B,134表示反斜線,XOA表示換行等。l【例3-8】轉(zhuǎn)義字符的使用。 l字符變量字符變量l字符變量的類型說明符是char。字符變量類型定義的格式和書寫規(guī)則都與整型變量相同。例如:char a,b;字符變量在內(nèi)存中的存儲形式及使用方法字符變量在內(nèi)存中的存儲形式及使用方法l每個字符變量被分配一個字節(jié)的內(nèi)存空間,因此只能存放一個字符。字符值是以ASCII碼的形式存放在變量的內(nèi)存單元之中的。l如x的十進制ASCII碼是120,y的十進制ASC

17、II碼是121。對字符變量a、b賦予x和y值:a=x;b=y;實際上是在a、b兩個單元內(nèi)存放120和121的二進制代碼:l所以也可以把它們看成是整型量。C語言允許對整型變量賦以字符值,也允許對字符變量賦以整型值。在輸出時,允許把字符變量按整型量輸出,也允許把整型量按字符量輸出。整型量為二字節(jié)量,字符量為單字節(jié)量,當整型量按字符型量處理時,只有低八位字節(jié)參與處理。l【例3-9】向字符變量賦以整數(shù)。 l本程序中定義a,b為字符型,但在賦值語句中賦以整型值。從結(jié)果看,a,b值的輸出形式取決于printf函數(shù)格式串中的格式符,當格式符為c時,對應(yīng)輸出的變量值為字符,當格式符為d時,對應(yīng)輸出的變量值為整

18、數(shù)。l【例3-10】 l本例中,a,b被說明為字符變量并賦予字符值,C語言允許字符變量參與數(shù)值運算,即用字符的ASCII 碼參與運算。由于大小寫字母的ASCII 碼相差32,因此運算后把小寫字母換成大寫字母。然后分別以整型和字符型輸出。字符串字符串l字符串是由一對雙引號括起的字符序列。例如: CHINA , “C program” , $12.5 等都是合法的字符串。字符串和字符不同,它們之間主要有以下區(qū)別: l字符由單引號括起來,字符串由雙引號括起來。 l字符只能是單個字符,字符串則可以含一個或多個字符。 l可以把一個字符型數(shù)據(jù)賦予一個字符變量,但不能把一個字符串賦予一個字符變量。在C語言中沒有相應(yīng)的字符串變量,也就是說不存在

溫馨提示

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

評論

0/150

提交評論