




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
C語言程序設計TheCProgrammingLanguage華中科技大學計算機學院
曹計昌8/4/20231華中科技大學計算機學院C語言程序設計TheCProgrammingLangu第0章C語言程序設計課程安排一.教材(Textbook) 曹計昌,盧萍,李開.C語言程序設計.科學出版社,2008.2李開,盧萍,曹計昌.C語言實驗與課程設計.科學出版社,2011.3二.參考書目(ReferenceBooks)(1)BrianW.Kernighan,DennisM.Ritchie.THECPROGRAMMINGLANGUAGE.清華大學出版社.PRENTICEHALL(注:該書已有中譯本)(2)曹化工秦友淑.C語言程序設計典型題解析及自測試題.西北工業大學出版社(3)秦友淑曹化工.C語言程序設計教程(第二版).華中科技大學出版社,2002年12月8/4/20232華中科技大學計算機學院第0章C語言程序設計課程安排一.教材(Textbook)7三.ISO的C語言標準和相關資料(ISO/IECCStandardandOtherMaterials)
(C語言標準,網站等資料)(1)最新標準:ISO/IEC9899:1999(E) ISO(theInternationalOrganizationforStandardization)and IEC(theInternationalElectrotechnicalCommission)(2)C始于:”TheCReferenceManual”byDennisM.Ritchie,aversionofwhichwaspublishedinTheCProgrammingLanguagebyBrianW.KernighanandDennis
M.Ritchie,Prentice-Hall,Inc.,(1978).CopyrightownedbyAT&T.(3)DennisRitchieHomePage“TheDevelopmentoftheCLanguage”,byDennisRitchie ANSICstandardlibrary–Wikipedia; BrianW_Kernighan; n843,n897,n2794等C語言方面的相關標準資料,文檔,網頁和網站8/4/20233華中科技大學計算機學院三.ISO的C語言標準和相關資料(ISO/IECCSta三.本課程提供的其它資料(1)C語言程序設計課程課件ppt(2)C語言標準,網站等資料(前頁已經介紹)(3)C語言程序設計(中文版)源程序(4)C語言課程設計2010(09級)(5)2010級ACM班C語言程序設計課程資料(6)漢字庫--16乘16點陣(7)TurboC2.0函數中文說明大全8/4/20234華中科技大學計算機學院三.本課程提供的其它資料(1)C語言程序設計課程課件ppt2010級ACM班C語言程序設計課程資料(1)TheCProgrammingLanguage-ppt(2)TheCProgrammingLanguage,2ndtextbook(3)3TheCProgrammingLanguage-sourcefiles(4)《C程序設計語言》英文版第2版課后習題與答案(5)C語言課程設計2011ACM班(6)教學日歷-SyllabusofTheCProgrammingLanguage8/4/20235華中科技大學計算機學院2010級ACM班C語言程序設計課程資料(1)TheC(4)關于C語言的圣經”一書的作者即:K&RC,即C創始人“TheCProgrammingLanguage”,“C語言的圣經”一書的作者DennisM.RitchiereceivedBachelor'sandadvanceddegreesfromHarvardUniversity,whereasanundergraduateIconcentratedinPhysicsandasagraduatestudentinAppliedMathematics.Thesubjectofmy1968doctoralthesiswassubrecursivehierarchiesoffunctions.BrianW.KernighanisheadoftheComputingStructuresResearchDepartment,BellLaboratories,MurrayHill,NewJersey.
HereceivedaB.A.ScinengineeringphysicsfromtheUniversityofTorontoin1964,andaPh.D.inelectricalengineeringfromPrincetonUniversityin1969.
8/4/20236華中科技大學計算機學院(4)關于C語言的圣經”一書的作者即:K&RC,即C創始人學時安排,考核方式四.學時安排(Arrangementofthehouses) 講課:52+4學時實驗24hours五.考核方式:(Examination)
閉卷筆試評分:百分制 其中:考試成績:50%平時成績:50%(含實驗)(作業,實驗所占比例要與其他老師商量).注:有≤5分內容屬教材中未講內容,目的是鼓勵自學.8/4/20237華中科技大學計算機學院學時安排,考核方式四.學時安排(Arrangementof六.學習方法(Studymethods)(1)課前要預習,課堂要專心,課后要復習(2)通過預習、聽課、復習、以及作業和實驗,確保消化課堂和教材的相關內容。(3)要學會自己看書、理解,逐步減少對老師的依賴,培養良好的自學能力。同時,由于學時緊張,假期的沖擊,講課速度會逐步加快到一個合適的水平,以保證教學計劃的完成,因此課前課后一定研讀教材。(4)認真、獨立的完成作業。(5)要重視實驗。上機實驗前要求預先編好有關程序,把上機的重點放到程序的編輯、修改、編譯、鏈接、跟蹤、調試程序方面來。放到觀察程序運行過程中的中間結果和運行完畢后的運行結果方面來。最終使自己的大腦變成一臺“計算機”,能夠在腦袋中運行自己的程序,判斷各種情況下程序的走向等等。
8/4/20238華中科技大學計算機學院六.學習方法(Studymethods)(1)課前要預七.定位問題(Orientation)培養的學生應該是將來能夠與MicroSoft的程序員,軟件大師們一爭高下的人才,應該是有朝一日能夠根據實際應用需求,發明創造新型計算機程序設計語言的人才。因此要高標準、嚴要求。不僅要掌握C的語法、語義,學好用好C;而且要了解各種語言成分產生、流傳、延續、發展的深層次原因和需求背景。為學習后續課程,為將來能夠熟練的用C寫系統軟件、底層軟件、共享軟件奠定堅實的語言基礎。8/4/20239華中科技大學計算機學院七.定位問題(Orientation)培養的學生應該是將來能八.建議和意見
歡迎就教學方法,講課速度,教學內容的深度和廣度提出好的建議和意見,以便把本門課程的教學組織實施好。8/4/202310華中科技大學計算機學院八.建議和意見 歡迎就教學方法,講課速度,教學內容的深度和廣C語言程序設計-第1章概論C語言是目前全球流傳最廣、使用最多的程序設計語言。本章介紹內容為:學習C語言程序設計的第一個例子。C語言的產生與發展,C語言的語言特征,C語言的標準。計算機硬件系統的組成,數的編碼表示以及數在內存中的表現形式。算法的概念及其表示方法。對C語言程序設計作了概略性的介紹。同時介紹了N進制數,數之間轉換的方法,以及原碼、補碼、反碼及其相關運算。8/4/202311華中科技大學計算機學院C語言程序設計-第1章概論C語言是目前全球流傳最廣、使用最C語言的應用領域1.操作系統設計 UNIX,LINUX,WINDOWS底層及驅動等.2.計算機網絡與通信系統 TCP/IP協議棧,路由軟件,交換機軟件等.3.系統軟件 各種DBMS,如Oracle,Sybase,MSSQLServer等;各種編譯器軟件.4.嵌入式系統(民用) 汽車(40多個微處理器系統),手機,U盤驅動,MP3等;嵌入式操作系統;智能卡系統等.5.國防,軍工,航空航天,工業控制系統均以C作為軟件開發的主流語言.8/4/202312華中科技大學計算機學院C語言的應用領域1.操作系統設計7/31/202312華中1.1學習C語言程序設計的第一個例子
例1.1輸入自己的名字的漢語拼音,要計算機問候自己并且輸出這是自己學習C語言的第一個程序的句子。8/4/202313華中科技大學計算機學院1.1學習C語言程序設計的第一個例子 例1.1輸入例1.1的程序#include"stdio.h"voidshow(charstr[]);voidmain(void){ charname[20]; printf("Inputyournameplease!\n"); gets(name); printf("Hello%s!\n",name); show(name);}voidshow(charstr[]){ printf("Thisisthefirstprogramfor%stolearnCprogramming!\n",str);}8/4/202314華中科技大學計算機學院例1.1的程序#include"stdio.h"7/31/操作例1.1的程序進入編輯按F10功能鍵激活菜單用光標左右移動鍵選File選New然后回車進入編輯狀態。編輯將上面的程序從鍵盤輸入到計算機中完成源程序的編輯F2保存.編譯鏈接:按F10功能鍵激活菜單,選Run然后回車。此時源程序會被編譯形成.OBJ文件、再通過鏈接形成.EXE文件,最后運行該.EXE文件。過程:.C源文件.OBJ文件.EXE文件運行得到結果觀看結果:Alt-F58/4/202315華中科技大學計算機學院操作例1.1的程序進入編輯按F10功能鍵激活菜單用光標左例1.1的程序的結果人機交互與運行結果如下:Inputyournameplease!JichangCao(此為輸入信息)HelloJichangCao!ThisisthefirstprogramforJichangCaotolearnCprogramming!8/4/202316華中科技大學計算機學院例1.1的程序的結果人機交互與運行結果如下:7/31/202#include"stdio.h"voidshow(charstr[]);voidmain(void){ charname[20]; printf("Inputyournameplease!\n"); gets(name); printf("Hello%s!\n",name); show(name);}voidshow(charstr[]){ printf("Thisisthefirstprogramfor%stolearnCprogramming!\n",str);}1.1.2解釋分析第一個C程序8/4/202317華中科技大學計算機學院#include"stdio.h"1.1.2解釋分析第一1.2C語言的產生、發展與語言特征
1.2.1C語言的產生與發展
FORTRAN(1957年)
ALGOL60(1960年)傳統C或K&RC(1978)
CPL(1963年)ANSIC(1989,美國國家標準)
BCPL(1967年)標準C(ISO/IEC9899:1990,俗稱C90)
B(1969年-1970年)最新標準C(ISO/IEC9899:1999俗稱C99)
C(1971年-1973年)
圖1.1C語言的繼承、產生與發展歷程8/4/202318華中科技大學計算機學院1.2C語言的產生、發展與語言特征
1.2.1C語言的1.2.3C語言的語言特征語言簡潔緊湊目標代碼質量高語言表達能力強流程控制結構化弱類型“中級語言”特性書寫自由、使用靈活可移植性好8/4/202319華中科技大學計算機學院1.2.3C語言的語言特征語言簡潔緊湊7/31/20231.3計算機硬件系統一臺計算機硬件系統由CPU、內存、外存、其他I/O設備和總線組成。
見圖1.2計算機硬件系統組成的示意圖CPU又稱為中央處理器。CPU又是由運算器、控制器、指令計數器、內部寄存器、標志寄存器等部件組成。內存又稱為內存儲器,用以存放程序和數據。總線是用以連接計算機各個部件的線路,它完成各個部件之間的信息傳送。根據傳送信號種類的不同,總線又分成地址總線、數據總線和控制總線。8/4/202320華中科技大學計算機學院1.3計算機硬件系統一臺計算機硬件系統由CPU、內存、內存編址,內存容量,字長內存以字節為單位線性連續編址。即按照0x0000,0x0001,0x0002,…的方式;從低地址端開始向高地址端為每一個內存字節進行順序連續編號。1024個字節稱為1K字節,1024K字節稱為1M字節,1024M字節稱為1G字節。1024G字節稱為1T字節。CPU數據總線的寬度(bit數)稱為計算機的機器字長。對8位CPU,機器字長為1字節;對16位CPU,機器字長為2字節;對32位CPU,機器字長為4字節。8/4/202321華中科技大學計算機學院內存編址,內存容量,字長內存以字節為單位線性連續編址。即按照外存和其他I/O設備外存指計算機的外存儲器。常用的硬盤、軟盤、U盤、光盤、以及磁盤陣列都屬于外存。外存存儲的信息在斷電之后仍然能夠保存,這是外存的第一個特點。其他I/O設備:鍵盤,顯示器,打印機,繪圖儀8/4/202322華中科技大學計算機學院外存和其他I/O設備外存指計算機的外存儲器。常用的硬盤、軟1.4數和字符的機器碼表示1.4.1進位計數制數量用于描述事物的多少。數目則是表示事物的個數。而表示數目的符號則是數字,往往簡稱為數。一個數在不同的進位制下具有不同的表示,因而形成數制的概念。數制是關于記數的法則。根據進位基數的不同,常用的有十進制、二進制、八進制、十六進制等。8/4/202323華中科技大學計算機學院1.4數和字符的機器碼表示1.4.1進位計數制7/1.二進制數及其運算1)二進制數二進制數是由0和1組成的數字串。對于一個二進制數來講,它具有兩個下面基本特點:(1)只有0和1兩個不同的數字符號。(2)逢2進位1。8/4/202324華中科技大學計算機學院1.二進制數及其運算1)二進制數7/31/202324華中二進制數的權值對由進位計數制描述的數來講,一個數字符號在該數的不同的數位具有不同的權(也稱為權值或基值),因此所表現的值是不一樣的。二進制數也是如此。二進制數中不同的數位所具有的權值見教材圖1.3.二進制數整數(10110110)2的值是: (10110111)2=127+026+125+124+023+122+121+120=(183)10而帶二進制小數的二進制數(1011.1101)2的值是: (1011.1101)2=123+022+121+120+12-1 +12-2+02-3+12-4=(11.8125)108/4/202325華中科技大學計算機學院二進制數的權值對由進位計數制描述的數來講,一個數字符號在該數2)二進制數的運算二進制加法規則有四條:①0+0=0 ②0+1=1+0=1 ③1+1=0向高位進位1 ④1+1+1=1向高位進位1二進制減法規則也有四條:①0-0=0 ②1-1=0 ③1-0=1 ④0-1=1向高位借位18/4/202326華中科技大學計算機學院2)二進制數的運算二進制加法規則有四條:7/31/2023二進制加法舉例例1.2二進制加法舉例,求(10110111)2+(01011011)2的和。 10110111+ 01011011進位1111111100010010所以,(10110111)2+(01011011)2=(100010010)28/4/202327華中科技大學計算機學院二進制加法舉例例1.2二進制加法舉例,求(1011011二進制減法舉例例1.3二進制減法舉例,求(10110111)2-(01011011)2的差。借位 1011000 10110111 - 01011011 01011100所以,(10110111)2-(01011011)2=(01011100)28/4/202328華中科技大學計算機學院二進制減法舉例例1.3二進制減法舉例,求(10110112.八進制數及其運算八進制數是由0到7組成的數字串。八進制數具有如下兩個基本特點:(1)只有0,1,2,3,4,5,6,7八個不同的數字符號。(2)逢8進位1。在C語言中,通過加前導零的方式來表示一個數是八進制數。如:0136表示的是八進制數(136)8。8/4/202329華中科技大學計算機學院2.八進制數及其運算八進制數是由0到7組成的數字串。八進制3.十六進制數及其運算將4位二進制數組合成為十六進制數。與二進制、八進制數類似,十六進制數也有兩個基本特點:(1)只有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F十六個不同的數字符號(AF也可以采用小寫英文字母af)。這十六個數字符號與二進制、八進制、十進制數之間的關系如表1.2所示。(2)逢16進位1。在C語言中,通過加前導0x或前導0X的方式來表示一個數是十六進制數。如:0x2d5b表示的是十六進制數(2d5b)16。0XABCD也是合法的十六進制數。8/4/202330華中科技大學計算機學院3.十六進制數及其運算將4位二進制數組合成為十六進制數。與二表1.2十六進制的16個不同數字符號與十進制、八進制、二進制數之間的關系
8/4/202331華中科技大學計算機學院表1.2十六進制的16個不同數字符號與十進制、八進制、二進制十六進制加減法運算舉例例1.5十六進制加減法運算舉例,求0XABCD與(2d5b)16的和,以及0XABCD與(2d5b)16的差。解0XABCD+(2d5b)16=0XD9280XABCD-(2d5b)16=0x7E728/4/202332華中科技大學計算機學院十六進制加減法運算舉例例1.5十六進制加減法運算舉例,求1.4.2進位制數之間的轉換1.十進制整數轉換為二進制整數8/4/202333華中科技大學計算機學院1.4.2進位制數之間的轉換1.十進制整數轉換為二進制進位制數之間的轉換2.二進制整數轉換為十進制整數用按權展開的方式即可求得該數的十進制表示。例1.7二進制數(10111101)2轉換為十進制數。解(10111101)2=127+026+125+124+123+122+021+120 =128+32+16+8+4+1=(189)108/4/202334華中科技大學計算機學院進位制數之間的轉換2.二進制整數轉換為十進制整數7/31/進位制數之間的轉換3.二進制整數轉換為八進制整數二進制數轉換為八進制數可以采用3位分組法。從整數部分的最低位起,每3位分成1組,高位部分不足3位則通過加前導0的方式補足3位,然后把每3位二進制數用對應的八進制數來表示即可。例1.8將二進制整數(10111101)2轉換為八進制整數。 解(10111101)2=(010111101)2=(275)88/4/202335華中科技大學計算機學院進位制數之間的轉換3.二進制整數轉換為八進制整數7/31/進位制數之間的轉換4.八進制整數轉換為二進制整數八進制整數轉換為二進制整數只需要將每一位八進制數用對應的二進制數表示即可。例1.9將八進制數(377377)8轉換為二進制數。解(177777)8=(001111111111111111)2=(1111111111111111)28/4/202336華中科技大學計算機學院進位制數之間的轉換4.八進制整數轉換為二進制整數7/31/進位制數之間的轉換5.二進制整數轉換為十六進制整數將二進制整數轉換為十六進制整數采用4位分組法。4位二進制數的不同取值可以一一對應的完整描述十六進制中的09和AF。方法:從整數部分的最低位起,每4位分成1組,高位部分不足4位則通過加前導0的方式補足4位,然后把每4位二進制數用對應的十六進制數來表示。例1.10將二進制數(10111101)2轉換為十六進制數。 解(10111101)2=(10111101)2=(BD)168/4/202337華中科技大學計算機學院進位制數之間的轉換5.二進制整數轉換為十六進制整數7/31進位制數之間的轉換6.十六進制整數轉換為二進制整數十六進制數轉換為二進制數只需要將每一位十六進制數用對應的4位二進制數表示即可。例1.11將十六進制數(ABCD)2轉換為二進制數。 解(ABCD)2=(1010101111001101)2=(1010101111001101)28/4/202338華中科技大學計算機學院進位制數之間的轉換6.十六進制整數轉換為二進制整數7/311.4.3數的機器碼表示1.機器數與真值機器數:在計算機中,將一個數的最高位定義為符號位,其余各位為數值位。并且規定符號位之值為0表示正,符號位之值為1表示負。用這種方法表示的數稱為機器數。真值:機器數的數值稱為該機器數的真值。也就是正、負號后跟二進制數的絕對值就構成真值。8/4/202339華中科技大學計算機學院1.4.3數的機器碼表示1.機器數與真值7/31/202.原碼 定義:對于一個二進制數X,如果規定用最高位為符號位,其余各位為該數的絕對值。并且規定符號位之值為0表示正,符號位之值為1表示負,則采用這種方式形成的二進制編碼稱為稱為該二進制數X的原碼。8/4/202340華中科技大學計算機學院2.原碼7/31/202340華中科技大學計算機學院求十進制數的原碼表示例1.12求十進制數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位)8/4/202341華中科技大學計算機學院求十進制數的原碼表示例1.12求十進制數125和-125真值0的原碼表示不惟一值得注意的是,根據定義,真值0的原碼表示不惟一,有+0和-0之分。
[+0]原=00000000(8位)[-0]原=10000000(8位)8/4/202342華中科技大學計算機學院真值0的原碼表示不惟一值得注意的是,根據定義,真值0的原碼表3.補碼補碼的定義是正數的補碼等于正數的原碼,負數的補碼為其原碼除符號位不動,其余各位變反再加1所得。例1.13分別求十進制數35和-1在8位機和16位機中的補碼表示。解設x1=35,x2=-1; 在8位機中,∵x1>0,∴[x1]補=[x1]原=00100011; ∵x2<0,∴[x2]原=10000001,[x2]補=11111110+1=11111111;在例1.13中,如果令x1和x2都為零,則容易算出它們的補碼都是零。也就是說,對于真值0,其補碼是惟一的。即: [+0]補=[-0]補=000…000 最右邊式子中0的個數等于機器的字長數。8/4/202343華中科技大學計算機學院3.補碼補碼的定義是正數的補碼等于正數的原碼,負數的補碼為4.反碼在計算機中,有時還會用到數的反碼。對正數而言,其反碼與原碼、補碼的表示相同;對負數而言,反碼符號位的定義與原碼、補碼相同,但需要將對應原碼的數值位按位變反。例1.15分別求十進制數6和-1在8位機中的反碼表示。 解[6]反=00000110;[-1]反=對10000001的數值位按位變反=111111108/4/202344華中科技大學計算機學院4.反碼在計算機中,有時還會用到數的反碼。對正數而言,其反5.碼的內存存儲形式碼是指計算機內存中存儲的數據。根據存儲數據的性質,碼可以分為數值碼、字符碼和圖象碼。數值碼用于表示數的大小,常見的有整數和浮點數。字符碼用于表示英文字母、標點符號、控制字符以及漢字和其它文字的編碼。圖象碼是用于表示圖象中象素的顏色或灰度。雖然它們都是以二進制碼的表現形式存儲在內存之中,但物理意義卻各不相同。C語言的基本處理對象是字符和數字。在16位計算機中,整型數占2個字節,在32位計算機中,整型數占4個字節。8/4/202345華中科技大學計算機學院5.碼的內存存儲形式碼是指計算機內存中存儲的數據。根據存儲數1.4.4字符的編碼表示1.字符的編碼的概念計算機在屏幕上能夠輸出英文、漢字,乃至各種各樣的民族文字,其基礎在于對字符進行編碼以及構造相應的點陣字模。用戶的字符輸入通過編碼在內存中以二進制數碼存儲,機器內部對字符的處理實際上是對字符編碼的處理。輸出的時候則是通過字符的編碼去索引對應的點陣字模到內存中,然后進一步通過內存中的點陣字模去控制顯象管,在屏幕的指定位置將字符顯示出來。8/4/202346華中科技大學計算機學院1.4.4字符的編碼表示1.字符的編碼的概念7/31/21.4.4字符的編碼表示解釋教材:圖1.3英文字符O和漢字字符中的點陣字模示意圖更正:大寫字母O的二進制編碼依次是:0x18,0x24,0x42,0x42,0x42,0x42,0x24,0x18。中國的“中”字的二進制編碼按照從上到下,從左到右順序依次進行二進制編碼,共需要32個字節。更正:“中”字前8個字節的二進制編碼是:0x01,0x80,0x01,0x80,0xff,0xff,0xc1,0x838/4/202347華中科技大學計算機學院1.4.4字符的編碼表示解釋教材:圖1.3英文字符O2.ASCII碼對于西文字符,其編碼國際上采用的是ASCII碼(AmericanStandardCodeForInformationInterchange),是美國國家信息交換標準字符碼的英文縮寫。ASCII碼采用單字節編碼,并且規定字節的最高位留做校驗位,只有低7位參與編碼。ASCII碼字符集中共有128個字符的編碼。其中0x00到ox1f前32個碼和0x7f最后一個碼作為控制碼,如控制回車、換行、振鈴、空等等;從0x20到0x7e共95個編碼,它們用來對數字字符09,大小寫英文字母az和AZ,以及標點符號。計算機的終端(鍵盤、顯示器)只能輸入和顯示這95個編碼對應的字符。同時,打印機也只能打印輸出這95個編碼對應的字符。完整的ASCII碼字符集請參閱附錄1。8/4/202348華中科技大學計算機學院2.ASCII碼對于西文字符,其編碼國際上采用的是ASCII3.漢字編碼根據標準規定和計算機的輸入、存儲和顯示過程,漢字編碼有許多方式。常用的有國標碼、區位碼、拼音碼、五筆字型碼和漢字的機內碼。拼音碼和五筆字型碼用于漢字的輸入。國標碼是我國于1981年頒布的《通用漢字字符集(基本集)及其交換碼標準》規定的漢字字符編碼方案,標準編號是GB231280總共收集了7445個漢字、字母、數字和符號。由于漢字屬大字符集,單個字節不足以描述全部字符,因此漢字采用兩字節編碼方案。8/4/202349華中科技大學計算機學院3.漢字編碼根據標準規定和計算機的輸入、存儲和顯示過程,漢漢字區位碼和機內碼區位碼是將GB231280中的字符按其位置劃分為94個區,每區94個字符的漢字編碼方案。區位碼是國標碼的一種變形碼,兩者之間的轉換可由下面的式子描述: 國標碼(十六進制)=區位碼(十六進制)+0x2020機內碼是計算機存儲和處理漢字時采用的漢字編碼。為了與基本ASCII相互區分,機內碼一般采用將國標碼兩個字節的每個字節的最高位置“1”的方式形成。機內碼與國標碼之間的轉換關系是: 機內碼(十六進制)=國標碼(十六進制)+0x8080例如,中國的“中”字的機內碼是0xd0d6。因此它的國標碼是0x5056,而它的區位碼是0x3036。8/4/202350華中科技大學計算機學院漢字區位碼和機內碼區位碼是將GB231280中的字符按其位1.5算法及其表示1.5.1算法的定義 算法是指為解決某個問題所采取的方法和步驟,并且要具備下列性質。(1)有零個或多個執行算法所需要的數據作為輸入。(2)有一個或多個經算法處理的數據作為輸出。這種數據也稱為算法的執行結果。(3)應只包含有限個步驟,且執行算法所需的時間也是有限時間。算法的這種性質稱為算法的有限性或有窮性。(4)算法每一步所規定的動作應該是唯一確定的,沒有二義的。算法的這種性質稱為算法的確定性。8/4/202351華中科技大學計算機學院1.5算法及其表示1.5.1算法的定義7/31/201.5.2算法的表示選用一種合適的工具或方法來表達算法設計者的算法思想稱為算法的表示或算法的描述。算法的表示方式多種多樣,如自然語言方式,流程圖方式、表格方式、偽碼方式,等等。自然語言方式顯然非常容易理解,但是在將算法轉換為具體程序方面不夠直觀,它最適合表達算法的設計思想。流程圖方式則非常具體,易于將它描述的算法編寫成具體的程序,但是在程序規模變大的情況下,用流程圖來完整描述算法不僅多余,而且不太可能。因此,流程圖方式尤其適合初學者。本書重點介紹流程圖方法。8/4/202352華中科技大學計算機學院1.5.2算法的表示7/31/202352華中科技大學計1.流程圖的圖符流程圖又稱為框圖。它是用它的圖符來表示算法的每一步驟以及這些步驟之間的相互聯系。學習用流程圖來表達自己的算法思想首先要從認識組成流程圖的圖符的功能入手。流程圖圖符及其功能由表1.4描述。8/4/202353華中科技大學計算機學院1.流程圖的圖符流程圖又稱為框圖。它是用它的圖符來表示算法8/4/202354華中科技大學計算機學院7/31/202354華中科技大學計算機學院2.用流程圖描述算法問題輸入10個整數,統計正數和負數的個數,計算正數和負數的累加和與平均值。算法設計用變量x存儲輸入的整數,k表示輸入的次數,positive表示正數的個數,negtive表示負數的個數,sum_pos和sum_neg分別表示正數和負數的累加和,even_pos和even_neg分別表示正數和負數的平均值。8/4/202355華中科技大學計算機學院2.用流程圖描述算法問題輸入10個整數,統計正數和負數該問題算法的自然語言描述(1)(1)定義變量x,k,positive,negtive,sum_pos,sum_neg,even_pos和even_neg。(2)positive,negtive,sum_pos和sum_neg清零,k賦初值1。(3)判斷k<11嗎?(或k10嗎?)如果是,順序往(4)步執行;否則轉步驟(10)。(4)從鍵盤輸入一個整數并且賦給變量x。(5)判斷x是否等于零?如果是,轉步驟(9);否則順序執行步驟(6)。(6)判斷x是否大于零?如果是,轉步驟(8);否則順序執行步驟(7)。(7)負數個數negtive加1,負數x加到負數累加和變量sum_neg中;轉步驟(9);8/4/202356華中科技大學計算機學院該問題算法的自然語言描述(1)(1)定義變量x,k,po該問題算法的自然語言描述(2)(8)正數個數positive加1,正數x加到正數累加和變量sum_pos中;順序執行步驟(9)。(9)次數k加1,轉步驟(3)。(10)計算正數平均值(sum_pos/positive)并賦給變量even_pos,計算負數平均值(sum_neg/negtive)并賦給變量even_neg。(11)輸出正數個數positive,正數累加和sum_pos,正數平均值even_pos。輸出負數個數negtive,負數累加和sum_neg,負數平均值even_neg。(12)結束。8/4/202357華中科技大學計算機學院該問題算法的自然語言描述(2)(8)正數個數positiv8/4/202358華中科技大學計算機學院7/31/202358華中科技大學計算機學院1.5.3算法的實現#include"stdio.h"/*下面的main為主函數名,前面的void表示無返回值,括號中的void表示無參*/voidmain(void){/*main函數的函數體開始*/ intx,k,positive,negtive,sum_pos,sum_neg;/*說明語句說明各個整型變量*/ floateven_pos,even_neg;/*說明語句說明各個浮點型變量*/ k=1;/*循環次數變量k賦初值1*/ positive=negtive=sum_pos=sum_neg=0;/*具有累加作用的變量清零*/8/4/202359華中科技大學計算機學院1.5.3算法的實現#include"stdio.hwhile(k<11)/*如果k<11,執行while循環體,否則轉到循環體后一語句執行*/ {/*while循環體開始*/ scanf("%d",&x);/*接受從鍵盤輸入的一個整數,并賦給變量x*/ if(x!=0)/*如果x0,執行外層if塊,否則轉執行外層if塊后一語句執行*/ {/*外層if塊開始*/ if(x>0)/*如果x>0,執行內層if塊,否則執行else塊*/ {/*內層if塊開始*/ positive++;/*正整數個數加1*/ sum_pos+=x;/*將正整數加到sum_pos中*/ }/*內層if塊結束*/ else/*如果x<0,轉到此處執行*/ {/*else塊開始*/ ++negtive;/*負整數個數加1*/ sum_neg+=x;/*將負整數加到sum_neg中*/ }/*else塊結束*/ }/*外層if塊結束*/ k++;/*循環次數變量k加1*/ }/*while循環體結束*/8/4/202360華中科技大學計算機學院while(k<11)/*如果k<11,執行whieven_pos=(float)sum_pos/positive;/*計算正整數平均值并賦給even_pos*/ even_neg=(float)sum_neg/negtive;/*計算負整數平均值并賦給even_neg*/ printf("positive=%d\tsum_pos=%d\n",positive,sum_pos);/*輸出正數個數及和*/ printf("even_pos=%6.2f\n",even_pos);/*輸出正整數的平均值*/ printf("negtive=%d\tsum_neg=%d\n",negtive,sum_neg);/*輸出負數個數及和*/ printf("even_neg=%6.2f\n",even_neg);/*輸出負整數的平均值*/}/*main函數的函數體結束*/輸入10個整數及程序的運行結果如下:80-3-5-7596-1620(符號表示回車,)positive=5sum_pos=48even_pos=9.60negtive=4sum_neg=-31even_neg=-7.758/4/202361華中科技大學計算機學院even_pos=(float)sum_pos/posit1.5.4程序中的語句1.說明語句C語言中的說明語句用來說明變量的名字和數據類型.如例1.18程序中: intx,k,positive,negtive,sum_pos,sum_neg; floateven_pos,even_neg; 都是說明語句。第一個說明語句用int將變量x,k,positive,negtive,sum_pos,sum_neg說明成為整型變量。第二個說明語句用float將變量even_pos,even_neg說明為浮點型變量。C語言規定,說明語句一定要先給出,然后才允許寫出可執行語句。即:說明語句一定要位于可執行語句的前面。
8/4/202362華中科技大學計算機學院1.5.4程序中的語句1.說明語句7/31/2023622.可執行語句可執行語句將被編譯器編譯成計算機要執行的指令序列。C語言中的可執行語句有10種。即:常用語句7種:表達式語句,復合句,順序if-else語句,switch語句,選擇while語句,for語句,do-while語句循環使用少的語句3種:break語句,continue語句,以及goto語句。8/4/202363華中科技大學計算機學院2.可執行語句可執行語句將被編譯器編譯成計算機要執行的指令序1)表達式語句表達式語句是由C語言的表達式以及末尾的分號組成的語句。如:k=1是簡單的賦值表達式,在其后加上一個分號,則k=1;就構成了簡單賦值語句;它將賦值號“=”右邊的值賦給它左邊的變量。sum_pos+=x是一個復合賦值表達式,而sum_pos+=x;就是一個復合賦值語句;sum_pos+=x的等價表示是:sum_pos=sum_pos+x,即:將左右兩個操作數相加,再將其和賦給左操作數。8/4/202364華中科技大學計算機學院1)表達式語句表達式語句是由C語言的表達式以及末尾的分號組成2)復合句
復合句是指由一對花括號界定的語句序列。例如: { positive++; sum_pos+=x; } 就是一個復合句。復合句的末尾不需要加分號。8/4/202365華中科技大學計算機學院2)復合句
復合句是指由一對花括號界定的語句序列。例如:73)if-else語句
if-else語句屬選擇型語句。如果if后的條件成立,則執行if后語句,else后的語句不會執行;否則只執行else后的語句,而if后語句不會執行。如: if(x>0)/*如果x>0,執行if塊,否則執行else塊*/ {/*if塊開始*/ positive++;/*正整數個數加1*/ sum_pos+=x;/*將正整數加到sum_pos中*/ }/*if塊結束*/ else/*如果x<0,轉到此處執行*/ {/*else塊開始*/ ++negtive;/*負整數個數加1*/ sum_neg+=x;/*將負整數加到sum_neg中*/ }/*el
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 濕式球磨機培訓課件
- 外貿鋼材知識培訓課件
- 房地產企業成本管理體系建設
- 幼兒編程啟蒙教育的探索與實踐
- 提升社交媒體內容質量的策略與方法
- 拼多多平臺商品品類與供應鏈優化
- 當代中國家庭健康飲食模式的構建
- 提升中考體育成績的技巧與訓練
- 成功會議策劃與管理全解
- 探秘古代中醫文獻中的智慧
- 連帶責任擔保借條(四篇)
- 2023年計算機圖形學試題級考試A卷
- GB/T 42104-2022游樂園安全安全管理體系
- 八年級下冊人教版英語單項選擇(50題)練習題含答案含答案
- 河北省大眾滑雪等級標準(試行)
- GB/T 3863-2008工業氧
- GB/T 31125-2014膠粘帶初粘性試驗方法環形法
- 班主任班級管理(課堂)課件
- 學院輔導答疑情況記錄表
- 31個級地區國家重點監控企業自行監測信息公開平臺及污染源監督性監測信息公開網址
- 2022年江西省投資集團有限公司校園招聘筆試模擬試題及答案解析
評論
0/150
提交評論