C語言程序設計-第1章_第1頁
C語言程序設計-第1章_第2頁
C語言程序設計-第1章_第3頁
C語言程序設計-第1章_第4頁
C語言程序設計-第1章_第5頁
已閱讀5頁,還剩69頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、12/13/2021編輯課件1C C語言程序設計語言程序設計The C Programming Language華中科技大學計算機學院華中科技大學計算機學院曹計昌曹計昌12/13/2021編輯課件2第第0 0章章 C C語言程序設計課程安排語言程序設計課程安排一一.教材教材(Textbook)曹計昌曹計昌,盧萍盧萍,李開李開. C語言程序設計語言程序設計. 科學出版社科學出版社,2008.2 李開李開,盧萍盧萍,曹計昌曹計昌. C語言實驗與課程設計語言實驗與課程設計.科學出版科學出版社社,2011.3 二二. 參考書目參考書目(Reference Books)(1) Brian W. Kern

2、ighan,Dennis M. Ritchie. THE C PROGRAMMING LANGUAGE. 清華大學出版社清華大學出版社. PRENTICE HALL(注:該書已有中譯本)(注:該書已有中譯本)(2)曹化工)曹化工 秦友淑秦友淑. C語言程序設計典型題解析及自測試題語言程序設計典型題解析及自測試題. 西北工業大學出版社西北工業大學出版社(3)秦友淑)秦友淑 曹化工曹化工. C語言程序設計教程(第二版)語言程序設計教程(第二版). 華中科華中科技大學出版社技大學出版社,2002年年12月月12/13/2021編輯課件3三三.ISO.ISO的的C C語言標準和相關資料語言標準和相關資

3、料(ISO/IEC C (ISO/IEC C Standard and Other Materials)Standard and Other Materials)( (C C語言標準,網站等資料語言標準,網站等資料) )(1)最新標準:)最新標準:ISO/ IEC 9899: 1999 (E)ISO (the International Organization for Standardization) and IEC (the International Electrotechnical Commission)(2)C始于:始于:”The C Reference Manual” by Den

4、nis M. Ritchie, a version of which was published in The C Programming Language by Brian W. Kernighan and Dennis M. Ritchie, Prentice-Hall, Inc., (1978). Copyright owned by AT& T.(3)Dennis Ritchie Home Page “The Development of the C Language” ,by Dennis Ritchie ANSI C standard library Wikipedia;B

5、rian W_ Kernighan;n843,n897,n2794等等C語言方面的相關標準資料語言方面的相關標準資料,文檔文檔,網頁和網站網頁和網站12/13/2021編輯課件4三三. .本課程提供的其它資料本課程提供的其它資料(1) C語言程序設計課程課件語言程序設計課程課件ppt(2) C語言標準,網站等資料語言標準,網站等資料(前頁已經介紹前頁已經介紹)(3) C語言程序設計語言程序設計(中文版中文版)源程序源程序(4) C語言課程設計語言課程設計2010(09級)級)(5) 2010級級ACM班班C語言程序設計課程資料語言程序設計課程資料(6)漢字庫漢字庫-16乘乘16點陣點陣(7)

6、Turbo C 2.0 函數中文說明大全函數中文說明大全12/13/2021編輯課件520102010級級ACMACM班班C C語言程序設計課程資料語言程序設計課程資料(1) The C Programming Language-ppt(2) The C Programming Language,2nd text book(3) 3 The C Programming Language-source files(4) C程序設計語言英文版第程序設計語言英文版第2版課后習題與答案版課后習題與答案(5) C語言課程設計語言課程設計2011ACM班班(6) 教學日歷教學日歷-Syllabus of

7、The C Programming Language12/13/2021編輯課件6(4 4)關于)關于C C語言的圣經語言的圣經”一書的作者一書的作者n即:即:K&R C,即,即C創始人創始人 “The C Programming Language”,“C語語言的圣經言的圣經”一書的作者一書的作者nDennis M. Ritchie received Bachelors and advanced degrees from Harvard University, where as an undergraduate I concentrated in Physics and as a gr

8、aduate student in Applied Mathematics. The subject of my 1968 doctoral thesis was subrecursive hierarchies of functions.nBrian W. Kernighan is head of the Computing Structures Research Department, Bell Laboratories, Murray Hill, New Jersey. He received a B.A.Sc in engineering physics from the Univer

9、sity of Toronto in 1964, and a Ph.D. in electrical engineering from Princeton University in 1969. 12/13/2021編輯課件7學時安排學時安排, ,考核方式考核方式四四.學時安排學時安排(Arrangement of the houses)講課:講課:52+4學時學時 實驗實驗 24 hours五五.考核方式:考核方式:(Examination) 閉卷筆試閉卷筆試 評分:評分: 百分制百分制 其中其中:考試成績考試成績:50% 平時成績平時成績:50%(含實驗)(含實驗)(作業作業,實驗所占比例

10、要與其他老師商量實驗所占比例要與其他老師商量) .注注: 有有5分內容屬教材中未講內容分內容屬教材中未講內容,目的是鼓勵自學目的是鼓勵自學.12/13/2021編輯課件8六六. .學習方法學習方法 (Study methods)(Study methods)(1) (1) 課前要預習,課堂要專心,課后要復習課前要預習,課堂要專心,課后要復習(2) (2) 通過預習、聽課、復習、以及作業和實驗,確保消化課堂和教材的相通過預習、聽課、復習、以及作業和實驗,確保消化課堂和教材的相關內容。關內容。(3) (3) 要學會自己看書、理解,逐步減少對老師的依賴,培養良好的自學能要學會自己看書、理解,逐步減少

11、對老師的依賴,培養良好的自學能力。同時,由于學時緊張,假期的沖擊,講課速度會逐步加快到一力。同時,由于學時緊張,假期的沖擊,講課速度會逐步加快到一個合適的水平,以保證教學計劃的完成,因此課前課后一定研讀教個合適的水平,以保證教學計劃的完成,因此課前課后一定研讀教材。材。(4) (4) 認真、獨立的完成作業。認真、獨立的完成作業。(5) (5) 要重視實驗。上機實驗前要求預先編好有關程序,把上機的重點放到要重視實驗。上機實驗前要求預先編好有關程序,把上機的重點放到程序的編輯、修改、編譯、鏈接、跟蹤、調試程序方面來。放到觀程序的編輯、修改、編譯、鏈接、跟蹤、調試程序方面來。放到觀察程序運行過程中的

12、中間結果和運行完畢后的運行結果方面來。最察程序運行過程中的中間結果和運行完畢后的運行結果方面來。最終使自己的大腦變成一臺終使自己的大腦變成一臺“計算機計算機”,能夠在腦袋中運行自己的程,能夠在腦袋中運行自己的程序,判斷各種情況下程序的走向等等。序,判斷各種情況下程序的走向等等。 12/13/2021編輯課件9七定位問題七定位問題(Orientation)(Orientation)n培養的學生應該是將來能夠與培養的學生應該是將來能夠與MicroSoft的程序員,的程序員,軟件大師們一爭高下的人才,應該是有朝一日能夠軟件大師們一爭高下的人才,應該是有朝一日能夠根據實際應用需求,發明創造新型計算機程

13、序設計根據實際應用需求,發明創造新型計算機程序設計語言的人才。因此要高標準、嚴要求。不僅要掌握語言的人才。因此要高標準、嚴要求。不僅要掌握C的語法、語義,學好用好的語法、語義,學好用好C;而且要了解各種語;而且要了解各種語言成分產生、流傳、延續、發展的深層次原因和需言成分產生、流傳、延續、發展的深層次原因和需求背景。為學習后續課程,為將來能夠熟練的用求背景。為學習后續課程,為將來能夠熟練的用C寫系統軟件、底層軟件、共享軟件奠定堅實的語言寫系統軟件、底層軟件、共享軟件奠定堅實的語言基礎?;A。12/13/2021編輯課件10八八. .建議和意見建議和意見歡迎就教學方法,講課速度,教學歡迎就教學方

14、法,講課速度,教學內容的深度和廣度提出好的建議和內容的深度和廣度提出好的建議和意見,以便把本門課程的教學組織意見,以便把本門課程的教學組織實施好。實施好。 12/13/2021編輯課件11C語言程序設計-第1章 概論nC C語言是目前全球流傳最廣、使用最多的程序設計語言是目前全球流傳最廣、使用最多的程序設計語言。本章介紹內容為語言。本章介紹內容為: :n學習學習C C語言程序設計的第一個例子。語言程序設計的第一個例子。nC C語言的產生與發展,語言的產生與發展,C C語言的語言特征,語言的語言特征,C C語言的標準。語言的標準。n計算機硬件系統的組成,數的編碼表示以及數在內存中的計算機硬件系統

15、的組成,數的編碼表示以及數在內存中的表現形式。表現形式。n算法的概念及其表示方法。算法的概念及其表示方法。n對對C C語言程序設計作了概略性的介紹。語言程序設計作了概略性的介紹。1.1.同時介紹了同時介紹了N N進制數進制數, ,數之間轉換的方法,以及原碼、補碼、數之間轉換的方法,以及原碼、補碼、反碼及其相關運算。反碼及其相關運算。12/13/2021編輯課件12C C語言的應用領域語言的應用領域1. 操作系統設計操作系統設計UNIX,LINUX,WINDOWS底層及驅動等底層及驅動等.2. 計算機網絡與通信系統計算機網絡與通信系統TCP/IP協議棧協議棧,路由軟件路由軟件,交換機軟件等交換機

16、軟件等.3. 系統軟件系統軟件各種各種DBMS,如如Oracle,Sybase,MS SQL Server等等;各種編譯各種編譯器軟件器軟件.4. 嵌入式系統嵌入式系統(民用民用)汽車汽車(40多個微處理器系統多個微處理器系統),手機手機,U盤驅動盤驅動,MP3等等;嵌入式操嵌入式操作系統作系統;智能卡系統等智能卡系統等.5. 國防國防,軍工軍工,航空航天航空航天,工業控制系統均以工業控制系統均以C作為軟件開發的主流作為軟件開發的主流語言語言.12/13/2021編輯課件131.1 學習學習C C語言程序設計的第一個例子語言程序設計的第一個例子 例例1.1 1.1 輸入自己的名字的漢語拼音,輸

17、入自己的名字的漢語拼音,要計算機問候自己并且輸出這是自要計算機問候自己并且輸出這是自己學習己學習C C語言的第一個程序的句子。語言的第一個程序的句子。12/13/2021編輯課件14例例1.11.1的程序的程序n#include stdio.hnvoid show(char str);nvoid main(void)nn char name20;n printf(Input your name please!n);n gets(name);n printf(Hello %s!n,name);n show(name);nnvoid show(char str)nn printf(This is

18、the first program for %s to learn C programming!n,str);n 12/13/2021編輯課件15操作例操作例1.11.1的程序的程序n進入編輯進入編輯按按F10F10功能鍵激活菜單功能鍵激活菜單用光標左右移動用光標左右移動鍵選鍵選File File 選選New New 然后回車進入編輯狀態。然后回車進入編輯狀態。n編輯編輯將上面的程序從鍵盤輸入到計算機中完成源將上面的程序從鍵盤輸入到計算機中完成源程序的編輯程序的編輯 F2 F2保存保存. .n編譯鏈接編譯鏈接: : 按按F10F10功能鍵激活菜單,功能鍵激活菜單, 選選Run Run 然然后回

19、車。此時源程序會被編譯形成后回車。此時源程序會被編譯形成.OBJ.OBJ文件、再通文件、再通過鏈接形成過鏈接形成.EXE.EXE文件,最后運行該文件,最后運行該.EXE.EXE文件。文件。n過程過程: .C: .C源文件源文件 .OBJ.OBJ文件文件 .EXE.EXE文件文件運行得運行得到結果到結果n觀看結果觀看結果: Alt-F5 : Alt-F5 12/13/2021編輯課件16例例1.11.1的程序的結果的程序的結果n人機交互與運行結果如下:人機交互與運行結果如下:Input your name please!Jichang Cao(此為輸入信息)(此為輸入信息)Hello Jicha

20、ng Cao!This is the first program for Jichang Cao to learn C programming! 12/13/2021編輯課件17n#include stdio.hnvoid show(char str);nvoid main(void)nn char name20;n printf(Input your name please!n);n gets(name);n printf(Hello %s!n,name);n show(name);nnvoid show(char str)nn printf(This is the first progra

21、m for %s to learn C programming!n,str);n 1.1.2 1.1.2 解釋分析第一個解釋分析第一個C C程序程序12/13/2021編輯課件181.2 C1.2 C語言的產生、發展與語言特征語言的產生、發展與語言特征1.2.1 C1.2.1 C語言的產生與發展語言的產生與發展 FORTRAN(1957年)年)ALGOL 60(1960年)年) 傳統傳統C或或K&R C(1978)CPL(1963年)年) ANSI C(1989,美國國家標準),美國國家標準)BCPL(1967年)年) 標準標準 C(ISO/IEC 9899:1990,俗稱,俗稱C90

22、)B(1969年年-1970年)年) 最新標準最新標準 C(ISO/IEC 9899:1999俗稱俗稱C99)C(1971年年-1973年)年)圖圖1.1 C語言的繼承、產生與發展歷程語言的繼承、產生與發展歷程12/13/2021編輯課件191.2.3 C1.2.3 C語言的語言特征語言的語言特征n語言簡潔緊湊語言簡潔緊湊n目標代碼質量高目標代碼質量高n語言表達能力強語言表達能力強 n流程控制結構化流程控制結構化 n弱類型弱類型 n“中級語言中級語言”特性特性 n書寫自由、使用靈活書寫自由、使用靈活 n可移植性好可移植性好 12/13/2021編輯課件201.3 1.3 計算機硬件系統計算機硬

23、件系統 n一臺計算機硬件系統由一臺計算機硬件系統由CPU、內存、外存、其他、內存、外存、其他I/O設備和總線組成。設備和總線組成。見圖見圖1.2 計算機硬件系統組成的示意圖計算機硬件系統組成的示意圖nCPU 又稱為中央處理器又稱為中央處理器 。 CPU又是由運算器、又是由運算器、控制器、指令計數器、內部寄存器、標志寄存器控制器、指令計數器、內部寄存器、標志寄存器等部件組成。等部件組成。 n內存又稱為內存儲器,用以存放程序和數據。內存又稱為內存儲器,用以存放程序和數據。n總線是用以連接計算機各個部件的線路,它完成總線是用以連接計算機各個部件的線路,它完成各個部件之間的信息傳送。根據傳送信號種類的

24、各個部件之間的信息傳送。根據傳送信號種類的不同,總線又分成地址總線、數據總線和控制總不同,總線又分成地址總線、數據總線和控制總線。線。 12/13/2021編輯課件21內存編址內存編址, ,內存容量內存容量, ,字長字長n內存以字節為單位線性連續編址。即按照內存以字節為單位線性連續編址。即按照0 x00000 x0000,0 x00010 x0001,0 x00020 x0002,的方式;從低地址端開始向的方式;從低地址端開始向高地址端為每一個內存字節進行順序連續編號。高地址端為每一個內存字節進行順序連續編號。n10241024個字節稱為個字節稱為1K1K字節,字節,1024K1024K字節稱

25、為字節稱為1M1M字節,字節,1024M1024M字節稱為字節稱為1G1G字節。字節。1024G1024G字節稱為字節稱為1T1T字節。字節。 nCPUCPU數據總線的寬度(數據總線的寬度(bitbit數)稱為計算機的機器數)稱為計算機的機器字長。對位,機器字長為字節;對字長。對位,機器字長為字節;對位,機器字長為字節;對位位,機器字長為字節;對位,機器字長為字節。,機器字長為字節。 12/13/2021編輯課件22外存和其他外存和其他I/OI/O設備設備 n外存指計算機的外存儲器。常用的硬盤、軟外存指計算機的外存儲器。常用的硬盤、軟盤、盤、U盤、光盤、以及磁盤陣列都屬于外存。盤、光盤、以及磁

26、盤陣列都屬于外存。外存存儲的信息在斷電之后仍然能夠保存,外存存儲的信息在斷電之后仍然能夠保存,這是外存的第一個特點。這是外存的第一個特點。 n其他其他I/O設備設備 :鍵盤鍵盤 ,顯示器顯示器 ,打印機打印機 ,繪圖繪圖儀儀 12/13/2021編輯課件231.4 1.4 數和字符的機器碼表示數和字符的機器碼表示 n1.4.1 進位計數制進位計數制n數量用于描述事物的多少。數目則是表示事數量用于描述事物的多少。數目則是表示事物的個數。而表示數目的符號則是數字,往物的個數。而表示數目的符號則是數字,往往簡稱為數。一個數在不同的進位制下具有往簡稱為數。一個數在不同的進位制下具有不同的表示,因而形成

27、數制的概念。數制是不同的表示,因而形成數制的概念。數制是關于記數的法則。根據進位基數的不同關于記數的法則。根據進位基數的不同,常用常用的有十進制、二進制、八進制、十六進制等。的有十進制、二進制、八進制、十六進制等。12/13/2021編輯課件241. 1. 二進制數及其運算二進制數及其運算n1)二進制數)二進制數n二進制數是由二進制數是由0和和1組成的數字串。對于一組成的數字串。對于一個二進制數來講,它具有兩個下面基本特點:個二進制數來講,它具有兩個下面基本特點:n(1) 只有只有0和和1兩個不同的數字符號。兩個不同的數字符號。n(2) 逢逢2進位進位1。12/13/2021編輯課件25二進制

28、數的權值二進制數的權值n對由進位計數制描述的數來講,一個數字符號在該數的不同對由進位計數制描述的數來講,一個數字符號在該數的不同的數位具有不同的權的數位具有不同的權(也稱為權值或基值也稱為權值或基值),因此所表現的值,因此所表現的值是不一樣的。二進制數也是如此。二進制數中不同的數位所是不一樣的。二進制數也是如此。二進制數中不同的數位所具有的權值見教材圖具有的權值見教材圖1.3. n二進制數整數二進制數整數(10110110)2的值是:的值是:(10110111)2=1 27+0 26+1 25+1 24+0 23+1 22+1 21+1 20=(183)10n而帶二進制小數的二進制數而帶二進制

29、小數的二進制數(1011.1101)2的值是:的值是:(1011.1101)2=1 23+0 22+1 21+1 20+1 2-1+1 2-2+0 2-3+1 2-4=(11.8125)1012/13/2021編輯課件262 2)二進制數的運算)二進制數的運算 n二進制加法規則有四條:二進制加法規則有四條:n 0+0=0 0+1=1+0=1 n 1+1=0 向高位進位向高位進位1 n 1+1+1=1 向高位進位向高位進位1n二進制減法規則也有四條:二進制減法規則也有四條:n 0-0=0 1-1=0 n 1-0=1 0-1=1 向高位借位向高位借位1 12/13/2021編輯課件27二進制加法舉

30、例二進制加法舉例n例例1.2 二進制加法舉例,求二進制加法舉例,求(10110111)2+(01011011)2的和。的和。1 0 1 1 0 1 1 1+ 0 1 0 1 1 0 1 1進位進位 1 1 1 1 1 1 1 1 0 0 0 1 0 0 1 0n所以,所以,(10110111)2+(01011011)2=(100010010)212/13/2021編輯課件28二進制減法舉例二進制減法舉例n例例1.3 二進制減法舉例,求二進制減法舉例,求(10110111)2-(01011011)2的差。的差。借位借位 1 0 1 1 0 0 01 0 1 1 0 1 1 1- 0 1 0 1

31、1 0 1 1n 0 1 0 1 1 1 0 0n所以,所以,(10110111)2-(01011011)2=(01011100)212/13/2021編輯課件292. 2. 八進制數及其運算八進制數及其運算n八進制數是由八進制數是由0到到7組成的數字串。八進制組成的數字串。八進制數具有如下兩個基本特點:數具有如下兩個基本特點:n(1) 只有只有0,1,2,3,4,5,6,7八個不八個不同的數字符號。同的數字符號。n(2) 逢逢8進位進位1。n在在C語言中,通過加前導零的方式來表示一語言中,通過加前導零的方式來表示一個數是八進制數。如:個數是八進制數。如:0136表示的是八進表示的是八進制數制

32、數(136)8。 12/13/2021編輯課件303 3十六進制數及其運算十六進制數及其運算n將將4 4位二進制數組合成為十六進制數。與二進制、位二進制數組合成為十六進制數。與二進制、八進制數類似,十六進制數也有兩個基本特點:八進制數類似,十六進制數也有兩個基本特點:n(1 1)只有)只有0 0,1 1,2 2,3 3,4 4,5 5,6 6,7 7,8 8,9 9,A A,B B,C C,D D,E E,F F十六個不同的數字符號(十六個不同的數字符號(A A F F也可以采也可以采用小寫英文字母用小寫英文字母a a f f)。這十六個數字符號與二進)。這十六個數字符號與二進制、八進制、十進

33、制數之間的關系如表制、八進制、十進制數之間的關系如表1.21.2所示。所示。n(2 2)逢)逢1616進位進位1 1。n在在C C語言中,通過加前導語言中,通過加前導0 x0 x或前導或前導0X0X的方式來表示的方式來表示一個數是十六進制數。如:一個數是十六進制數。如:0 x2d5b0 x2d5b表示的是十六進表示的是十六進制數制數(2d5b)(2d5b)1616。0XABCD0XABCD也是合法的十六進制數。也是合法的十六進制數。 12/13/2021編輯課件31表表1.21.2十六進制的十六進制的1616個不同數字符號與十個不同數字符號與十進制、八進制、二進制數之間的關系進制、八進制、二進

34、制數之間的關系 12/13/2021編輯課件32十六進制加減法運算舉例十六進制加減法運算舉例n例例1.5 十六進制加減法運算舉例,求十六進制加減法運算舉例,求0XABCD與與(2d5b)16的和,以及的和,以及0XABCD與與(2d5b)16的差。的差。n解解 0XABCD+(2d5b)16=0XD928 0XABCD-(2d5b)16=0 x7E7212/13/2021編輯課件331.4.2 1.4.2 進位制數之間的轉換進位制數之間的轉換n1. 十進制整數轉換為二進制整數十進制整數轉換為二進制整數12/13/2021編輯課件34進位制數之間的轉換進位制數之間的轉換2. 2. 二進制整數轉換

35、為十進制整數二進制整數轉換為十進制整數n用按權展開的方式即可求得該數的十進制表示。用按權展開的方式即可求得該數的十進制表示。n例例1.7 1.7 二進制數二進制數(10111101)(10111101)2 2轉換為十進制數。轉換為十進制數。解解 (10111101)(10111101)2 2 =1=1 2 27 7+0+0 2 26 6+1+1 2 25 5+1+1 2 24 4+1+1 2 23 3+1+1 2 22 2+0+0 2 21 1+1+1 2 20 0=128+32+16+8+4+1=(189)=128+32+16+8+4+1=(189)101012/13/2021編輯課件35進

36、位制數之間的轉換進位制數之間的轉換3. 二進制整數轉換為八進制整數二進制整數轉換為八進制整數n二進制數轉換為八進制數可以采用二進制數轉換為八進制數可以采用3位分組法。從位分組法。從整數部分的最低位起,每整數部分的最低位起,每3位分成位分成1組,高位部分不組,高位部分不足足3位則通過加前導位則通過加前導0的方式補足的方式補足3位,然后把每位,然后把每3位二進制數用對應的八進制數來表示即可。位二進制數用對應的八進制數來表示即可。n例例1.8 將二進制整數將二進制整數(10111101)2轉換為八進制轉換為八進制整數。整數。解解 (10111101)2=(010 111 101)2= (275)81

37、2/13/2021編輯課件36進位制數之間的轉換進位制數之間的轉換4. 八進制整數轉換為二進制整數八進制整數轉換為二進制整數n八進制整數轉換為二進制整數只需要將每一八進制整數轉換為二進制整數只需要將每一位八進制數用對應的二進制數表示即可。位八進制數用對應的二進制數表示即可。n例例1.9 將八進制數將八進制數(377377)8轉換為二進轉換為二進制數。制數。解解 (177777)8=(001 111 111 111 111 111)2=(1111111111111111)212/13/2021編輯課件37進位制數之間的轉換進位制數之間的轉換5. 5. 二進制整數轉換為十六進制整數二進制整數轉換為

38、十六進制整數n將二進制整數轉換為十六進制整數采用將二進制整數轉換為十六進制整數采用4 4位分組位分組法。法。4 4位二進制數的不同取值可以一一對應的完位二進制數的不同取值可以一一對應的完整描述十六進制中的整描述十六進制中的0 0 9 9和和A A F F。n方法方法: : 從整數部分的最低位起,每從整數部分的最低位起,每4 4位分成位分成1 1組,組,高位部分不足高位部分不足4 4位則通過加前導位則通過加前導0 0的方式補足的方式補足4 4位,位,然后把每然后把每4 4位二進制數用對應的十六進制數來表位二進制數用對應的十六進制數來表示。示。n例例1.10 1.10 將二進制數將二進制數(101

39、11101)(10111101)2 2轉換為十六進轉換為十六進制數。制數。解解 (10111101)(10111101)2 2=(1011 1101)=(1011 1101)2 2=(BD)=(BD)161612/13/2021編輯課件38進位制數之間的轉換進位制數之間的轉換6. 6. 十六進制整數轉換為二進制整數十六進制整數轉換為二進制整數n十六進制數轉換為二進制數只需要將每一位十六進制數轉換為二進制數只需要將每一位十六進制數用對應的十六進制數用對應的4位二進制數表示即可。位二進制數表示即可。n例例1.11 將十六進制數將十六進制數(ABCD)2轉換為二進轉換為二進制數。制數。解解 (ABC

40、D)2=(1010 1011 1100 1101)2=(1010101111001101)212/13/2021編輯課件391.4.3 1.4.3 數的機器碼表示數的機器碼表示1. 機器數與真值機器數與真值n機器數機器數: 在計算機中,將一個數的最高位在計算機中,將一個數的最高位定義為符號位,其余各位為數值位。并且定義為符號位,其余各位為數值位。并且規定符號位之值為規定符號位之值為0表示正,符號位之值表示正,符號位之值為為1表示負。用這種方法表示的數稱為機表示負。用這種方法表示的數稱為機器數。器數。n真值真值: 機器數的數值稱為該機器數的真值。機器數的數值稱為該機器數的真值。也就是正、負號后跟

41、二進制數的絕對值就也就是正、負號后跟二進制數的絕對值就構成真值。構成真值。 12/13/2021編輯課件402. 2. 原碼原碼定義定義: 對于一個二進制數對于一個二進制數X,如果規定用最,如果規定用最高位為符號位,其余各位為該數的絕對值。高位為符號位,其余各位為該數的絕對值。并且規定符號位之值為并且規定符號位之值為0表示正,符號位之表示正,符號位之值為值為1表示負,則采用這種方式形成的二進表示負,則采用這種方式形成的二進制編碼稱為稱為該二進制數制編碼稱為稱為該二進制數X的原碼。的原碼。12/13/2021編輯課件41求十進制數的原碼表示求十進制數的原碼表示n例例1.12 求十進制數求十進制數

42、125和和-125的的8位、位、16位原位原碼表示。碼表示。解解 先求十進制數先求十進制數125和和-125的二進制表示:的二進制表示:(125)10=0X7D=(+1111101)2, 而而 (-125)10=-0X7D=(-1111101)2;根據定義:根據定義:+1111101原原=01111101 (8位)位)+1111101原原=0000000001111101(16位)位)而而: -1111101原原=11111101 (8位)位)-1111101原原=1000000001111101 (16位)位)12/13/2021編輯課件42真值真值0 0的原碼表示不惟一的原碼表示不惟一n值

43、得注意的是,根據定義,真值值得注意的是,根據定義,真值0的原碼表的原碼表示不惟一,有示不惟一,有+0和和-0之分。之分。 n+0原原=00000000 (8位)位)n-0原原=10000000 (8位)位)12/13/2021編輯課件433. 3. 補碼補碼n補碼的定義是正數的補碼等于正數的原碼,負數的補碼為補碼的定義是正數的補碼等于正數的原碼,負數的補碼為其原碼除符號位不動,其余各位變反再加其原碼除符號位不動,其余各位變反再加1所得。所得。n例例1.13 分別求十進制數分別求十進制數35和和-1在在8位機和位機和16位機中的補位機中的補碼表示。碼表示。解解 設設x1=35,x2=-1;在在8

44、位機中,位機中,x10,x1 補補=x1 原原 =00100011;x20,x2原原 =10000001, x2 補補 =11111110+1=11111111;n在例在例1.13中,如果令中,如果令x1和和x2都為零,則容易算出它們的補都為零,則容易算出它們的補碼都是零。也就是說,對于真值碼都是零。也就是說,對于真值0,其補碼是惟一的。即:,其補碼是惟一的。即:+0補補=-0補補=000000最右邊式子中最右邊式子中0的個數等于機器的字長數。的個數等于機器的字長數。 12/13/2021編輯課件444. 4. 反碼反碼n在計算機中,有時還會用到數的反碼。對正數而在計算機中,有時還會用到數的反

45、碼。對正數而言,其反碼與原碼、補碼的表示相同;對負數而言,其反碼與原碼、補碼的表示相同;對負數而言,反碼符號位的定義與原碼、補碼相同,但需言,反碼符號位的定義與原碼、補碼相同,但需要將對應原碼的數值位按位變反。要將對應原碼的數值位按位變反。n例例1.15 分別求十進制數分別求十進制數6和和-1在在8位機中的反碼位機中的反碼表示。表示。解解 6反反=00000110;-1反反=對對10000001的的數值位按位變反數值位按位變反=1111111012/13/2021編輯課件455 5碼的內存存儲形式碼的內存存儲形式n碼是指計算機內存中存儲的數據。根據存儲數據的性質,碼是指計算機內存中存儲的數據。

46、根據存儲數據的性質,碼可以分為數值碼、字符碼和圖象碼。碼可以分為數值碼、字符碼和圖象碼。n數值碼用于表示數的大小,常見的有整數和浮點數。數值碼用于表示數的大小,常見的有整數和浮點數。n字符碼用于表示英文字母、標點符號、控制字符以及漢字字符碼用于表示英文字母、標點符號、控制字符以及漢字和其它文字的編碼。和其它文字的編碼。n圖象碼是用于表示圖象中象素的顏色或灰度。雖然它們都圖象碼是用于表示圖象中象素的顏色或灰度。雖然它們都是以二進制碼的表現形式存儲在內存之中,但物理意義卻是以二進制碼的表現形式存儲在內存之中,但物理意義卻各不相同。各不相同。nC語言的基本處理對象是字符和數字。在語言的基本處理對象是

47、字符和數字。在16位計算機中,位計算機中,整型數占整型數占2個字節,在個字節,在32位計算機中,整型數占位計算機中,整型數占4個字節。個字節。 12/13/2021編輯課件461.4.4 1.4.4 字符的編碼表示字符的編碼表示n1字符的編碼的概念字符的編碼的概念n計算機在屏幕上能夠輸出英文、漢字,乃至各種各計算機在屏幕上能夠輸出英文、漢字,乃至各種各樣的民族文字,其基礎在于對字符進行編碼以及構樣的民族文字,其基礎在于對字符進行編碼以及構造相應的點陣字模。造相應的點陣字模。n用戶的字符輸入通過編碼在內存中以二進制數碼存用戶的字符輸入通過編碼在內存中以二進制數碼存儲,機器內部對字符的處理實際上是

48、對字符編碼的儲,機器內部對字符的處理實際上是對字符編碼的處理。處理。n輸出的時候則是通過字符的編碼去索引對應的點陣輸出的時候則是通過字符的編碼去索引對應的點陣字模到內存中,然后進一步通過內存中的點陣字模字模到內存中,然后進一步通過內存中的點陣字模去控制顯象管,在屏幕的指定位置將字符顯示出來。去控制顯象管,在屏幕的指定位置將字符顯示出來。12/13/2021編輯課件471.4.4 1.4.4 字符的編碼表示字符的編碼表示n解釋教材解釋教材:圖圖1.3 英文字符英文字符O和漢字字符中的點和漢字字符中的點陣字模示意圖陣字模示意圖n更正更正:大寫字母大寫字母O的二進制編碼依次是:的二進制編碼依次是:0

49、 x18,0 x24,0 x42, 0 x42, 0 x42, 0 x42, 0 x24, 0 x18。n中國的中國的“中中”字的二進制編碼按照從上到下,從字的二進制編碼按照從上到下,從左到右順序依次進行二進制編碼,共需要左到右順序依次進行二進制編碼,共需要32個字個字節。節。n更正更正:“中中”字前字前8個字節的二進制編碼是:個字節的二進制編碼是:0 x01,0 x80,0 x01,0 x80, 0 xff,0 xff,0 xc1,0 x83 12/13/2021編輯課件482 2ASCIIASCII碼碼n對于西文字符,其編碼國際上采用的是對于西文字符,其編碼國際上采用的是ASCII碼碼(A

50、merican Standard Code For Information Interchange),是美國國家信息交換標準字符碼的英文縮是美國國家信息交換標準字符碼的英文縮寫。寫。nASCII碼采用單字節編碼,并且規定字節的最高位留做校驗碼采用單字節編碼,并且規定字節的最高位留做校驗位,只有低位,只有低7位參與編碼。位參與編碼。nASCII碼字符集中共有碼字符集中共有128個字符的編碼。其中個字符的編碼。其中0 x00到到ox1f前前32個碼和個碼和0 x7f最后一個碼作為控制碼,如控制回車、最后一個碼作為控制碼,如控制回車、換行、振鈴、空等等;從換行、振鈴、空等等;從0 x20到到0 x7

51、e共共95個編碼,它們用個編碼,它們用來對數字字符來對數字字符0 9,大小寫英文字母,大小寫英文字母a z和和A Z,以及標點,以及標點符號。符號。n計算機的終端(鍵盤、顯示器)只能輸入和顯示這計算機的終端(鍵盤、顯示器)只能輸入和顯示這95個編碼個編碼對應的字符。同時,打印機也只能打印輸出這對應的字符。同時,打印機也只能打印輸出這95個編碼對應個編碼對應的字符。完整的的字符。完整的ASCII碼字符集請參閱附錄碼字符集請參閱附錄1。 12/13/2021編輯課件493 3漢字編碼漢字編碼 n根據標準規定和計算機的輸入、存儲和顯示過程,根據標準規定和計算機的輸入、存儲和顯示過程,漢字編碼有許多方

52、式。常用的有國標碼、區位碼、漢字編碼有許多方式。常用的有國標碼、區位碼、拼音碼、五筆字型碼和漢字的機內碼。拼音碼、五筆字型碼和漢字的機內碼。n拼音碼和五筆字型碼用于漢字的輸入。國標碼是拼音碼和五筆字型碼用于漢字的輸入。國標碼是我國于我國于1981年頒布的年頒布的通用漢字字符集通用漢字字符集(基本集基本集)及其交換碼標準及其交換碼標準規定的漢字字符編碼方案,標規定的漢字字符編碼方案,標準編號是準編號是GB2312 80總共收集了總共收集了7445個漢字、個漢字、字母、數字和符號。由于漢字屬大字符集,單個字母、數字和符號。由于漢字屬大字符集,單個字節不足以描述全部字符,因此漢字采用兩字節字節不足以

53、描述全部字符,因此漢字采用兩字節編碼方案。編碼方案。 12/13/2021編輯課件50漢字區位碼和機內碼漢字區位碼和機內碼n區位碼是將區位碼是將GB2312 80中的字符按其位置劃分為中的字符按其位置劃分為94個區,個區,每區每區94個字符的漢字編碼方案。區位碼是國標碼的一種變個字符的漢字編碼方案。區位碼是國標碼的一種變形碼,兩者之間的轉換可由下面的式子描述:形碼,兩者之間的轉換可由下面的式子描述:國標碼(十六進制)國標碼(十六進制)=區位碼(十六進制)區位碼(十六進制)+0 x2020n機內碼是計算機存儲和處理漢字時采用的漢字編碼。為了機內碼是計算機存儲和處理漢字時采用的漢字編碼。為了與基本

54、與基本ASCII相互區分,機內碼一般采用將國標碼兩個字相互區分,機內碼一般采用將國標碼兩個字節的每個字節的最高位置節的每個字節的最高位置“1”的方式形成。機內碼與國標的方式形成。機內碼與國標碼之間的轉換關系是:碼之間的轉換關系是:機內碼(十六進制)機內碼(十六進制)=國標碼(十六進制)國標碼(十六進制)+0 x8080n例如例如,中國的中國的“中中”字的機內碼是字的機內碼是0 xd0d6。因此它的國標。因此它的國標碼是碼是0 x5056,而它的區位碼是,而它的區位碼是0 x3036。 12/13/2021編輯課件511.5 1.5 算法及其表示算法及其表示n1.5.1 算法的定義算法的定義算法

55、是指為解決某個問題所采取的方法和步驟,并算法是指為解決某個問題所采取的方法和步驟,并且要具備下列性質。且要具備下列性質。(1) 有零個或多個執行算法所需要的數據作為輸入。有零個或多個執行算法所需要的數據作為輸入。(2) 有一個或多個經算法處理的數據作為輸出。這種有一個或多個經算法處理的數據作為輸出。這種數據也稱為算法的執行結果。數據也稱為算法的執行結果。(3) 應只包含有限個步驟,且執行算法所需的時間也應只包含有限個步驟,且執行算法所需的時間也是有限時間。算法的這種性質稱為算法的有限性或是有限時間。算法的這種性質稱為算法的有限性或有窮性。有窮性。(4) 算法每一步所規定的動作應該是唯一確定的,

56、沒算法每一步所規定的動作應該是唯一確定的,沒有二義的。算法的這種性質稱為算法的確定性。有二義的。算法的這種性質稱為算法的確定性。 12/13/2021編輯課件521.5.2 1.5.2 算法的表示算法的表示n選用一種合適的工具或方法來表達算法設計者的算法思想選用一種合適的工具或方法來表達算法設計者的算法思想稱為算法的表示或算法的描述。稱為算法的表示或算法的描述。n算法的表示方式多種多樣,如自然語言方式,流程圖方式、算法的表示方式多種多樣,如自然語言方式,流程圖方式、表格方式、偽碼方式表格方式、偽碼方式,等等。等等。n自然語言方式顯然非常容易理解,但是在將算法轉換為具自然語言方式顯然非常容易理解

57、,但是在將算法轉換為具體程序方面不夠直觀,它最適合表達算法的設計思想。體程序方面不夠直觀,它最適合表達算法的設計思想。n流程圖方式則非常具體,易于將它描述的算法編寫成具體流程圖方式則非常具體,易于將它描述的算法編寫成具體的程序,但是在程序規模變大的情況下,用流程圖來完整的程序,但是在程序規模變大的情況下,用流程圖來完整描述算法不僅多余,而且不太可能。因此,流程圖方式尤描述算法不僅多余,而且不太可能。因此,流程圖方式尤其適合初學者。本書重點介紹流程圖方法。其適合初學者。本書重點介紹流程圖方法。 12/13/2021編輯課件531. 1. 流程圖的圖符流程圖的圖符n流程圖又稱為框圖。它是用它的圖符

58、來表流程圖又稱為框圖。它是用它的圖符來表示算法的每一步驟以及這些步驟之間的相示算法的每一步驟以及這些步驟之間的相互聯系。學習用流程圖來表達自己的算法互聯系。學習用流程圖來表達自己的算法思想首先要從認識組成流程圖的圖符的功思想首先要從認識組成流程圖的圖符的功能入手。流程圖圖符及其功能由表能入手。流程圖圖符及其功能由表1.4描述。描述。 12/13/2021編輯課件5412/13/2021編輯課件552. 2. 用流程圖描述算法用流程圖描述算法n問題問題 輸入輸入10個整數,統計正數和負數的個整數,統計正數和負數的個數,計算正數和負數的累加和與平均值。個數,計算正數和負數的累加和與平均值。n算法設

59、計算法設計 用變量用變量x存儲輸入的整數,存儲輸入的整數,k表示表示輸入的次數,輸入的次數,positive表示正數的個數,表示正數的個數,negtive表示負數的個數,表示負數的個數,sum_pos和和sum_neg分別表示正數和負數的累加和,分別表示正數和負數的累加和,even_pos和和even_neg分別表示正數和負分別表示正數和負數的平均值。數的平均值。12/13/2021編輯課件56該問題算法的自然語言描述該問題算法的自然語言描述(1) (1) (1) (1) 定義變量定義變量x x,k k,positivepositive,negtivenegtive,sum_possum_po

60、s,sum_negsum_neg,even_poseven_pos和和even_negeven_neg。(2) positive(2) positive,negtive negtive ,sum_possum_pos和和sum_negsum_neg清零,清零,k k賦初值賦初值1 1。(3) (3) 判斷判斷k11k11嗎?(或嗎?(或k k 1010嗎?)如果是,順序往(嗎?)如果是,順序往(4 4)步執)步執行;否則轉步驟(行;否則轉步驟(1010)。)。(4) (4) 從鍵盤輸入一個整數并且賦給變量從鍵盤輸入一個整數并且賦給變量x x。(5) (5) 判斷判斷x x是否等于零?如果是,轉步驟(是否等于零?如果

溫馨提示

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

最新文檔

評論

0/150

提交評論