譚浩強C語言程序設計_第1頁
譚浩強C語言程序設計_第2頁
譚浩強C語言程序設計_第3頁
譚浩強C語言程序設計_第4頁
譚浩強C語言程序設計_第5頁
已閱讀5頁,還剩217頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

TOC\o"1-5"\h\z\o"CurrentDocument"C語言概述 2\o"CurrentDocument"C語言的發(fā)展過程 2\o"CurrentDocument"當代最優(yōu)秀的程序設計語言 2\o"CurrentDocument"C語言版本 2\o"CurrentDocument"C語言的特點 2\o"CurrentDocument"面向對象的程序設計語言 3\o"CurrentDocument"C和C++ 3\o"CurrentDocument"簡單的C程序介紹 3\o"CurrentDocument"輸入和輸出函數(shù) 5\o"CurrentDocument"C源程序的結構特點 6\o"CurrentDocument"書寫程序時應遵循的規(guī)則 6\o"CurrentDocument"C語言的字符集 6\o"CurrentDocument"TurboC2.0集成開發(fā)環(huán)境的使用 8TurboC2.0簡介和啟動 8TurboC2.0集成開發(fā)環(huán)境 8\o"CurrentDocument"File菜單 9\o"CurrentDocument"Edit菜單 10\o"CurrentDocument"Run菜單 11\o"CurrentDocument"Compile菜單 12\o"CurrentDocument"Project菜單 13\o"CurrentDocument"Options菜單 14\o"CurrentDocument"Debug菜單 18\o"CurrentDocument"Break/watch菜單 19\o"CurrentDocument"TurboC2.0的配置文件 20C語言教程1C語言概述C語言的發(fā)展過程C語言是在70年代初問世的。一九七八年由美國電話電報公司(AT&T)貝爾實驗室正式發(fā)表了C語言。同時由B.W.Kemighan和D.M.Ritchit合著了著名的**THECPROGRAMMINGLANGUAGE"一書。通常簡稱為《K&R》,也行人稱之為《K&R》標準。但是,在《K&R》中并沒有定義一個完整的標準C語言,后來由美國國家標準協(xié)會(AmericanNationalStandardsInstitute)在此基礎上制定了一個C語言標準,于一九八一:年發(fā)表。通常稱之為ANSICo當代最優(yōu)秀的程序設計語言早期的C語言主要是用于UNIX系統(tǒng)。由于C語言的強大功能和各方面的優(yōu)點逐漸為人們認識,到了八十年代,C開始進入其它操作系統(tǒng),并很快在各類大、中、小和微型計算機上得到了廣泛的使用,成為當代最優(yōu)秀的程序設計語言之一。C語言版本目前最流行的c語言有以下幾種:MicrosoftC或稱MSCBorlandTurboC或稱TurboCAT&TC這些C語言版本不僅實現(xiàn)了ANSIC標準,而且在此基礎上各自作了一些擴充,使之更加方便、完美。C語言的特點1C語言簡潔、緊湊,使用方便、靈活。ANSIC一共只有32個關鍵字:autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedstaticsizofstructswitchtypedefunionunsignedvoidvolatilewhile9種控制語句,程序書寫自由,主要用小寫字母表示,壓縮了一切不必要的成分。TurboC擴充了11個關鍵字:asm_cs_ds_es_sscdecl farhugeinterruptnearpascal注意:在c語言中,關鍵字都是小寫的。2?運算符豐富。共有34種。C把括號、賦值、逗號等都作為運算符處理。從而使C的運算類型極為豐富,可以實現(xiàn)其他高級語言難以實現(xiàn)的運算。3?數(shù)據(jù)結構類型豐富。4?具有結構化的控制語句。?語法限制不太嚴格,程序設計自由度大。6?C語言允許直接訪問物理地址,能進行位(bit)操作,能實現(xiàn)匯編語言的大部分功能,可以直接對硬件進行操作。因此有人把它稱為中級語言。?生成目標代碼質量高,程序執(zhí)行效率高。?與匯編語言相比,用C語言寫的程序可移植性好。但是,C語言對程序員要求也高,程序員用C寫程序會感到限制少、靈活性大,功能強,但較其他高級語言在學習上要困難一些。面向對象的程序設計語言在C的基礎上,一九八三年又由貝爾實驗室的BjarneStrou-strup推出了C++。C++進一步擴充和完善了C語言,成為一種面向對象的程序設計語言。C++目前流行的最新版本是BorlandC++,SymantecC++和MicrosoftVisualC++。C++提出了一些更為深入的概念,它所支持的這些面向對象的概念容易將問題空間直接地映射到程序空間,為程序員提供了一種與傳統(tǒng)結構程序設計不同的思維方式和編程方法。因而也增加了整個語言的復雜性,掌握起來有一定難度。C和C++但是,C是C++的基礎,C++語言和C語言在很多方面是兼容的。因此,掌握了C語言,再進一步學習C++就能以?種熟悉的語法來學習面向對象的語言,從而達到事半功倍的目的。簡單的C程序介紹為了說明C語言源程序結構的特點,先看以下幾個程序。這幾個程序由簡到難,表現(xiàn)了C語言源程序在組成結構上的特點。雖然有關內容還未介紹,但可從這些例子中了解到組成一個C源程序的基本部分和書寫格式?!纠?.1】main()(printf("世界,您好!\n");)main是主函數(shù)的函數(shù)名,表示這是一個主函數(shù)。每一個C源程序都必須有,且只能有一個主函數(shù)(main函數(shù))。函數(shù)調用語句,printf函數(shù)的功能是把要輸出的內容送到顯示器去顯示。printf函數(shù)是一個由系統(tǒng)定義的標準函數(shù),可在程序中直接調用?!纠?.2】#include<math.h>#include<stdio.h>main()(doublex,s;printf("inputnumber:\nH);scanf(H%lf',&x);s=sin(x);printfC'sineof%lfis%lf\n'\x,s);)include稱為文件包含命令擴展名為.h的文件稱為頭文件定義兩個實數(shù)變量,以被后面程序使用顯示提示信息從鍵盤獲得一個實數(shù)x求X的正弦,并把它賦給變量S顯示程序運算結果main函數(shù)結束程序的功能是從健盤輸入一個數(shù)x,求x的正弦值,然后輸出結果。在main。之前的兩行稱為預處理命令(詳見后面)。預處理命令還有其它兒種,這里的include稱為文件包含命令,其意義是把尖括號<>或引號"”內指定的文件包含到本程序來,成為本程序的一部分。被包含的文件通常是由系統(tǒng)提供的,其擴展名為.h。因此也稱為頭文件或首部文件。C語言的頭文件中包括了各個標準庫函數(shù)的函數(shù)原型。因此,凡是在程序中調用一個庫函數(shù)時,都必須包含該函數(shù)原型所在的頭文件。在木例中,使用了三個庫函數(shù):輸入函數(shù)scanf,正弦函數(shù)sin,輸出函數(shù)printf。sin函數(shù)是數(shù)學函數(shù),其頭文件為math.h文件,因此在程序的主函數(shù)前用include命令包含了math.h。scanf和printf是標準輸入輸出函數(shù),其頭文件為stdio.h,在主函數(shù)前也用include命令包含了stdio.h文件。需要說明的是,C語言規(guī)定對scanf和printf這兩個函數(shù)可以省去對其頭文件的包含命令。所以在本例中也可以刪去第二行的包含命令#include<stdio.h>。同樣,在例1.1中使用了printf函數(shù),也省略了包含命令。在例題中的主函數(shù)體中又分為兩部分,一部分為說明部分,另一部為分執(zhí)行部分。說明是指變量的類型說明。例題1.1中未使用任何變量,因此無說明部分。C語言規(guī)定,源程序中所有用到的變量都必須先說明,后使用,否則將會出錯。這一點是編譯型高級程序設計語言的一個特點,與解釋型的BASIC語言是不同的。說明部分是C源程序結構中很重要的組成部分。本例中使用了兩個變量x,s,用來表示輸入的自變量和sin函數(shù)值。由于sin函數(shù)要求這兩個量必須是雙精度浮點型,故用類型說明符double來說明這兩個變量。說明部分后的四行為執(zhí)行部分或稱為執(zhí)行語句部分,用以完成程序的功能。執(zhí)行部分的第一行是輸出語句,調用printf函數(shù)在顯示器上輸出提示字符串,請操作人員輸入臼變量x的值。第二行為輸入語句,調用scanf函數(shù),接受鍵盤上輸入的數(shù)并存入變量x中。第三行是調用sin函數(shù)并把函數(shù)值送到變量s中。第四行是用printf函數(shù)輸出變量s的值,即x的正弦值。程序結束。運行本程序時,首先在顯示器屏幕上給出提示串Eputnumber,這是由執(zhí)行部分的第一行完成的。用戶在提示下從鍵盤上鍵入某一數(shù),如5,按下回車鍵,接著在屏幕上給出計算結果。輸入和輸出函數(shù)在前兩個例子中用到了輸入和輸出函數(shù)scanf和printf,在以后要詳細介紹。這里我們先簡單介紹一下它們的格式,以便下面使用。scanf和printf這兩個函數(shù)分別稱為格式輸入函數(shù)和格式輸出函數(shù)。其意義是按指定的格式輸入輸出值。因此,這兩個函數(shù)在括號中的參數(shù)表都由以下兩部分組成:“格式控制串”,參數(shù)表格式控制串是一個字符串,必須用雙引號括起來,它表示了輸入輸出量的數(shù)據(jù)類型。各種類型的格式表示法可參閱第三章。在printf函數(shù)中還可以在格式控制串內出現(xiàn)非格式控制字符,這時在顯示屏幕上將原文照印。參數(shù)表中給出了輸入或輸出的量。當有多個量時,用逗號間隔。例如:printf("sineof%lfis%lf\n",x,s);其中%If為格式字符,表示按雙精度浮點數(shù)處理。它在格式串中兩次現(xiàn),對應了x和s兩個變量。其余字符為非格式字符則照原樣輸出在屏幕上?!纠?.3】intmax(inta,intb);/*函數(shù)說明*/main()(intx,y,z;intmax(inta3ntb);/*主函數(shù)*//*變量說明*//*函數(shù)說明*/printf("inputtwonumbersAn");scanf(M%d%dM,&x,&y);z=max(x,y);printf(,,maxmum=%dM,z);)intmax(inta,intb)r/*輸入x,y值*//*調用max函數(shù)*//*輸出*//*定義max函數(shù)*/{if(a>b)returna;elsereturnb;/*把結果返回主調函數(shù)*/)上面例中程序的功能是由用戶輸入兩個整數(shù),程序執(zhí)行后輸出其中較大的數(shù)。本程序由兩個函數(shù)組成,主函數(shù)和max函數(shù)。函數(shù)之間是并列關系??蓮闹骱瘮?shù)中調用其它函數(shù)。max函數(shù)的功能是比較兩個數(shù),然后把較大的數(shù)返回給主函數(shù)。max函數(shù)是一個用戶自定義函數(shù)。因此在主函數(shù)中要給出說明(程序第三行)??梢姡诔绦虻恼f明部分中,不僅可以有變量說明,還可以有函數(shù)說明。關于函數(shù)的詳細內容將在以后第五章介紹。在程序的每行后用/*和*/括起來的內容為注釋部分,程序不執(zhí)行注釋部分。上例中程序的執(zhí)行過程是,首先在屏幕上顯示提示串,請用戶輸入兩個數(shù),回車后由scanf函數(shù)語句接收這兩個數(shù)送入變量x,y中,然后調用max函數(shù),并把x,y的值傳送給max函數(shù)的參數(shù)a,b。在max函數(shù)中比較4b的大小,把大者返回給主函數(shù)的變量z,最后在屏幕上輸出z的值。C源程序的結構特點.一個c語言源程序可以由一個或多個源文件組成。.每個源文件可由一個或多個函數(shù)組成。.一個源程序不論由多少個文件組成,都有一個且只能有一個main函數(shù),即主函數(shù)。.源程序中可以有預處理命令(include命令僅為其中的一種),預處理命令通常應放在源文件或源程序的最前面。.每一個說明,每一個語句都必須以分號結尾。但預處理命令,函數(shù)頭和花括號“}”之后不能加分號。.標識符,關鍵字之間必須至少加一個空格以示間隔。若已有明顯的間隔符,也可不再加空格來間隔。書寫程序時應遵循的規(guī)則從書寫清晰,便于閱讀,理解,維護的角度出發(fā),在書寫程序時應遵循以下規(guī)則:.一個說明或一個語句占一行。.用{}括起來的部分,通常表示了程序的某一層次結構。什一般與該結構語句的第一個字母對齊,并單獨占一行。.低一層次的語句或說明可比高一層次的語句或說明縮進若干格后書寫。以便看起來更加清晰,增加程序的可讀性。在編程時應力求遵循這些規(guī)則,以養(yǎng)成良好的編程風格。C語言的字符集字符是組成語言的最基本的元素。C語言字符集由字母,數(shù)字,空格,標點和特殊字符組成。在字符常量,字符串常量和注釋中還可以使用漢字或其它可表示的圖形符號。.字母小寫字母a?z共26個大寫字母A?Z共26個.數(shù)字0?9共10個.空白符空格符、制表符、換行符等統(tǒng)稱為空白符??瞻追辉谧址A亢妥址A恐衅鹱饔?。在其它地方出現(xiàn)時,只起間隔作用,編譯程序對它們忽略不計。因此在程序中使用空白符與否,對程序的編譯不發(fā)生影響,但在程序中適當?shù)牡胤绞褂每瞻追麑⒃黾映绦虻那逦院涂勺x性。.標點和特殊字符C語言詞匯在c語言中使用的訶匯分為六類:標識符,關鍵字,運算符,分隔符,常量,注釋符等。.標識符在程序中使用的變量名、函數(shù)名、標號等統(tǒng)稱為標識符。除庫函數(shù)的函數(shù)名由系統(tǒng)定義外,其余都由用戶自定義。C規(guī)定,標識符只能是字母(A?Z,a?z)、數(shù)字(0?9)、下劃線(_)組成的字符串,并且其第一個字符必須是字母或下劃線。以下標識符是合法的:a,x,x3,BOOK_1,sum5以下標識符是非法的:3s 以數(shù)字開頭s*T 出現(xiàn)非法字符*-3x 以減號開頭bowy-1出現(xiàn)非法字符-(減號)在使用標識符時還必須注意以下幾點:(1)標準C不限制標識符的長度,但它受各種版本的C語言編譯系統(tǒng)限制,同時也受到具體機器的限制。例如在某版本C中規(guī)定標識符前八位有效,當兩個標識符前八位相同時,則被認為是同一個標識符。(2)在標識符中,大小寫是有區(qū)別的。例如BOOK和book是兩個不同的標識符。(3)標識符雖然可由程序員隨意定義,但標識符是用于標識某個量的符號。因此,命名應盡量有相應的意義,以便于閱讀理解,作到“顧名思義.關鍵字關鍵字是由C語言規(guī)定的具有特定意義的字符串,通常也稱為保留字。用戶定義的標識符不應與關鍵字相同。C語言的關鍵字分為以下幾類:(1)類型說明符用于定義、說明變量、函數(shù)或其它數(shù)據(jù)結構的類型。如前面例題中用到的int,double等(2)語句定義符用于表示一個語句的功能。如例1.3中用到的ifelse就是條件語句的語句定義符。(3)預處理命令字用于表示一個預處理命令。如前面各例中用到的include..運算符C語言中含有相當豐富的運算符。運算符與變量,函數(shù)一起組成表達式,表示各種運算功能。運算符由一個或多個字符組成。.分隔符在C語言中采用的分隔符有逗號和空格兩種。逗號主要用在類型說明和函數(shù)參數(shù)表中,分隔各個變量??崭穸嘤糜谡Z句各單詞之間,作間隔符。在關鍵字,標識符之間必須要有一個以上的空格符作間隔,否則將會出現(xiàn)語法錯誤,例如把inta;寫成inta;C編譯器會把inta當成一個標識符處理,其結果必然出錯。.常量C語言中使用的常量可分為數(shù)字常量、字符常量、字符串常量、符號常量、轉義字符等多種。在后面章節(jié)中將專門給予介紹。.注釋符C語言的注釋符是以"/*”開頭并以"*/"結尾的串。在“/*”和“*/”之間的即為注釋。程序編譯時,不對注釋作任何處理。注釋可出現(xiàn)在程序中的任何位置。注釋用來向用戶提示或解釋程序的意義。在調試程序中對暫不使用的語句也可用注釋符括起來,使翻譯跳過不作處理,待調試結束后再去掉注釋符。1.13TurboC2.0集成開發(fā)環(huán)境的使用TurboC2.0簡介和啟動我們上機實習和將來考試都是使用BorlandTurboC2.0這個版本。該系統(tǒng)是DOS操作系統(tǒng)支持下的軟件,在windows98環(huán)境下,可以在DOS窗口下運行。我們機房是在D盤根目錄下建立一個TC子目錄下安裝TurboC2.0系統(tǒng)的。TC下還建立了兩個了目錄L1B和INCLUDE,LIB子目錄中存放庫文件,INCLUDE子目錄中存放所有頭文件。在DOS環(huán)境下或在windows98的DOS窗口下運行運行TurboC2.0時,只要在TC子目錄下鍵入TC并回車即可進入TurboC2.0集成開發(fā)環(huán)境。在windows98環(huán)境下,也可以選運行菜單,然后鍵入d:\tc\tc即可,也可以在tc文件夾找到tc.exe文件,然后用鼠標雙擊該文件名也可進入TurboC2.0集成開發(fā)環(huán)境。TurboC是美國Borland公司的產(chǎn)品,Borland公司是一家專門從事軟件開發(fā)、研制的大公司。該公司相繼推出了一套Turbo系列軟件,如TurboBASIC,TurboPascal,TurboProlog,這些軟件很受用戶歡迎。該公司在1987年首次推出TurboC1.0產(chǎn)品,其中使用了全然一新的集成開發(fā)環(huán)境,即使用了一系列下拉式菜單,將文本編輯、程序編譯、連接以及程序運行一體化,大大方便了程序的開發(fā)。1988年,Borland公司乂推出TurboCl.5版本,增加了圖形庫和文本窗口函數(shù)庫等,而TurboC2.0則是該公司1989年出版的。TurboC2.0在原來集成開發(fā)環(huán)境的基礎上增加了查錯功能,并可以在Tiny模式下直接生成.COM(數(shù)據(jù)、代碼、堆棧處在同一64K內存中)文件。還可對數(shù)學協(xié)處理器(支持8087/80287/80387等)進行仿真。Borland公司后來又推出了面向對象的程序軟件包TurboC++,它繼承發(fā)展TurboC2.0的集成開發(fā)環(huán)境,并包含了面向對象的基本思想和設計方法。1991年為了適用Microsoft公司的Windows3.0版本,Borland公司又將TurboC++作了更新,即TurboC的新一代產(chǎn)品BorlandcC++也已經(jīng)問世了。TurboC2.0集成開發(fā)環(huán)境進入TurboC2.0集成開發(fā)環(huán)境中后,屏幕上顯示:

其中頂上一行為TurboC2.0主菜單,中間窗口為編輯區(qū),接下來是信息窗口,最底下?行為參考行。這四個窗口構成了TurboC2.0的主屏幕,以后的編程、編譯、調試以及運行都將在這個主屏幕中進行。主菜單在TurboC2.0主屏幕頂上一行,顯示下列內容:FileEditRunCompileProjectOptionsDebugBreak/watch除Edit外,其它各項均有子菜單,只要用Alt加上某項中第一個字母,就可進入該項的子菜單中。File菜單按Alt+F可進入File菜單,如圖:File菜單的子菜單共有9項,分別敘述如下:Load:裝入一個文件,可用類似DOS的通配符(如*.C)來進行列表選擇。也可裝入其它擴展名的文件,只要給出文件名(或只給路徑)即可。該項的熱鍵為F3,即只要按F3即可進入該項,而不需要先進入File菜單再選此項。Pick:將最近裝入編輯窗口的8個文件列成一個表讓用戶選擇,選擇后將該程序裝入編輯區(qū),并將光標置在上次修改過的地方。其熱健為Alt-F3oNew:新建文件,缺省文件名為NONAME.C,存盤時可改名。Save:將編輯區(qū)中的文件存盤,若文件名是NONAME.C時,將詢問是否更改文件名,其熱鍵為F2。Writeto:可由用戶給出文件名將編輯區(qū)中的文件存盤,若該文件已存在,則詢問要不要覆蓋。Directory:顯示目錄及目錄中的文件,并可由用戶選擇。Changedir:顯示當前默認目錄,用戶可以改變默認目錄。Osshell:暫時退出TurboC2.0到DOS提示符下,此時可以運行DOS命令,若想回到TurboC2.0中,只要在DOS狀態(tài)下鍵入EXIT即可。Quit:退出TurboC2.0,返回到DOS操作系統(tǒng)中,其熱鍵為Alt+X。說明:以上各項可用光標鍵移動色棒進行選擇,回車則執(zhí)行。也可用每一項的第一個大寫字母直接選擇。若要退到主菜單或從它的下一級菜單列表框退回均可用Esc鍵,TuAoC2.0所有菜單均采用這種方法進行操作,以下不再說明。.13.4Edit菜單按Alt+E可進入編輯菜單,若再回車,則光標出現(xiàn)在編輯窗口,此時用戶可以進行文本編輯。編輯方法基本與wordstar相同,可用F1鍵獲得有關編輯方法的幫助信息。.與編輯有關的功能犍如下:F1 獲得TurboC2.0編輯命令的幫助信息;F5 擴大編輯窗口到整個屏幕;F6 在編輯窗口與信息窗口之間進行切換;F10 從編輯窗口轉到主菜單。.編輯命令簡介:PageUp向前翻頁PageDn向后翻頁Home 將光標移到所在行的開始End 將光標移到所在行的結尾Ctrl+Y刪除光標所在的一行Ctrl+T刪除光標所在處的一個詞Ctrl+KB設置塊開始Ctrl+KK設置塊結尾Ctrl+KV塊移動Ctrl+KC塊拷貝Ctrl+KY塊刪除Ctrl+KR讀文件Ctrl+KW存文件Ctrl+KP塊文件打印Ctrl+Fl如果光標所在處為TurboC2.0庫函數(shù),則獲得有關該函數(shù)的幫助信息Ctrl+Q[查找TurboC2.0雙界符的后匹配符Ctrl+Q|查找TurboC2.0雙界符的前匹配符TurboC2.0的雙界符包括以下幾種符號:a)花括符{和}b)尖括符<和>c)圓括符(和)d)方括符[和]e)注釋符/*和*/0雙引號"g)單引號’TurboC20在編輯文件時還有一種功能,就是能夠自動縮進,即光標定位和上一個非空字符對齊。在編輯窗口中,Ctrl+OL為自動縮進開關的控制鍵。1.13.5Run菜單按Alt+R可進入Run菜單,該菜單有以下各項,如圖所示:Run:運行由Project/Projectname項指定的文件名或當前編輯區(qū)的文件。如果對上次編譯后的源代碼未做過修改,則直接運行到下一個斷點(沒有斷點則運行到結束)。否則先進行編譯、連接后才運行,其熱鍵為Ctrl+F9。Programreset:中止當前的調試,釋放分給程序的空間,其熱鍵為Ctrl+F2。Gotocursor::調試程序時使用,選擇該項可使程序運行到光標所在行。光標所在行必須為一條可執(zhí)行語句,否則提示錯誤。其熱鍵為F4。Traceinto:在執(zhí)行一條調用其它用戶定義的子函數(shù)時,若用Traceinto項,則執(zhí)行長條將跟蹤到該子函數(shù)內部去執(zhí)行,其熱鍵為F7。Stepover:執(zhí)行當前函數(shù)的下一條語句,即使用戶函數(shù)調用,執(zhí)行長條也不會跟蹤進函數(shù)內部,其熱鍵為F8。Userscreen:顯示程序運行時在屏幕上顯示的結果。其熱犍為Alt+F5。1.13.6Compile菜單按Alt+C可進入Compile菜單,該菜單有以下幾個內容,如圖所示:CompiletoOBJ:將一個C源文件編譯生成.OBJ目標文件,同時顯示生成的文件名。其熱鍵為Alt+F9?MakeEXEfile:此命令生成一個.EXE的文件,并顯示生成的.EXE文件名。其中.EXE文件名是下面幾項之一:1)由Project/Projectname說明的項目文件名。2)若沒有項目文件名,則由PrimaryCfile說明的源文件。3)若以上兩項都沒有文件名,則為當前窗口的文件名。LinkEXEfile:把當前.OBJ文件及庫文件連接在一起生成.EXE文件。Buildall:重新編譯項目里的所有文件,并進行裝配生成.EXE文件。該命令不作過時檢查(上面的幾條命令要作過時檢查,即如果目前項目里源文件的日期和時間與目標文件相同或更早,則拒絕對源文件進行編譯)。PrimaryCfile:當在該項中指定了主文件后,在以后的編譯中,如沒有項目文件名則編譯此項中規(guī)定的主C文件,如果編譯中有錯誤,則將此文件調入編輯窗口,不管目前窗口中是不是主C文件。Getinfo:獲得有關當前路徑、源文件名、源文件字節(jié)大小、編譯中的錯誤數(shù)目、可用空間等信息,如圖:-i1e ditunompiIerojecttfsltionsebugreak/watchLine1EditCol1InsertIndep]TabFillunindentlUNONAME.CinformationCurrentdirectoryCurrentfileFilesizeEMSusage-i1e ditunompiIerojecttfsltionsebugreak/watchLine1EditCol1InsertIndep]TabFillunindentlUNONAME.CinformationCurrentdirectoryCurrentfileFilesizeEMSusageLinescompiledTotalwarningsTotalerrorsG:\TCC:\NONAME.C0(Max:64615)64KNoprogramloaded.ProgramexitcodeAvailablememory:269KProject菜單按Alt+P按Alt+P可進入Project菜單,該菜單包括以下內容,如圖所示:Projectname:項目名具有.PRJ的擴展名,其中包括將要編譯、連接的文件名。例如有一個程序由filel.c,file2.c,file3.c組成,要將這3個文件編譯裝配成一個file.exe的執(zhí)行文件,可以先建立一個file.pij的項目文件,其內容如下:filel.cfile2.cfile3.c此時將file.pij放入Projectname項中,以后進行編譯時將自動對項目文件中規(guī)定的三個源文件分別進行編譯。然后連接成file.exe文件。如果其中有些文件已經(jīng)編譯成.OBJ文件,而又沒有修改過,可直接寫上.OBJ擴展名。此時將不再編譯而只進行連接。例如:filel.objfile2.cfile3.c將不對filel.c進行編譯,而直接連接。說明:當項目文件中的每個文件無擴展名時,均按源文件對待,另外,其中的文件也可以是庫文件,但必須寫上擴展名.LIB。Breakmakeon:由用戶選擇是否在有Warining、Errors>FatalErrors時或Link之前退出Make編譯。Autodependencies:當開關置為on,編譯時將檢查源文件與對應的.OBJ文件日期和時間,否則不進行檢查。Clearproject:清除Project/Projectname中的項目文件名。Removemessages:把錯誤信息從信息窗口中清除掉。Options菜單按Alt+O可進入Options菜單,該菜單對初學者來說要謹慎使用,該菜單有以下幾個內容,如圖所示:1.Compiler:本項選擇又有許多子菜單,可以讓用戶選擇硬件配置、存儲模型、調試技術、代碼優(yōu)化、對話信息控制和宏定義。這些子菜單如圖所示:Model:堤*Tiny,small,medium,compact,large,huge六種不同模式可由同戶選擇。Define:打開”個宏定義框,同戶可輸入宏定義。多重定義可同分號,賦值可用等號。Codegeneration:它又有許多任選項,這些任選項告訴編譯器產(chǎn)生什么樣的目標代碼。令Callingconvention可選擇C或Pascal方式傳遞參數(shù)。令Instructionset可選擇8088/8086或80186/80286指令系列。令Floatingpoint 可選擇仿真浮點、數(shù)學協(xié)處理器浮點或無浮點運算。Defaultchartype規(guī)定char的類型。令Alignonent 規(guī)定地址對準原則。令Mergeduplicatestrings作優(yōu)化用,將重復的字符串合并在一起。令Standardstackframe產(chǎn)生一個標準的棧結構。Teststackoverflow產(chǎn)生■段程序運行時檢測堆棧溢出的代碼。。Linenumber 在.OBJ文件中放進行號以供調試時用。OBJdebuginformation在.OBJ文件中產(chǎn)生調試信息。Optimization:它又有許多任選項。令Optimizefor選擇是對程序小型化還是對程序速度進行優(yōu)化處理。令Useregistervariable用來選擇是否允許使用寄存器變量。令Registeroptimization盡可能使用寄存器變量以減少過多的取數(shù)操作。令Jumpoptimization通過去除多余的跳轉和調整循環(huán)與開關語句的辦法,壓縮代碼。Source:它又有許多任選項。?identifierlength說明標識符有效字符的個數(shù),默認為32個。令Nestedcomments是否允許嵌套注釋。令ANSIkeywordsonly是只允許ANSI關鍵字還是也允許TurboC2.0關鍵字。ErrorErrorstopafter多少個錯誤時停止編譯,默認為25個。Warningstopafter多少個警告錯誤時停止編譯,默認為100個。令Displaywarning令Portabilitywarning移植性警告錯誤。令ANSIViolations侵犯了ANSI關鍵字的警告錯誤。令Commonerror常見的警告錯誤。QLesscommonerror少見的警告錯誤。Names:用于改變段(segment)、組(group)和類(class)的名字,默認值為CODE,DATA,BSS.Linker:本菜單設置有關連接的選擇項,它有以下內容,如圖所示:M叩filemenu選擇是否產(chǎn)生.MAP文件。Initializesegments是否在連接時初始化沒仃初始化的段。Devaultlibraries是否在連接其它編譯程序產(chǎn)生的目標文件時去尋找其缺省庫。Graphicslibrary是否連接graphics庫中的函數(shù)。Warnduplicatesymbols當有重復符號時產(chǎn)生警3?信息。Stackwarinig是否讓連接程序產(chǎn)生Nostack的警告信息。Case-sensitivelink是否區(qū)分大、小寫字。Environment:菜單規(guī)定是否對某些文件自動存盤及制表鍵和屏幕大小的設置,它有以下內容,如圖所示:

STCMessagetracking:Currentfile跟蹤在編輯窗口中的文件錯誤。AHfiles跟蹤所有文件錯誤。令Off不跟蹤。Keepmessage:編譯前是否清除Message窗口中的信息。Configautosave:選on時,在Run,Shell或退出集成開發(fā)環(huán)境之前,如果TurboC2.0的配置被改過,則所做的改動將存入配置文件中。選off時不存。Editautosave:是否在Run或Shell之前,自動存儲編輯的源文件。Backupfile:是否在源文件存盤時產(chǎn)生后備文件(.BAK文件)。Tabsize:設置制表鍵大小,默認為8。Zoomedwindows:將現(xiàn)行活動窗口放大到整個屏幕,其熱鍵為F5。Screensize設置屏幕文本大小。Directories:規(guī)定編譯、連接所需文件的路徑,有下列各項,如圖所示:

Includedirectories:包含文件的路徑,多個子目錄用「分開。Librarydirectories:庫文件路徑,多個子目錄用丁分開。Outputdirectoried:輸出文件(.OBJ,.EXE,.MAP文件)的目錄。TurboCdirectoried:TurboC所在的目錄。Pickfilename:定義加載的pick文件名,如不定義則從currentpickfile中取。Arguments:允許用戶使用命令行參數(shù)。Saveoptions:保存所有選擇的編譯、連接、調試和項目到配置文件中,缺省的配置文件為TCCONFIGTC。Retriveoptions裝入一個配置文件到TC中,TC將使用該文件的選擇項。1.13.9Debug菜單按Alt+D可選擇Debug菜單,該菜單主要用于查錯,它包括以下內容,如圖所示:

EvaluateExpression要計算結果的表達式。Result顯不表達式的計算結果。Newvalue賦給新值。Callstack:該項不可接觸。而在TurboCdebuger時用于檢查堆棧情況。Findfunction在運行TurboCdebugger時用于顯示規(guī)定的函數(shù)。Refreshdisplay如果編輯窗口偶然被用戶窗口重寫了可用此恢復編輯窗口的內容。1.13.10Break/watch菜單按Alt+B可進入Bi^ak/watch菜單,該菜單有以下內容,如圖所示:1.Addwatch:向監(jiān)視窗口插入--監(jiān)視表達式。Deletewatch:從監(jiān)視窗口中刪除當前的監(jiān)視表達式。Editwatch:在監(jiān)視窗口中編輯一個監(jiān)視表達式。Removeall:watches從監(jiān)視窗口中刪除所有的監(jiān)視表達式。Togglebreakpoint:對光標所在的行設置或清除斷點。Clearallbreakpoints:清除所有斷點。Viewnextbreakpoint:將光標移動到下一個斷點處。1.13.11TurboC2.0的配置文件所謂配置文件是包含TurboC2.0有關信息的文件,其中存有編譯、連接的選擇和路徑等信息。可以用下述方法建立TurboC2.0的配置:1.建立用戶自命名的配置文件:可以從Options菜單中選擇Options/Saveoptions命令,將當前集成開發(fā)環(huán)境的所有配置存入一個由用戶命名的配置文件中。下次啟動TC時只要在DOS下鍵入:tc/c<用戶命名的配置文件名〉就會按這個配置文件中的內容作為TurboC2.0的選擇。2,若設置Options/Environment/Configautosave為on,則退出集成開發(fā)環(huán)境時,當前的設置會臼動存放到TurboC2.0配置文件TCCONFIGTC中。TurboC在啟動時會自動尋找這個配置文件。3.用TCINST設置TurboC的有關配置,并將結果存入TC.EXE中。TurboC在啟動時,若沒有找到配置文件,則取TC.EXE中的缺省值。TOC\o"1-5"\h\z\o"CurrentDocument"2 程序的靈魂一算法 21\o"CurrentDocument"算法的概念 21\o"CurrentDocument"簡單算法舉例 21\o"CurrentDocument"算法的特性 24怎樣表示一個算法 24\o"CurrentDocument"用流言圖表示£法: 24\o"CurrentDocument"三種基本結構和改進的流程圖 28\o"CurrentDocument"用N-S流程圖表示算法 29\o"CurrentDocument"用偽代碼表示算法 30\o"CurrentDocument"用計算機語言表示算法 31\o"CurrentDocument"結構化程序設計方法 312程序的靈魂一算法一個程序應包括:對數(shù)據(jù)的描述。在程序中要指定數(shù)據(jù)的類型和數(shù)據(jù)的組織形式,即數(shù)據(jù)結構(datastructure)。對操作的描述。即操作步驟,也就是算法(algorithm)。NikiklausWirth提出的公式:數(shù)據(jù)結構+算法=程序教材認為:程序=算法+數(shù)據(jù)結構+程序設計方法+語言工具和環(huán)境這4個方面是一個程序涉及人員所應具備的知識。本課程的目的是使同學知道怎樣編寫一個C程序,進行編寫程序的初步訓練,因此,只介紹算法的初步知識。算法的概念做任何事情都有一定的步驟。為解決一個問題而采取的方法和步驟,就稱為算法。計算機算法:計算機能夠執(zhí)行的算法。計算機算法可分為兩大類:數(shù)值運算算法:求解數(shù)值;非數(shù)值運算算法:事務管理領域。2.2簡單算法舉例【例2.1]求1X2X3X4X5.最原始方法:步驟1:先求1X2,得到結果2。步驟2:將步驟1得到的乘積2乘以3,得到結果6。步驟3:將6再乘以4,得24。步驟4:將24再乘以5,得120。這樣的算法雖然正確,但太繁。改進的算法:S1:使t=lS2:使i=2S3:使txi,乘積仍然放在在變量t中,可表示為txi-tS4:使i的值+1,HPi+1-iS5:如果i<5,返回重新執(zhí)行步驟S3以及其后的S4和S5;否則,算法結束。如果計算100!只需將S5:若W5改成W100即可。如果該求1X3X5X7X9X11,算法也只需做很少的改動:I3-itxi-ti+2ftS5:若iWU,返回S3,否則,結束。該算法不僅正確,而且是計算機較好的算法,因為計算機是高速運算的自動機器,實現(xiàn)循環(huán)輕而易舉。思考:若將S5寫成:S5:若i<ll,返回S3;否則,結束?!纠?.2】有50個學生,要求將他們之中成績在80分以上者打印出來。如果,n表示學生學號,m表示第個學生學號;g表示學生成績,毀表示第個學生成績;則算法可表示如下:LiS2:如果gB如,則打印叫和g“否則不打印i+1-iS4:若iW50,返回S2,否則,結束.【例2.3】判定2000—2500年中的每一年是否閏年,將結果輸出。潤年的條件:1)能被4整除,但不能被100整除的年份;2)能被100整除,又能被400整除的年份:設y為被檢測的年份,則算法可表示如下:S1:2000-yS2:若y不能被4整除,則輸出y“不是閏年”,然后轉到S6S3:若y能被4整除,不能被100整除,則輸出y“是閏年”,然后轉到S6S4:若y能被100整除,又能被400整除,輸出y“是閏年”否則輸出y"不是閏年”,然后轉到S6S5:輸出y“不是閏年”。S6:y+1-yS7:當yW2500時,返回S2繼續(xù)執(zhí)行,否則,結束?!纠?.4]求+ 1+…+.一麗。算法可表示如下:sigh=lsum=ldeno=2sigh=(-l)xsighterm=sighx(1/deno)term=sum+termdeno=deno+1S8:若deno近100,返回S4;否則,結束?!纠?.5】對一個大于或等于3的正整數(shù),判斷它是不是一個素數(shù)。算法可表示如下:S1:輸入n的值S2:i=2n被i除,得余數(shù)rS4:如果r=0,表示n能被i整除,則打印n“不是素數(shù)”,算法結束;否則執(zhí)行S5S5:i+—iS6:如果返回S3;否則打印n“是素數(shù)”;然后算法結束。改進:S6:如果返回S3;否則打印n“是素數(shù)”;然后算法結束。算法的特性有窮性:一個算法應包含有限的操作步驟而不能是無限的。確定性:算法中每一個步驟應當是確定的,而不能應當是含糊的、模棱兩可的。有零個或多個輸入。有一個或多個輸出。有效性:算法中每一個步驟應當能有效地執(zhí)行,并得到確定的結果。對于程序設計人員,必須會設計算法,并根據(jù)算法寫出程序。怎樣表示一個算法用自然語言表示算法除了很簡單的問題,一般不用自然語言表示算法。用流程圖表示算法流程圖表示算法,直觀形象,易于理解。IF起1k框輸入輸出框判斷框儂框漏£線連接點【例2.6]將例2.1求5!的算用流程圖表示?!纠?.7】將例2.2的算用流程圖表示?!纠?.8]將例2.3判定閏年的算用流程圖表示?!纠?.9】將例2.4求234"'99100的算用流程圖表示。一個流程圖包括:.表示相應操作的框;.帶箭頭的流程線;.框內外必要的文字說明。2.4.3三種基本結構和改進的流程圖1.順序結構:2.選擇結構:3.循環(huán)結構三種基本結構的共同特點:只有一個入口;只有一個出口;結構內的每一部分都有機會被執(zhí)行到;結構內不存在“死循環(huán)”。2.4.4用N-S流程圖表示算法1973年美國學者提出了一種新型流程圖:N-S流程圖。順序結構:選擇結構:循環(huán)結構:當P1成立直到Pl成立2.4.5用偽代碼表示算法偽代碼使用介于自然語言和計算機語言之間的文字和符號來描述算法。2.4.6用計算機語言表示算法我們的任務是用計算機解題,就是用計算機實現(xiàn)算法;用計算機語言表示算法必須嚴格遵循所用語言的語法規(guī)則。【例2.20]求1X2X3X4X5用C語言表示。main(){inti,t;t=l;i=2;while(i<=5){t=t*i;i=i+l;})【例2.21】求級數(shù)的值。main()(intsigh=l;floatdeno=2.0,sum=l.0,term;while(deno<=100){sigh=-sigh;term=sigh/deno;sum=sum+term;deno=deno+1;)printf(t4%f\sum);}2.5結構化程序設計方法自頂向下;逐步細化;模塊化設計:結構化編碼。TOC\o"1-5"\h\z\o"CurrentDocument"3 數(shù)據(jù)類型、運算符與表達式 32\o"CurrentDocument"C語言的數(shù)據(jù)類型 32\o"CurrentDocument"常量與變量 34\o"CurrentDocument"常量和符號常量 34\o"CurrentDocument"變量 35整型數(shù)據(jù) 35整型常量的表示方法 35\o"CurrentDocument"整型變量 36實型數(shù)據(jù) 39實型常量的表示方法 39\o"CurrentDocument"實型變量 40\o"CurrentDocument"實型常數(shù)的類型 41\o"CurrentDocument"字符型數(shù)據(jù) 41\o"CurrentDocument"字符常量 41\o"CurrentDocument"轉義字符 42\o"CurrentDocument"字符變量 42\o"CurrentDocument"字符數(shù)據(jù)在內存中的存儲形式及使用方法 43\o"CurrentDocument"字符串常量 44符號常量 錯誤!未定義書簽。\o"CurrentDocument"變量賦初值 44\o"CurrentDocument"各類數(shù)值型數(shù)據(jù)之間的混合運算 45\o"CurrentDocument"算術運算符和算術表達式 46\o"CurrentDocument"C運算符簡介 46\o"CurrentDocument"算術運算符和算術表達式 47\o"CurrentDocument"賦值運算符和賦值表達式 49\o"CurrentDocument"逗號運算符和逗號表達式 51?C的數(shù)據(jù)類型 51\o"CurrentDocument"基本類型的分類及特點 51\o"CurrentDocument"常量后綴 52\o"CurrentDocument"常量類型 52\o"CurrentDocument"數(shù)據(jù)類型轉換 52\o"CurrentDocument"運算符優(yōu)先級和結合性 52\o"CurrentDocument"表達式 523數(shù)據(jù)類型、運算符與表達式C語言的數(shù)據(jù)類型在第一章中,我們已經(jīng)看到程序中使用的各種變量都應預先加以定義,即先定義,后使用。對變量的定義可以包括三個方面:?數(shù)據(jù)類型?存儲類型?作用域在本章中,我們只介紹數(shù)據(jù)類型的說明。其它說明在以后各章中陸續(xù)介紹。所謂數(shù)據(jù)類型是按被定義變量的性質,表示形式,占據(jù)存儲空間的多少,構造特點來劃分的。在C語言中,數(shù)據(jù)類型可分為:基本數(shù)據(jù)類型,構造數(shù)據(jù)類型,指針類型,空類型四大類?!绢愋汀蛉 址汀u型(浮點型)—單精度型—雙精度型—核j造類型—數(shù)紈類型——結木勾體類型—共用體類型—寸旨針類型 蕓M,類型.基本數(shù)據(jù)類型:基本數(shù)據(jù)類型最主要的特點是,其值不可以再分解為其它類型。也就是說,基本數(shù)據(jù)類型是自我說明的。.構造數(shù)據(jù)類型:構造數(shù)據(jù)類型是根據(jù)已定義的一個或多個數(shù)據(jù)類型用構造的方法來定義的。也就是說,一個構造類型的值可以分解成若干個“成員”或“元素:每個“成員”都是一個基本數(shù)據(jù)類型或又是一個構造類型。在C語言中,構造類型有以下幾種:數(shù)組類型結構體類型共用體(聯(lián)合)類型.指針類型:指針是一種特殊的,同時又是具有重要作用的數(shù)據(jù)類型。其值用來表示某個變量在內存儲器中的地址。雖然指針變量的取值類似于整型量,但這是兩個類型完全不同的量,因此不能混為一談。.空類型:在調用函數(shù)值時,通常應向調用者返回一個函數(shù)值。這個返回的函數(shù)值是具有一定的數(shù)據(jù)類型的,應在函數(shù)定義及函數(shù)說明中給以說明,例如在例題中給出的max函數(shù)定義中,函數(shù)頭為:intmax(intajntb);其中“int”類型說明符即表示該函數(shù)的返回值為整型量。又如在例題中,使用了庫函數(shù)sin,由于系統(tǒng)規(guī)定其函數(shù)返回值為雙精度浮點型,因此在賦值語句5=5m3);中,s也必須是雙精度浮點型,以便與sin函數(shù)的返回值一致。所以在說明部分,把s說明為雙精度浮點型。但是,也有一類函數(shù),調用后并不需要向調用者返回函數(shù)值,這種函數(shù)可以定義為“空類型”。其類型說明符為void。在后面函數(shù)中還要詳細介紹。在本章中,我們先介紹基本數(shù)據(jù)類型中的整型、浮點型和字符型。其余類型在以后各章中陸續(xù)介紹。3.2常量與變量對于基本數(shù)據(jù)類型量,按其取值是否可改變又分為常量和變量兩種。在程序執(zhí)行過程中,其值不發(fā)生改變的量稱為常量,其值可變的量稱為變量。它們可與數(shù)據(jù)類型結合起來分類。例如,可分為整型常量、整型變量、浮點常量、浮點變量、字符常量、字符變量、枚舉常量、枚舉變量。在程序中,常量是可以不經(jīng)說明而直接引用的,而變量則必須先定義后使用。整型量包括整型常量、整型變量。常量和符號常量在程序執(zhí)行過程中,其值不發(fā)生改變的量稱為常量。?直接常量(字面常量):整型常量:12、0、-3;實型常量:4.6、-1.23:字符常量:'a'、'b'。標識符:用來標識變量名、符號常量名、函數(shù)名、數(shù)組名、類型名、文件名的有效字符序列。符號常量:用標示符代表一個常量。在C語言中,可以用一個標識符來表示一個常量,稱之為符號常量。符號常量在使用之前必須先定義,其一般形式為:#define標識符常量其中#define也是?條預處理命令(預處理命令都以"#"開頭),稱為宏定義命令(在后面預處理程序中將進一步介紹),其功能是把該標識符定義為其后的常量值。一經(jīng)定義,以后在程序中所有出現(xiàn)該標識符的地方均代之以該常量值。習慣上符號常量的標識符用大寫字母,變量標識符用小寫字母,以示區(qū)別。

【例3.1】符號常量的使用。#definePRICE30main()intnum,total;num=10;total二num*PRICE;printf("total=%d"Jotal);用標識符代表一個常量,稱為符號常量。符號常量與變量不同,它的值在其作用域內不能改變,也不能再被賦值。使用符號常量的好處是:含義清楚;能做到“一改全改”。3.2.2變量其值可以改變的量稱為變量。一個變量應該有個名字,在內存中占據(jù)一定的存儲單元。變量定義必須放在變量使用之前。一般放在函數(shù)體的開頭部分。要區(qū)分變量名和變量值是兩個不同的概念。變量名變量值存儲單元3.3整型數(shù)據(jù)整型常量的表示方法整型常量就是整常數(shù)。在c語言中,使用的整常數(shù)有八進制、十六進制和十進制三種。1)十進制整常數(shù):十進制整常數(shù)沒有前綴。其數(shù)碼為。?9。以下各數(shù)是合法的十進制整常數(shù):237、-568、65535、1627;以下各數(shù)不是合法的十進制整常數(shù):023(不能有前導0)、23D(含有非十進制數(shù)碼)。在程序中是根據(jù)前綴來區(qū)分各種進制數(shù)的。因此在書寫常數(shù)時不要把前綴弄錯造成結果不正確。2)八進制整常數(shù):八進制整常數(shù)必須以0開頭,即以0作為八進制數(shù)的前綴。數(shù)碼取值為0?7。八進制數(shù)通常是無符號數(shù)。以下各數(shù)是合法的八進制數(shù):015(十進制為13)、0101(十進制為65)、0177777(十進制為65535);以下各數(shù)不是合法的八進制數(shù):256(無前綴0)、03A2(包含了非八進制數(shù)碼)、-0127(出現(xiàn)了負號)。3)十六進制整常數(shù):十六進制整常數(shù)的前綴為0X或Ox。其數(shù)碼取值為0~9,A~F或a-f?以下各數(shù)是合法的十六進制整常數(shù):0X2A(十進制為42)、0XA0(十進制為160)、OXFFFF(十進制為65535);以下各數(shù)不是合法的十六進制整常數(shù):5A(無前綴OX)、0X3H(含有非十六進制數(shù)碼)。4)整型常數(shù)的后綴:在16位字長的機器上,基本整型的長度也為16位,因此表示的數(shù)的范圍也是有限定的。十進制無符號整常數(shù)的范圍為。?65535,有符號數(shù)為-32768?+32767。八進制無符號數(shù)的表示范圍為。?0177777。十六進制無符號數(shù)的表示范圍為0X0?OXFFFF或0x0?OxFFFF。如果使用的數(shù)超過了上述范圍,就必須用長整型數(shù)來表示。長整型數(shù)是用后綴“L”或“1”來表示的。例如:十進制長整常數(shù):158L(十進制為158)、358000L(十進制為358000);八進制長整常數(shù):012L(十進制為10)、077L(十進制為63)、0200000L(十進制為65536);十六進制長整常數(shù):0X15L(十進制為21)、0XA5L(十進制為165)、0X10000L(十進制為65536)。長整數(shù)158L和基本整常數(shù)158在數(shù)值上并無區(qū)別。但對158L,因為是長整型量,C編譯系統(tǒng)將為它分配4個字節(jié)存儲空間。而對158,因為是基本整型,只分配2個字節(jié)的存儲空間。因此在運算和輸出格式上要予以注意,避免出錯。無符號數(shù)也可用后綴表示,整型常數(shù)的無符號數(shù)的后綴為“U”或"u”。例如:358u,Ox38Au,235Lu均為無符號數(shù)。前綴,后綴可同時使用以表示各種類型的數(shù)。如0XA5LU表示十六進制無符號長整數(shù)A5,其十進制為165o整型變量.整型數(shù)據(jù)在內存中的存放形式如果定義了一個整型變量i:inti;i=10;100|0|0|0|0|0|0|0|0|0|0|0|1|0|1|0數(shù)值是以補碼表示的:正數(shù)的補碼和原碼相同;負數(shù)的補碼:將該數(shù)的絕對值的二進制形式按位取反再加1.例如:求-10的補碼:10的原碼:o|o|o|o|o|o|o|o|o|o|o|o|i|o|i|o取反:I1I1I1I1I1I1I1I1I1I1I1I0I1I0I1再加1,得-10的補碼:口I1I1I1口I1I1I1I1I1口I0I1口I0由此可知,左面的第一位是表示符號的。.整型變量的分類1)基本型:類型說明符為int,在內存中占2個字節(jié)。2)短整量:類型說明符為shonint或shon。所占字節(jié)和取值范圍均與基本型相同。3)長整型:類型說明符為longint或long,在內存中占4個字節(jié)。4)無符號型:類型說明符為unsigned。無符號型又可與上述三種類型匹配而構成:無符號基本型:類型說明符為unsignedint或unsigned。無符號短整型:類型說明符為unsignedshoit。無符號長整型:類型說明符為unsignedlong。各種無符號類型量所占的內存空間字節(jié)數(shù)與相應的有符號類型量相同。但由于省去了符號位,故不能表示負數(shù)。有符號整型窣量:最大表不32767 o|111|11111-F|1|11111111|1無符號整型內量:最大表號65535 1口口|1|1口|1|1|1|1|1|1|1|1|1|1下表列出了TuiboC中各類整型量所分配的內存字節(jié)數(shù)及數(shù)的表示范圍。類型說明符 數(shù)的范圍字節(jié)數(shù)int -32768-32767 BP-215-(215-1)2unsignedint 0?65535 即。?(216-1)2shortint -32768-32767 即-2"?(215-1)2unsignedshortint 0?65535 即0?(2,6-1)2longint -2147483648-2147483647BP-231-(23l-l)4unsignedlong 0?4294967295 即0?(232-1)4以13為例:int型:0000I00I00I00I00I11I01shortint型:0000000000001101longint型:00000000000000000000000000001101unsignedinti*0000000000001101unsignedshortint型:0000()0(X)(X)(X)1101unsignedlongint型:00000000000000000000000000001101.整型變量的定義變量定義的一般形式為:類型說明符變量名標識符,變量名標識符,...:例如:inta,b,c;(a,b,c為整型變量)longx,y;(x,y為長整型變量)unsignedp,q;(p,q為無符號整型變量)在書寫變量定義時,應注意以下幾點:允許在一個類型說明符后,定義多個相同類型的變量。各變量名之間用逗號間隔。類型說明符與變量名之間至少用一個空格間隔。最后一個變量名之后必須以“;”號結尾。變量定義必須放在變量使用之前。一般放在函數(shù)體的開頭部分?!纠?.2】整型變量的定義與使用。main(){inta,b,c,d;unsignedu;a=12;b=-24;u=10;c=a+u;d=b+u;printf("a+u=%d,b+u=%d\n”,c,d);.整型數(shù)據(jù)的溢出【例3.3】整型數(shù)據(jù)的溢出。main(){inta,b;a=32767;b=a+1;printf("%d,%d\n”,a,b);)32767:0|1|1|1|1|1|1|1|1|1|1|1|1|1|1|1-32768 i|o|o|o|o|o|o|o|o|o|o|o|o|o|o|o【例3.4】main(){longx,y;inta,b,c,d;x=5;y=6;a=7;b=8;c=x+a;d=y+b;printf(',c=x+a=%d,d=y+b=%d\n,\c,d);從程序中可以看到:x,y是長整型變量,a,b是基本整型變量。它們之間允許進行運算,運算結果為長整型。但c,d被定義為基本整型,因此最后結果為基本整型。本例說明,不同類型的量可以參與運算并相互賦值。其中的類型轉換是由編譯系統(tǒng)自動完成的。有關類型轉換的規(guī)則將在以后介紹。3.4實型數(shù)據(jù)實型常量的表示方法實型也稱為浮點型。實型常量也稱為實數(shù)或者浮點數(shù)。在c語言中,實數(shù)只采用十進制。它有二種形式:十進制小數(shù)形式,指數(shù)形式。1)十進制數(shù)形式:由數(shù)碼0?9和小數(shù)點組成。例如:0.0、25.0、5.789、0.13、5.0、300.、-267.8230等均為合法的實數(shù)。注意,必須有小數(shù)點。2)指數(shù)形式:由十進制數(shù),加階碼標志“e”或"E”以及階碼(只能為整數(shù),可以帶符號)組成。其一般形式為:aEn(a為十進制數(shù),n為十進制整數(shù))其值為a*10,如:E5(等于2.1*1。5)E-2(等于3.7*10-2)0.5E7(等于0.5*107)-2.8E-2(等于-2.8*10=)以下不是合法的實數(shù):345(無小數(shù)點)E7(階碼標志E之前無數(shù)字)-5(無階碼標志)53.-E3(負號位置不對)2.7E(無階碼)標準C允許浮點數(shù)使用后綴。后綴為“f”或"F”即表示該數(shù)為浮點數(shù)。如356f和356.是等價的?!纠?.5]說明了這種情況。main(){printf(n%f\n",356.);printf(n%An',,356);printf(n%f\n”,356f);3.4.2實型變量i.實型數(shù)據(jù)在內存中的存放形式實型數(shù)據(jù)一般占4個字節(jié)(32位)內存空間。按指數(shù)形式存儲。實數(shù)3.14159在內存中的存放形式如下:+.3141591數(shù)符 小數(shù)部分 指數(shù)小數(shù)部分占的位(bit)數(shù)愈多,數(shù)的有效數(shù)字愈多,精度愈高。指數(shù)部分占的位數(shù)愈多,則能表示的數(shù)值范圍愈大。.實型變量的分類實型變量分為:單精度(float型)、雙精度(double型)和長雙精度(longdouble型)三類。在TurboC中單精度型占4個字節(jié)(32位)內存空間,其數(shù)值范圍為3.4E-38?3.4E+38,只能提供七位有效數(shù)字。雙精度型占8個字節(jié)(64位)內存空間,其數(shù)值范圍為1.7E-308-1.7E+308,可提供16位有效數(shù)字。類型說明符比特數(shù)(字節(jié)數(shù))有效數(shù)字數(shù)的范圍float32(4)6~710'37~1038double64(8)15-1610-3077030glongdouble128(16)18-1910?93」04932實型變量定義的格式和書寫規(guī)則與整型相同。例如:floatx,y;(x,y為單精度實型量)doublea,b,c;(a,b,c為雙精度實型量).實型數(shù)據(jù)的舍入誤差由于實型變量是由有限的存儲單元組成的,因此能提供的有效數(shù)字總是有限的。如下例?!纠?.6】實型數(shù)據(jù)的舍入誤差。main(){floata,b;a=123456.789e5;b=a+20printf("%f\n”,a);printf(n%f\n';b);注意:l.O/3*3的結果并不等于lo【例3.7】main(){floata;doubleb;a=33333.33333;b=33333.33333333333333;printf(M%f\n%f\n",a,b);)從本例可以看出,由于a是單精度浮點型,有效位數(shù)只有七位。而整數(shù)已占五位,故小數(shù)二位后之后均為無效數(shù)字。b是雙精度型,有效位為十六位。但TurboC規(guī)定小數(shù)后最多保留六位,其余部分四舍五入。3.4.3實型常數(shù)的類型實型常數(shù)不分單、雙精度,都按雙精度double型處理。3.5字符型數(shù)據(jù)字符型數(shù)據(jù)包括字符常量和字符變量。字符常量字符常量是用單引號括起來的一個字符。例如:言、&、、,+'、?都是合法字符常量。在C語言中,字符常量有以下特點:1)字符常量只能用單引號括起來,不能用雙引號或其它括號。2)字符常量只能是單個字符,不能是字符串。3)字符可以是字符集中任意字符。但數(shù)字被定義為字符型之后就不能參與數(shù)值運算。如5和5是不同的。5是字符常量,不能參與運算。轉義字符轉義字符是一種特殊的字符常量。轉義字符以反斜線,"開頭,后跟一個或幾個字符。轉義字符具有特定的含義,不同于字符原有的意義,故稱“轉義”字符。例如,在前面各例題printf函數(shù)的格式串中用到的“\n”就是一個轉義字符,其意義是“回車換行轉義字符主要用來表示那些用一般字符不便于表示的控制代碼。常用的轉義字符及其含義轉義字符轉義字符的意義ASCII代碼\n回車換行10\t橫向跳到下一制表位置9\b退格8V回車13\f走紙換頁12\\反斜線符"V92V單引號符39雙引號符34\a鳴鈴7\ddd1?3位八進制數(shù)所代表的字符\xhh1~2位十六進制數(shù)所代表的字符廣義地講,C語言字符集中的任何一個字符均可用轉義字符來表示。表中的\£|(1(1和%1111正是為此而提出的。ddd和hh分別為八進制和十六進制的ASCII代碼。如\101表示字母"A",\102表示字母"B",\134表示反斜線,XXOA表示換行等。【例3.8】轉義字符的使用。main()(inta,b,c;a=5;b=6;c=7;printf(44abc\tde\rf\n^^);printf(uhijk\tL\bM\nM);}字符變量字符變量用來存儲字符常量,即單個字符。字符變量的類型說明符是char。字符變量類型定義的格式和書寫規(guī)則都與整型變量相同。例如:chara,b;字符數(shù)據(jù)在內存中的存儲形式及使用方法每個字符變量被分配一個字節(jié)的內存空間,因此只能存放一個字符。字符值是以ASCII碼的形式存放在變量的內存單元之中的。如x的十進制ASCII碼是120,y的十進制ASCII碼是121。對字符變量a,b賦予k和Va='x';b='y';實際上是在4b兩個單元內存放120和121的二進制代碼:所以也可以把它們看成是整型量。C語言允許對整型變量賦以字符值,也允許對字符變量賦以整型值。在輸出時,允許把字符變量按整型量輸出,也允許把整型量按字符量輸出。整型量為二字節(jié)量,字符量為單字節(jié)量,當整型量按字符型量處理時,只有低八位字節(jié)參與處理。【例3.9】向字符變量賦以整數(shù)。main()(chara,b;a=120;b=121;printf("%c,%c\n",a,b);printf("%d,%d\n",a,b);本程序中定義a,b為字符型,但在賦值語句中賦以整型值。從結果看,a,b值的輸出形式取決于printf函數(shù)格式串中的格式符,當格式符為"c"時,對應輸出的變量值為字符,當格式符為"d"時,對應輸出的變量值為整數(shù)。【例3.10】main()(chara,b;a=*a';b='b';a=a

溫馨提示

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

評論

0/150

提交評論