



下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第一章C語言概述C語言出現(xiàn)的歷史背景C語言的特點(diǎn)⑴語言簡潔、緊湊,使用方便、靈活。ANSIC一共只有32個(gè)關(guān)鍵字:auto、break>case、char、const>continue>default>do、doubleelse、enum、extern>floatfor、goto、if、int、long、register、return>short、signed、static>sizof、struct、switch、typedef、union>unsigned>void^volatile>while注意:在c語言中,關(guān)鍵字都是小寫的。⑵運(yùn)算符豐富。⑶數(shù)據(jù)類型豐富。⑷具有結(jié)構(gòu)化的控制語句。⑸語法限制不太嚴(yán)格,程序設(shè)計(jì)自由度大。(6)C易語言允許直接訪問物理地址,能進(jìn)行位操作,能實(shí)現(xiàn)匯編語言的大部分功能,可以直接対硬件進(jìn)行操作。⑺生成目標(biāo)代碼質(zhì)量高,程序執(zhí)行效率高。⑻與匯編語言相比,用C語言編寫的程序可移植性好。主函數(shù)體中又分為兩部分,一部分為說明部分,另一部為分執(zhí)行部分。C語言規(guī)定,源程序中所有用到的變量都必須先說明,后使用,否則將會(huì)出錯(cuò)。C源程序的結(jié)構(gòu)特點(diǎn).ー個(gè)C語言源程序可以由一個(gè)或多個(gè)源文件組成。.每個(gè)源文件可由一個(gè)或多個(gè)函數(shù)組成。.ー個(gè)源程序不論由多少個(gè)文件組成,都有且只能有一個(gè)main函數(shù),即主函數(shù)。.源程序中可以有預(yù)處理命令(include命令僅為其中的一種),預(yù)處理命令通常應(yīng)放在源文件或源程序的最前面。.每ー個(gè)說明,每ー個(gè)語句都必須以分號(hào)結(jié)尾。但預(yù)處理命令,函數(shù)頭和花括號(hào)“}”之后不能加分號(hào)。.標(biāo)識(shí)符,關(guān)鍵字之間必須至少加一個(gè)空格以示間隔。若已有明顯的間隔符,也可不再加空格來間隔。.4C語言詞匯在C語言中使用的詞匯分為六類:標(biāo)識(shí)符,關(guān)鍵字,運(yùn)算符,分隔符,常量,注釋符等。.標(biāo)識(shí)符在程序中使用的變量名、函數(shù)名、標(biāo)號(hào)等統(tǒng)稱為標(biāo)識(shí)符。除庫函數(shù)的函數(shù)名由系統(tǒng)定義外,其余都由用戶自定義。C規(guī)定,標(biāo)識(shí)符只能是字母(A?Z,a?Z)、數(shù)字(〇?9)、下劃線(一)組成的字符串,且其第一個(gè)字符必須是字母或下劃線。在使用標(biāo)識(shí)符時(shí)還必須注意以下幾點(diǎn):(1)標(biāo)準(zhǔn)C不限制標(biāo)識(shí)符長度,但它受各種版本的C語言編譯系統(tǒng)限制,同時(shí)也受到具體機(jī)器的限制。(2)在標(biāo)識(shí)符中,大小寫是有區(qū)別的。(3)標(biāo)識(shí)符雖然可由程序員隨意定義,但標(biāo)識(shí)符是用于標(biāo)識(shí)某個(gè)量的符號(hào)。因此,命名應(yīng)盡量有相應(yīng)的意義,以便于閱讀理解,作到‘‘顧名思義”。.關(guān)鍵字關(guān)健字是由C語言規(guī)定的具有特定意義的字符串,通常也稱為保留字。用戶定義的標(biāo)識(shí)符不應(yīng)與關(guān)鍵字相同。C語言的關(guān)鍵字分為以下幾類:(1)類型說明符用于定義、說明變量、函數(shù)或其它數(shù)據(jù)結(jié)構(gòu)的類型。如int、double等。(2)語句定義符用于表示一個(gè)語句的功能。如ifelse就是條件語句的語句定義符。(3)預(yù)處理命令字用于表示一個(gè)預(yù)處理命令。如include。.運(yùn)算符C語言中含有相當(dāng)豐富的運(yùn)算符。運(yùn)算符與變量,函數(shù)一起組成表達(dá)式,表示各種運(yùn)算功能。運(yùn)算符由一個(gè)或多個(gè)字符組成。.分隔符在C語言中采用的分隔符有逗號(hào)和空格兩種。逗號(hào)主要用在類型說明和函數(shù)參數(shù)表中,分隔各個(gè)變量。空格多用于語句各單詞之間,作間隔符。在關(guān)鍵字,標(biāo)識(shí)符之間必須要有一個(gè)以上的空格符作間隔,否則將會(huì)出現(xiàn)語法錯(cuò)誤。.常量C語言中使用的常量可分為數(shù)字常量、字符常量、字符串常量、符號(hào)常量、轉(zhuǎn)義字符等多種。.注釋符C語言的注釋符是以“/*”開頭并以“*/”結(jié)尾的串。在“/*”和“*/”之間的即為注釋。程序編譯時(shí),不對(duì)注釋作任何處理。注釋可出現(xiàn)在程序中的任何位置。注釋用來向用戶提示或解釋程序的意義。在調(diào)試程序中對(duì)暫不使用的語句也可用注釋符括起來,使翻譯跳過不作處理,待調(diào)試結(jié)束后再去掉注釋符。1.5TurboC2.0集成開發(fā)環(huán)境的使用File菜單File菜単的子菜里共有9項(xiàng),分別敘述如下:Load:裝入一個(gè)文件,可用類似DOS的通配符(如?.C)來進(jìn)行列表選擇。也可裝入其它擴(kuò)展名的文件,只要給出文件名(或只給路徑)即可。該項(xiàng)的熱鍵為F3,即只要按F3即可進(jìn)入該項(xiàng)。Pick:將最近裝入編輯窗口的8個(gè)文件列成一個(gè)表讓用戶選擇,選擇后將該程序裝入編輯區(qū),并將光標(biāo)置在上次修改過的地方。其熱健為Alt-F3oNew:新建文件,缺省文件名為NONAME.C,存盤時(shí)可改名。Save:將編輯區(qū)中的文件存盤,若文件名是NONAME.C時(shí),將詢問是否更改文件名,其熱鍵為F2。Writeto:可由用戶給出文件名將編輯區(qū)中的文件存盤,若該文件已存在,則詢問要不要覆Directory:顯示目錄及目錄中的文件,并可由用戶選擇。Changedir:顯示當(dāng)前默認(rèn)目錄,用戶可以改變默認(rèn)目錄。Osshell:暫時(shí)退出TurboC2.0到DOS提示符下,此時(shí)可以運(yùn)行DOS命令,若想回到TurboC2.0中,只要在DOS狀態(tài)下鍵入EXIT即可。Quit:退出TurboC2.0,返回到DOS操作系統(tǒng)中,其熱鍵為Alt+X。Edit菜單與編輯有關(guān)的功能鍵如下:F1 獲得TurboC2.0編輯命令的幫助信息;F5 擴(kuò)大編輯窗口到整個(gè)屏幕;F6 在編輯窗口與信息窗口之間進(jìn)行切換;F10 從編輯窗口轉(zhuǎn)到主菜單。編輯命令簡介:Ctrl+Y 刪除光標(biāo)所在的一行Ctrl+T 刪除光標(biāo)所在處的一個(gè)詞Ctrl+KB 設(shè)置塊開始Ctrl+KK 設(shè)置塊結(jié)尾Ctrl+KV塊移動(dòng)Ctrl+KC塊拷貝Ctrl+KY塊刪除Ctrl+KR 讀文件Ctrl+KW存文件Ctrl+KP 塊文件打印Ctrl+F! 如果光標(biāo)所在處為TurboC2.0庫函數(shù),則獲得有關(guān)該函數(shù)的幫助信息Ctrl+Q[查找TurboC2.0雙界符的后匹配符Ctrl+Q]查找TurboC2.0雙界符的前匹配符Ctrl+OL 自動(dòng)縮進(jìn)開關(guān)的控制鍵Run菜單Run:運(yùn)行由Project/Projectname項(xiàng)指定的文件名或當(dāng)前編輯區(qū)的文件。如果對(duì)上次編譯后的源代碼未做過修改,則直接運(yùn)行到下ー個(gè)斷點(diǎn)(沒有斷點(diǎn)則運(yùn)行到結(jié)束)。否則先進(jìn)行編譯、連接后オ運(yùn)行,其熱鍵為Ctrl+F9。Programreset:中止當(dāng)前的調(diào)試,釋放分給程序的空間,其熱鍵為Ctrl+F2。Gotocursor:調(diào)試程序時(shí)使用,選擇該項(xiàng)可使程序運(yùn)行到光標(biāo)所在行。光標(biāo)所在行必須為一條可執(zhí)行語句,否則提示錯(cuò)誤。其熱鍵為F4oTraceinto:在執(zhí)行一條調(diào)用其它用戶定義的子函數(shù)時(shí),若用Traceinto項(xiàng),則執(zhí)行長條將跟蹤到該子函數(shù)內(nèi)部去執(zhí)行,其熱鍵為F?。Stepover:執(zhí)行當(dāng)前函數(shù)的下一條語句,即使用戶函數(shù)調(diào)用,執(zhí)行長條也不會(huì)跟蹤進(jìn)函數(shù)內(nèi)部,其熱鍵為F8oUserscreen:顯示程序運(yùn)行時(shí)在屏幕上顯示的結(jié)果。其熱鍵為Alt+F5。Compile菜單.CompiletoOBJ:將一個(gè)C源文件編譯生成.OBJ目標(biāo)文件,同時(shí)顯示生成的文件名。其熱鍵為Alt+F9oMakeEXEfile:此命令生成一個(gè).EXE的文件,并顯示生成的.EXE文件名。其中.EXE文件名是下面幾項(xiàng)之ー:1)由Project/Projectname說明的項(xiàng)目文件名。2)若沒有項(xiàng)目文件名,則由PrimaryCfile說明的源文件。3)若以上兩項(xiàng)都沒有文件名,則為當(dāng)前窗口的文件名。LinkEXEfile:把當(dāng)前.OBJ文件及庫文件連接在一起生成.EXE文件。Buildall:重新編譯項(xiàng)目里的所有文件,并進(jìn)行裝配生成.EXE文件。該命令不作過時(shí)檢查(上面的幾條命令要作過時(shí)檢查,即如果目前項(xiàng)目里源文件的日期和時(shí)間與目標(biāo)文件相同或更早,則拒絕對(duì)源文件進(jìn)行編譯)。PrimaryCfile:當(dāng)在該項(xiàng)中指定了主文件后,在以后的編譯中,如沒有項(xiàng)目文件名則編譯此項(xiàng)中規(guī)定的主C文件,如果編譯中有錯(cuò)誤,則將此文件調(diào)入編輯窗口,不管目前窗口中是不是主C文件。Getinfo:獲得有關(guān)當(dāng)前路徑、源文件名、源文件字節(jié)大小、編譯中的錯(cuò)誤數(shù)目、可用空間等信息1.5.5Project菜單.Projectname:項(xiàng)冃名具有.PRJ的擴(kuò)展名,其中包括將要編譯、連接的文件名。例如有一個(gè)程序由filelGfile2.c,file3.c組成,要將這3個(gè)文件編譯裝配成一個(gè)file.exe的執(zhí)行文件,可以先建立一個(gè)file.prj的項(xiàng)目文件,其內(nèi)容如下:filel.cfile2.cfile3.c此時(shí)將file.prj放入Projectname項(xiàng)中,以后進(jìn)行編譯時(shí)將自動(dòng)對(duì)項(xiàng)H文件中規(guī)定的三個(gè)源文件分別進(jìn)行編譯。然后連接成file.exe文件。如果其中有些文件已經(jīng)編譯成.OBJ文件,而又沒有修改過,可直接寫上.OBJ擴(kuò)展名。此時(shí)將不再編譯而只進(jìn)行連接。例如:filel.objfile2.cfile3.c將不對(duì)filel.c進(jìn)行編譯,而直接連接。說明:當(dāng)項(xiàng)目文件中的每個(gè)文件無擴(kuò)展名時(shí),均按源文件對(duì)待,另外,其中的文件也可以是庫文件,但必須寫上擴(kuò)展名.LIB。.Breakmakeon:由用戶選擇是否在有Warining、Errors>FatalErrors時(shí)或Link之前退出Make編譯。.Autodependencies:當(dāng)開關(guān)置為on,編譯時(shí)將檢查源文件與對(duì)應(yīng)的.OBJ文件日期和時(shí)間,否則不進(jìn)行檢查。.Clearproject:清除Project/Projectname中的項(xiàng)目文件名。.Removemessages:把錯(cuò)誤信息從信息窗口中清除掉。1.5.6Options菜單1.Compiler:本項(xiàng)選擇又有許多子菜單,可以讓用戶選擇硬件配置、存儲(chǔ)模型、調(diào)試技術(shù)、代碼優(yōu)化、對(duì)話信息控制和宏定義。Model:共有Tiny,small,medium,compact,large,huge六種不同模式可由同戶選擇。Define:打開一個(gè)宏定義框,同戶可輸入宏定義。多重定義可同分號(hào),賦值可用等號(hào)。Codegeneration:它又有許多任選項(xiàng),這些任選項(xiàng)告訴編譯器產(chǎn)生什么樣的目標(biāo)代碼。Callingconvention可選擇C或Pascal方式傳遞參數(shù)。Instruction£t可選擇8088/8086或80186/80286指令系列。Floatingpoht 可選擇仿真浮點(diǎn)、數(shù)學(xué)協(xié)處理器浮點(diǎn)或無浮點(diǎn)運(yùn)算。Defaultchartype規(guī)定char的類型。Alignonent 規(guī)定地址對(duì)準(zhǔn)原則。Mergeduplicatestrings作優(yōu)化用,將重復(fù)的字符串合并在ー起。Standardstackframe產(chǎn)生一個(gè)標(biāo)準(zhǔn)的棧結(jié)構(gòu)。Teststackoverflow產(chǎn)生一段程序運(yùn)行時(shí)檢測堆棧溢出的代碼。Linenunber 在?OBJ文件中放進(jìn)行號(hào)以供調(diào)試時(shí)用。OBJdebuginformation在.OBJ文件中產(chǎn)生調(diào)試信息。Optimization:它又有許多任選項(xiàng)。Optimizefor選擇是對(duì)程序小型化還是對(duì)程序速度進(jìn)行優(yōu)化處理。Useregistervariable用來選擇是否允許使用寄存器變量。Registeroptimization盡可能使用寄存器變量以減少過多的取數(shù)操作。Jumpoptimization通過去除多余的跳轉(zhuǎn)和調(diào)整循環(huán)與開關(guān)語句的辦法,壓縮代碼。Source:它又有許多任選項(xiàng)。identifierlength說明標(biāo)識(shí)符有效字符的個(gè)數(shù),默認(rèn)為32個(gè)。Nestedcomments是否允許嵌套注釋。ANSIkeywordsonly是只允許ANSI關(guān)鍵字還是也允許TurboC2.0關(guān)鍵字。EiTorErrorstopafter多少個(gè)錯(cuò)誤時(shí)停止編譯,默認(rèn)為25個(gè)。Warningstopafter多少個(gè)警告錯(cuò)誤時(shí)停止編譯,默認(rèn)為100個(gè)。DisplaywarningPortabilitywarning移植性警告錯(cuò)誤。ANSIViolations侵犯了ANS!關(guān)鍵字的警告錯(cuò)誤。Commonerror常見的警告錯(cuò)誤。Lesscommonerror少見的警告錯(cuò)誤。Names:用于改變段(segment)、組(group)和類(class)的名字,默認(rèn)值為CODE,DATA,BSS。Linker:本菜單設(shè)置有關(guān)連接的選擇項(xiàng)Mapfilemenu選擇是否產(chǎn)生,MAP文件。Initializesegments是否在連接時(shí)初始化沒有初始化的段。Devaultlibraries是否在連接其它編譯程序產(chǎn)生的目標(biāo)文件時(shí)去尋找其缺省庫。Graphicslibrary是否連接graphics庫中的函數(shù)。Warnduplicatesymbols當(dāng)有重復(fù)符號(hào)時(shí)產(chǎn)生警告信息。Stackwarinig是否讓連接程序產(chǎn)生Nostack的警告信息。Case-sensitivelink是否區(qū)分大、小寫字。3.Environment:菜單規(guī)定是否對(duì)某些文件自動(dòng)存盤及制表鍵和屏幕大小的設(shè)置Messagetracking:Currentfile跟蹤在編輯窗口中的文件錯(cuò)誤。Allfiles跟蹤所有文件錯(cuò)誤。Off不跟蹤。Keepmessage:編譯前是否清除Message窗口中的信息。Configautosave:選on時(shí);在Run,Shell或退出集成開發(fā)環(huán)境之前,如果TurboC2.0的配置被改過,則所做的改動(dòng)將存入配置文件中。選off時(shí)不存。Editautosave:是否在Run或Shell之前,自動(dòng)存儲(chǔ)編輯的源文件。Backupfile:是否在源文件存盤時(shí)產(chǎn)生后備文件(.BAK文件)。Tabsize:設(shè)置制表鍵大小,默認(rèn)為8。Zoomedwindows:將現(xiàn)行活動(dòng)窗口放大到整個(gè)屏幕,其熱鍵為F5。Screensize設(shè)置屏幕文本大小。Directories:規(guī)定編譯、連接所需文件的路徑Includedirectories:包含文件的路徑,多個(gè)子目錄用”;“分開。Librarydirectories:庫文件路徑,多個(gè)子目錄用";”分開。Outputdirectoried:輸出文件(.OBJ,.EXE,.MAP文件)的目錄。(4)TurboCdirectoried:TurboC所在的目錄。(5)Pickfilename:定義加載的pick文件名,如不定義則從currentpickfile中取。Arguments:允許用戶使用命令行參數(shù)。Saveoptions:保存所有選擇的編譯、連接、調(diào)試和項(xiàng)目到配置文件中,缺省的配置文件為TCCONHGTCoRetriveoptions裝入ー個(gè)配置文件到TC中,TC將使用該文件的選擇項(xiàng)。1.5.7Debug菜單EvaluateExpression要計(jì)算結(jié)果的表達(dá)式。Result顯示表達(dá)式的計(jì)算結(jié)果。Newvalue賦給新值。Callstack:該項(xiàng)不可接觸。而在TurboCdebuger時(shí)用于檢查堆棧情況。Findfunction在運(yùn)行TurboCdebugger時(shí)用于顯示規(guī)定的函數(shù)。Refreshdisplay如果編輯窗口偶然被用戶窗口重寫了可用此恢復(fù)編輯窗U的內(nèi)容。Break/watch菜單Addwatch:向監(jiān)視窗口插入ー監(jiān)視表達(dá)式。Deletewatch:從監(jiān)視窗口中刪除當(dāng)前的監(jiān)視表達(dá)式。Editwatch:在監(jiān)視窗口中編輯ー個(gè)監(jiān)視表達(dá)式。Removeall:watches從監(jiān)視窗口中刪除所有的監(jiān)視表達(dá)式。Togglebreakpoint:對(duì)光標(biāo)所在的行設(shè)置或清除斷點(diǎn)。Clearallbreakpoints:清除所有斷點(diǎn)。Viewnextbreakpoint:將光標(biāo)移動(dòng)到下ー個(gè)斷點(diǎn)處。TurboC2.0的配置文件所謂配置文件是包含TurboC2.0有關(guān)信息的文件,其中存有編譯、連接的選擇和路徑等信息??梢杂孟率龇椒ńurboC2.0的配置:1.建立用戶自命名的配置文件:可以從Options菜單中選擇Options/Saveoptions命令,將當(dāng)前集成開發(fā)環(huán)境的所有配置存入ー個(gè)由用戶命名的配置文件中。下次啟動(dòng)TC時(shí)只要在DOS下鍵入:tc/c<用戶命名的配置文件名〉就會(huì)按這個(gè)配置文件中的內(nèi)容作為TurboC2.0的選擇。2,若設(shè)置Options/Environment/Configautosave為on,則退出集成開發(fā)環(huán)境時(shí),當(dāng)前的設(shè)置會(huì)自動(dòng)存放到TurboC2.0配置文件TCCONFIGTC中。TurboC在啟動(dòng)時(shí)會(huì)自動(dòng)尋找這個(gè)配置文件。3.用TCINST設(shè)置TurboC的有關(guān)配置,并將結(jié)果存入TC.EXE中。TurboC在啟動(dòng)時(shí),若沒有找到配置文件,則取TC.EXE中的缺省值。第二章程序的靈魂ー算法ー個(gè)程序應(yīng)包括:對(duì)數(shù)據(jù)的描述。在程序中要指定數(shù)據(jù)的類型和數(shù)據(jù)的組織形式,即數(shù)據(jù)結(jié)構(gòu)(datastructure)。對(duì)操作的描述。即操作步驟,也就是算法(algorithm).NikiklausWirth提出的公式:數(shù)據(jù)結(jié)構(gòu)+算法=程序教材認(rèn)為:程序=算法+數(shù)據(jù)結(jié)構(gòu)+程序設(shè)計(jì)方法+語言工具和環(huán)境這4個(gè)方面是ー個(gè)程序涉及人員所應(yīng)具備的知識(shí)。算法的概念做任何事情都有一定的步驟。為解決ー個(gè)問題而采取的方法和步驟,就稱為算法。計(jì)算機(jī)算法:計(jì)算機(jī)能夠執(zhí)行的算法??煞譃閮纱箢?數(shù)值運(yùn)算算法:求解數(shù)值:非數(shù)值運(yùn)算算法:事務(wù)管理領(lǐng)域。算法的特性有窮性:ー個(gè)算法應(yīng)包含有限的操作步驟而不能是無限的。確定性:算法中每ー個(gè)步驟應(yīng)當(dāng)是確定的,而不能應(yīng)當(dāng)是含糊的、模棱兩可的。有零個(gè)或多個(gè)輸入。有一個(gè)或多個(gè)輸出。有效性:算法中每ー個(gè)步驟應(yīng)當(dāng)能有效地執(zhí)行,并得到確定的結(jié)果。怎樣表示ー個(gè)算法用自然語言表示算法除了很簡單的問題,一般不用自然語言表示算法。用流程圖表示算法流程圖表示算法,直觀形象,易于理解。ー個(gè)流程圖包括:.表示相應(yīng)操作的框;.帶箭頭的流程線;.框內(nèi)外必要的文字說明。.3.3三種基本結(jié)構(gòu)和改進(jìn)的流程圖.順序結(jié)構(gòu).選擇結(jié)構(gòu).循環(huán)結(jié)構(gòu)三種基本結(jié)構(gòu)的共同特點(diǎn):只有一個(gè)入口;只有一個(gè)出口;結(jié)構(gòu)內(nèi)的每一部分都有機(jī)會(huì)被執(zhí)行到;結(jié)構(gòu)內(nèi)不存在“死循環(huán)”。.3.4用N-S流程圖表示算法.3.5用偽代碼表示算法偽代碼使用介于自然語言和計(jì)算機(jī)語言之間的文字和符號(hào)來描述算法。.3.6用計(jì)算機(jī)語言表示算法我們的任務(wù)是用計(jì)算機(jī)解題,就是用計(jì)算機(jī)實(shí)現(xiàn)算法;用計(jì)算機(jī)語言表示算法必須嚴(yán)格遵循所用語言的語法規(guī)則。2.4結(jié)構(gòu)化程序設(shè)計(jì)方法自頂向下;逐步細(xì)化;模塊化設(shè)計(jì);結(jié)構(gòu)化編碼。第三章數(shù)據(jù)類型、運(yùn)算符與表達(dá)式3.1C語言的數(shù)據(jù)類型對(duì)變量的定義可以包括三個(gè)方面:數(shù)據(jù)類型、存儲(chǔ)類型、作用域所謂數(shù)據(jù)類型是按被定義變量的性質(zhì),表示形式,占據(jù)存儲(chǔ)空間的多少,構(gòu)造特點(diǎn)來劃分的。在C語言中,數(shù)據(jù)類型可分為:基本數(shù)據(jù)類型,構(gòu)造數(shù)據(jù)類型,指針類型,空類型四大類。1.基本數(shù)據(jù)類型:基本數(shù)據(jù)類型最主要的特點(diǎn)是,其值不可以再分解為其它類型。也就是說,基本數(shù)據(jù)類型是自我說明的。.構(gòu)造數(shù)據(jù)類型:構(gòu)造數(shù)據(jù)類型是根據(jù)已定義的ー個(gè)或多個(gè)數(shù)據(jù)類型用構(gòu)造的方法來定義的。也就是說,ー個(gè)構(gòu)造類型的值可以分解成若干個(gè)“成員”或“元素”。每個(gè)“成員”都是ー個(gè)基本數(shù)據(jù)類型或又是ー個(gè)構(gòu)造類型。在C語言中,構(gòu)造類型有以下幾種:數(shù)組類型、結(jié)構(gòu)體類型、共用體(聯(lián)合)類型.指針類型:指針是ー種特殊的,同時(shí)又是具有重要作用的數(shù)據(jù)類型。其值用來表示某個(gè)變量在內(nèi)存儲(chǔ)器中的地址。雖然指針變量的取值類似于整型量,但這是兩個(gè)類型完全不同的量,因此不能混為ー談。.空類型:在調(diào)用函數(shù)值時(shí),通常應(yīng)向調(diào)用者返回一個(gè)函數(shù)值。這個(gè)返回的函數(shù)值是具有一定的數(shù)據(jù)類型的,應(yīng)在函數(shù)定義及函數(shù)說明中給以說明。但是,也有一類函數(shù),調(diào)用后并不需要向調(diào)用者返回函數(shù)值,這種函數(shù)可以定義為“空類型’’。其類型說明符為void。常量與變量對(duì)于基本數(shù)據(jù)類型量,按其取值是否可改變又分為常量和變量兩種。在程序執(zhí)行過程中,其值不發(fā)生改變的量稱為常量,其值可變的量稱為變量。它們可與數(shù)據(jù)類型結(jié)合起來分類。在程序中,常量是可以不經(jīng)說明而直接引用的,而變量則必須先定義后使用。整型量包括整型常量、整型變量。常量和符號(hào)常量在程序執(zhí)行過程中,其值不發(fā)生改變的量稱為常量。直接常量(字面常量):整型常量:12、〇、ー3;實(shí)型常量:4.6、ー1.23;字符常量:'a‘、'b'標(biāo)識(shí)符:用來標(biāo)識(shí)變量名、符號(hào)常量名、函數(shù)名、數(shù)組名、類型名、文件名的有效字符序列。符號(hào)常量:用標(biāo)示符代表ー個(gè)常量。在C語言中,可以用一個(gè)標(biāo)識(shí)符來表示一個(gè)常量,稱之為符號(hào)常量。符號(hào)常量在使用之前必須先定義,其一般形式為:#define標(biāo)識(shí)符常量其中#define也是一條預(yù)處理命令(預(yù)處理命令都以"#"開頭),稱為宏定義命令,其功能是把該標(biāo)識(shí)符定義為其后的常量值。ー經(jīng)定義,以后在程序中所有出現(xiàn)該標(biāo)識(shí)符的地方均代之以該常量值。習(xí)慣上符號(hào)常量的標(biāo)識(shí)符用大寫字母,變量標(biāo)識(shí)符用小寫字母,以示區(qū)別。用標(biāo)識(shí)符代表ー個(gè)常量,稱為符號(hào)常量。符號(hào)常量與變量不同,它的值在其作用域內(nèi)不能改變,也不能再被賦值。使用符號(hào)常量的好處是:含義清楚;能做到‘‘ー改全改”。變量其值可以改變的量稱為變量。ー個(gè)變量應(yīng)該有一個(gè)名字,在內(nèi)存中占據(jù)一定的存儲(chǔ)單元。變量定義必須放在變量使用之前。一般放在函數(shù)體的開頭部分。要區(qū)分變量名和變量值是兩個(gè)不同的概念。整型數(shù)據(jù)整型常量的表示方法整型常量就是整常數(shù)。在C語言中,使用的整常數(shù)有八進(jìn)制、十六進(jìn)制和十進(jìn)制三種。1)十進(jìn)制整常數(shù):十進(jìn)制整常數(shù)沒有前綴。其數(shù)碼為〇?9。2)八進(jìn)制整常數(shù):八進(jìn)制整常數(shù)必須以〇開頭,即以〇作為ハ進(jìn)制數(shù)的前綴。數(shù)碼取值為〇?7。ハ進(jìn)制數(shù)通常是無符號(hào)數(shù)。3)十六進(jìn)制整常數(shù):十六進(jìn)制整常數(shù)的前綴為OX或Ox。其數(shù)碼取值為0~9,A~F或a~f。4)整型常數(shù)的后綴:在16位字長的機(jī)器上,基本整型的長度也為16位,因此表示的數(shù)的范圍也是有限定的。十進(jìn)制無符號(hào)整常數(shù)的范圍為0?65535,有符號(hào)數(shù)為ー32768?+32767。ハ進(jìn)制無符號(hào)數(shù)的表示范圍為〇?0177777。十六進(jìn)制無符號(hào)數(shù)的表示范圍為0X0?OXFFFF或Ox〇?。xFFFF。如果使用的數(shù)超過了上述范圍,就必須用長整型數(shù)來表示。長整型數(shù)是用后綴“L"或’り”來表示的。長整數(shù)158L和基本整常數(shù)158在數(shù)值上并無區(qū)別。但對(duì)158L,因?yàn)槭情L整型量,C編譯系統(tǒng)將為它分配4個(gè)字節(jié)存儲(chǔ)空間。而對(duì)158,因?yàn)槭腔菊?只分配2個(gè)字節(jié)的存儲(chǔ)空間。無符號(hào)數(shù)也可用后綴表示,整型常數(shù)的無符號(hào)數(shù)的后綴為“U”或"u”。前綴,后綴可同時(shí)使用以表示各種類型的數(shù)。整型變量.整型數(shù)據(jù)在內(nèi)存中的存放形式數(shù)值是以補(bǔ)碼表示的:正數(shù)的補(bǔ)碼和原碼相同;負(fù)數(shù)的補(bǔ)碼:將該數(shù)的絕對(duì)值的二進(jìn)制形式按位取反再加1。.整型變量的分類1)基本型:類型說明符為int,在內(nèi)存中占2個(gè)字節(jié)。2)短整量:類型說明符為shortint或short。所占字節(jié)和取值范圍均與基本型相同。3)長整型:類型說明符為10ngint或long,在內(nèi)存中占4個(gè)字節(jié)。4)無符號(hào)型:類型說明符為unsigned。無符號(hào)型又可與上述三種類型匹配而構(gòu)成:無符號(hào)基本型:類型說明符為unsignedint或unsigned-無符號(hào)短整型:類型說明符為unsignedshort。無符號(hào)長整型:類型說明符為unsignedlong〇各種無符號(hào)類型量所占的內(nèi)存空間字節(jié)數(shù)與相應(yīng)的有符號(hào)類型量相同。但由于省去了符號(hào)位,故不能表示負(fù)數(shù)。下表列出了TurboC中各類整型量所分配的內(nèi)存字節(jié)數(shù)及數(shù)的表示范圍。類型說明符數(shù)的范圍字節(jié)數(shù)int-32768-32767即ー215~(215-1)2unsignednt0-65535即0-(216-1)2shortht-32768-32767即-215~(215-1)2unsignedshortint0~65535即0-(216-1)2longht-2147483648-2147483647即ー231~(231-1)4unsignedbng0~4294967295即0-(232-1)43.整型變量的定義變量定義的一般形式為:類型說明符變量名標(biāo)識(shí)符,變量名標(biāo)識(shí)符,例如:inta,b,c;(a,b,c為整型變量)在書寫變量定義時(shí),應(yīng)注意以下幾點(diǎn):允許在ー個(gè)類型說明符后,定義多個(gè)相同類型的變量。各變量名之間用逗號(hào)間隔。類型說明符與變量名之間至少用ー個(gè)空格間隔。最后ー個(gè)變量名之后必須以“;”號(hào)結(jié)尾。變量定義必須放在變量使用之前。一般放在函數(shù)體的開頭部分。4.整型數(shù)據(jù)的溢出3.4實(shí)型數(shù)據(jù)3.4.1實(shí)型常量的表示方法實(shí)型也稱為浮點(diǎn)型。實(shí)型常量也稱為實(shí)數(shù)或浮點(diǎn)數(shù)。在C語言中,實(shí)數(shù)只采用十進(jìn)制。它有兩種形式:十進(jìn)制小數(shù)形式,指數(shù)形式。1)十進(jìn)制數(shù)形式:由數(shù)碼〇?9和小數(shù)點(diǎn)組成。例如:0.0、25.0、5.789、0.13、5.0、30〇.、ー267.8230等均為合法的實(shí)數(shù)。注意,必須有小數(shù)點(diǎn)。2)指數(shù)形式:由十進(jìn)制數(shù),加階碼標(biāo)志“e”或"E”以及階碼(只能為整數(shù),可以帶符號(hào))組成。其一般形式為:aEn(a為十進(jìn)制數(shù),n為十進(jìn)制整數(shù))其值為a*10n.如:2.1E5(等于2.1*105)3.7E-2(等于3.7*10-2)0.5E7(等于。.5*107)-2.8E-2(等于ー2.8*10-2)標(biāo)準(zhǔn)C允許浮點(diǎn)數(shù)使用后綴。后綴為“f”或"F”即表示該數(shù)為浮點(diǎn)數(shù)。如356f和356.是等價(jià)的。實(shí)型變量.實(shí)型數(shù)據(jù)在內(nèi)存中的存放形式實(shí)型數(shù)據(jù)一般占4個(gè)字節(jié)(32位)內(nèi)存空間。按指數(shù)形式存儲(chǔ)。實(shí)數(shù)3.14159在內(nèi)存中的存放形式如下:+ .314159 1數(shù)符 小數(shù)部分 指數(shù)小數(shù)部分占的位(bit)數(shù)愈多,數(shù)的有效數(shù)字愈多,精度愈高。指數(shù)部分占的位數(shù)愈多,則能表示的數(shù)值范圍愈大。.實(shí)型變量的分類實(shí)型變量分為:單精度(float型)、雙精度(double型)和長雙精度(longdouble型)三類。在TurboC中單精度型占4個(gè)字節(jié)(32位)內(nèi)存空間,其數(shù)值范圍為3.4E-38?3.4E+38,只能提供七位有效數(shù)字。雙精度型占8個(gè)字節(jié)(64位)內(nèi)存空間,其數(shù)值范圍為1.7E-308-1.7E+308,可提供16位有效數(shù)字。類型說明符比特?cái)?shù)(字節(jié)數(shù))有效數(shù)字?jǐn)?shù)的范圍float32(4)6?710-37?1038double64(8)15?1610-307?10308longdoible 128(16) 18-19 10-4931-104932實(shí)型變量定義的格式和書寫規(guī)則與整型相同。.實(shí)型數(shù)據(jù)的舍入誤差由于實(shí)型變量是由有限的存儲(chǔ)單元組成的,因此能提供的有效數(shù)字總是有限的。實(shí)型常數(shù)的類型實(shí)型常數(shù)不分單、雙精度,都按雙精度double型處理。.5字符型數(shù)據(jù)字符型數(shù)據(jù)包括字符常量和字符變量。字符常量字符常量是用單引號(hào)括起來的一個(gè)字符。例如:'a\'b\'=\'+\'?'在C語言中,字符常量有以下特點(diǎn):1)字符常量只能用單引號(hào)括起來,不能用雙引號(hào)或其它括號(hào)。2)字符常量只能是單個(gè)字符,不能是字符串。3)字符可以是字符集中任意字符。但數(shù)字被定義為字符型之后就不能參與數(shù)值運(yùn)算。轉(zhuǎn)義字符轉(zhuǎn)義字符是ー種特殊的字符常量。轉(zhuǎn)義字符以反斜線”ヾ開頭,后跟ー個(gè)或幾個(gè)字符。轉(zhuǎn)義字符具有特定的含義,不同于字符原有的意義。轉(zhuǎn)義字符主要用來表示那些用一般字符不便于表示的控制代碼。常用的轉(zhuǎn)義字符及其含義轉(zhuǎn)義字符轉(zhuǎn)義字符的意義ASCII代碼\n回車換行10\t橫向跳到下?制表位置9\b退格8\r回車13\f走紙換頁12\\反斜線符"'"92V單引號(hào)符39雙引號(hào)符34\a鳴鈴7\ddd 1?3位ハ進(jìn)制數(shù)所代表的字符\xhh 1-2位十六進(jìn)制數(shù)所代表的字符廣義地講,C語言字符集中的任何ー個(gè)字符均可用轉(zhuǎn)義字符來表示。表中的、ddd和Xxhh正是為此而提出的。ddd和hh分別為ハ進(jìn)制和十六進(jìn)制的ASCI!代碼。如'101表示字母"A",'102表示字母"B",'134表示反斜線,\XOA表示換行等。字符變量字符變量用來存儲(chǔ)字符常量,即單個(gè)字符。字符變量的類型說明符是char。字符變量類型定義的格式和書寫規(guī)則都與整型變量相同。字符數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式及使用方法每個(gè)字符變量被分配ー個(gè)字節(jié)的內(nèi)存空間,因此只能存放ー個(gè)字符。字符值是以ASCI碼的形式存放在變量的內(nèi)存單元之中的。所以也可以把它們看成是整型量。C語言允許對(duì)整型變量賦以字符值,也允許對(duì)字符變量賦以整型值。在輸出時(shí),允許把字符變量按整型量輸出,也允許把整型量按字符量輸出。整型量為二字節(jié)量,字符量為單字節(jié)量,當(dāng)整型量按字符型量處理時(shí),只有低八位字節(jié)參與處理。字符串常量字符串常量是由一對(duì)雙引號(hào)括起的字符序列。字符串常量和字符常量是不同的量。它們之間主要有以下區(qū)別:1)字符常量由單引號(hào)括起來,字符串常量由雙引號(hào)括起來。2)字符常量只能是單個(gè)字符,字符串常量則可以含一個(gè)或多個(gè)字符。3)可以把一個(gè)字符常量賦予ー個(gè)字符變量,但不能把ー個(gè)字符串常量賦予ー個(gè)字符變量。在C語言中沒有相應(yīng)的字符串變量。但是可以用一個(gè)字符數(shù)組來存放ー個(gè)字符串常量。4)字符常量占ー個(gè)字節(jié)的內(nèi)存空間。字符串常量占的內(nèi)存字節(jié)數(shù)等于字符串中字節(jié)數(shù)加1。增加的一個(gè)字節(jié)中存放字符"'0"(ASCII碼為0)。這是字符串結(jié)束的標(biāo)志。.6變量賦初值在程序中常常需要對(duì)變量賦初值,以便使用變量。在變量定義中賦初值的一般形式為:類型說明符變量に值1,變量2=值2,……;應(yīng)注意,在定義中不允許連續(xù)賦值,如a=b=c=5是不合法的。.?各類數(shù)值型數(shù)據(jù)之間的混合運(yùn)算變量的數(shù)據(jù)類型是可以轉(zhuǎn)換的。轉(zhuǎn)換的方法有兩種,ー種是自動(dòng)轉(zhuǎn)換,ー種是強(qiáng)制轉(zhuǎn)換。自動(dòng)轉(zhuǎn)換發(fā)生在不同數(shù)據(jù)類型的量混合運(yùn)算時(shí),由編譯系統(tǒng)自動(dòng)完成。自動(dòng)轉(zhuǎn)換遵循以下規(guī)則:1)若參與運(yùn)算量的類型不同,則先轉(zhuǎn)換成同一類型,然后進(jìn)行運(yùn)算。2)轉(zhuǎn)換按數(shù)據(jù)長度增加的方向進(jìn)行,以保證精度不降低。3)所有的浮點(diǎn)運(yùn)算都是以雙精度進(jìn)行的,即使僅含float單精度量運(yùn)算的表達(dá)式,也要先轉(zhuǎn)換成double型,再作運(yùn)算。)char型和short型參與運(yùn)算時(shí),必須先轉(zhuǎn)換成int型。5)在賦值運(yùn)算中,賦值號(hào)兩邊量的數(shù)據(jù)類型不同時(shí),賦值號(hào)右邊量的類型將轉(zhuǎn)換為左邊量的類型。如果右邊量的數(shù)據(jù)類型長度比左邊長時(shí),將丟失一部分?jǐn)?shù)據(jù),這樣會(huì)降低精度,丟失的部分按四舍五入向前舍入。強(qiáng)制類型轉(zhuǎn)換強(qiáng)制類型轉(zhuǎn)換是通過類型轉(zhuǎn)換運(yùn)算來實(shí)現(xiàn)的。其一般形式為:(類型說明符)(表達(dá)式)其功能是把表達(dá)式的運(yùn)算結(jié)果強(qiáng)制轉(zhuǎn)換成類型說明符所表示的類型。在使用強(qiáng)制轉(zhuǎn)換時(shí)應(yīng)注意以下問題:1)類型說明符和表達(dá)式都必須加括號(hào)(單個(gè)變量可以不加括號(hào))。2)無論是強(qiáng)制轉(zhuǎn)換或是自動(dòng)轉(zhuǎn)換,都只是為了本次運(yùn)算的需要而對(duì)變量的數(shù)據(jù)長度進(jìn)行的臨時(shí)性轉(zhuǎn)換,而不改變數(shù)據(jù)說明時(shí)對(duì)該變量定義的類型。3.8算術(shù)運(yùn)算符和算術(shù)表達(dá)式C語言的運(yùn)算符不僅具有不同的優(yōu)先級(jí),而且還有一個(gè)特點(diǎn),就是它的結(jié)合性。在表達(dá)式中,各運(yùn)算量參與運(yùn)算的先后順序不僅要遵守運(yùn)算符優(yōu)先級(jí)別的規(guī)定,還要受運(yùn)算符結(jié)合性的制約,以便確定是自左向右進(jìn)行運(yùn)算還是自右向左進(jìn)行運(yùn)算。C運(yùn)算符簡介C語言的運(yùn)算符可分為以下幾類:.算術(shù)運(yùn)算符:用于各類數(shù)值運(yùn)算。包括加(+)、減G)、乘(*)、除(/)、求余(或稱模運(yùn)算,%)、自增(++)、自減(一)共七種。.關(guān)系運(yùn)算符:用于比較運(yùn)算。包括大于0)、小于(<)、等于(==)、大于等于(>=)、小于等于(<=)和不等于(!=)六種。.邏輯運(yùn)算符:用于邏輯運(yùn)算。包括與(&&)、或(II)、非⑴三種。4,位操作運(yùn)算符:參與運(yùn)算的量,按二進(jìn)制位進(jìn)行運(yùn)算。包括位與(&)、位或(I)、位非(一)、位異或(ッ、左移(<<)、右移(>>)六種。.賦值運(yùn)算符:用于賦值運(yùn)算,分為簡單賦值(=)、復(fù)合算術(shù)賦值(+=,-=,*=,/=,%=)和復(fù)合位運(yùn)算賦值(&=」=,△=,?=,?=)三類共4^一"種。.條件運(yùn)算符:這是ー個(gè)三目運(yùn)算符,用于條件求值。:)。.逗號(hào)運(yùn)算符:用于把若干表達(dá)式組合成一個(gè)表達(dá)式(,)。.指針運(yùn)算符:用于取內(nèi)容(*)和取地址(&)二種運(yùn)算。.求字節(jié)數(shù)運(yùn)算符:用于計(jì)算數(shù)據(jù)類型所占的字節(jié)數(shù)(sizeof)。.特殊運(yùn)算符:有括號(hào)。,下標(biāo)ロ,成員(一,.)等幾種。3.8.2算術(shù)運(yùn)算符和算術(shù)表達(dá)式.基本的算術(shù)運(yùn)算符加法運(yùn)算符“+”:加法運(yùn)算符為雙目運(yùn)算符,即應(yīng)有兩個(gè)量參與加法運(yùn)算,左結(jié)合性。減法運(yùn)算符“-”:減法運(yùn)算符為雙目運(yùn)算符,但“-”也可作負(fù)值運(yùn)算符,此時(shí)為單目運(yùn)算,左結(jié)合性。乘法運(yùn)算符“*”:雙目運(yùn)算,具有左結(jié)合性。除法運(yùn)算符“/”:雙目運(yùn)算具有左結(jié)合性。參與運(yùn)算量均為整型時(shí),結(jié)果也為整型,舍去小數(shù)。如果運(yùn)算量中有一個(gè)是實(shí)型,則結(jié)果為雙精度實(shí)型。求余運(yùn)算符(模運(yùn)算符)“%”:雙目運(yùn)算,具有左結(jié)合性。要求參與運(yùn)算的量均為整型。求余運(yùn)算的結(jié)果等于兩數(shù)相除后的余數(shù)。.算術(shù)表達(dá)式和運(yùn)算符的優(yōu)先級(jí)和結(jié)合性表達(dá)式是由常量、變量、函數(shù)和運(yùn)算符組合起來的式子。一個(gè)表達(dá)式有一個(gè)值及其類型,它們等于計(jì)算表達(dá)式所得結(jié)果的值和類型。表達(dá)式求值按運(yùn)算符的優(yōu)先級(jí)和結(jié)合性規(guī)定的順序進(jìn)行。單個(gè)的常量、變量、函數(shù)可以看作是表達(dá)式的特例。算術(shù)表達(dá)式:用算術(shù)運(yùn)算符和括號(hào)將運(yùn)算對(duì)象(也稱操作數(shù))連接起來的、符合C語法規(guī)則的式子。運(yùn)算符的優(yōu)先級(jí):C語言中,運(yùn)算符的運(yùn)算優(yōu)先級(jí)共分為15級(jí)。1級(jí)最高,15級(jí)最低。在表達(dá)式中,優(yōu)先級(jí)較高的先于優(yōu)先級(jí)較低的進(jìn)行運(yùn)算。而在一個(gè)運(yùn)算量兩側(cè)的運(yùn)算符優(yōu)先級(jí)相同時(shí),則按運(yùn)算符的結(jié)合性所規(guī)定的結(jié)合方向處理。運(yùn)算符的結(jié)合性:C語言中各運(yùn)算符的結(jié)合性分為兩種,即左結(jié)合性(自左至右)和右結(jié)合性(自右至左)。例如算術(shù)運(yùn)算符的結(jié)合性是自左至右,即先左后右。如有表達(dá)式x-y+z則y應(yīng)先與“一”號(hào)結(jié)合,執(zhí)行x-y運(yùn)算,然后再執(zhí)行+z的運(yùn)算。這種自左至右的結(jié)合方向就稱為“左結(jié)合性”。而自右至左的結(jié)合方向稱為“右結(jié)合性”。最典型的右結(jié)合性運(yùn)算符是賦值運(yùn)算符。如x=y=z,由于“=”的右結(jié)合性,應(yīng)先執(zhí)行y=z再執(zhí)行x=(y=z)運(yùn)算。.強(qiáng)制類型轉(zhuǎn)換運(yùn)算符其一般形式為:(類型說明符)(表達(dá)式)其功能是把表達(dá)式的運(yùn)算結(jié)果強(qiáng)制轉(zhuǎn)換成類型說明符所表示的類型。.自增、自減運(yùn)算符自增1,自減1運(yùn)算符咱增1運(yùn)算符記為“++”,其功能是使變量的值自增1。自減1運(yùn)算符記為“--”,其功能是使變量值自減1。自增1,自減1運(yùn)算符均為單目運(yùn)算,都具有右結(jié)合性??捎幸韵聨追N形式:++ii自增1后再參與其它運(yùn)算。-ii自減1后再參與其它運(yùn)算。i++ i參與運(yùn)算后,i的值再自增loi參與運(yùn)算后,i的值再自減1?!纠?.1】main(){inti=8;printf(M%d\nM,++i);printf("%d\n二--i);printf(,,%d\n,',i++);printf(',%d\n,,,i-);printf(n%d\nn,-i++);printf(,,%d\n",-i—);)i的初值為8I第2行i加1后輸出故為9,第3行減1后輸出故為8;第4行輸出i為8之后再加1(為9);第5行輸出i為9之后再減1(為8);第6行輸出ー8之后再加1(為9),第7行輸出ー9之后再減1(為8)?【例3.2】main(){inti=5,j=5,p,q;p=(i++)+(i++)+(i++);q=(++j)+(++j)+(++j);printf("%d,%d,%d,%d",p,q,ij);I這個(gè)程序中,對(duì)P=(i++)+(i++)+(i++)應(yīng)理解為三個(gè)i相加,故P值為15。然后i再自增1三次相當(dāng)于加3故i的最后值為8。而對(duì)于q的值則不然,q=(++j)+(++j)+(++j)應(yīng)理解為q先自增1,再參與運(yùn)算,由于q自增1三次后值為8,三個(gè)8相加的和為24,j的最后值仍為8。3.9賦值運(yùn)算符和賦值表達(dá)式.賦值運(yùn)算符簡單賦值運(yùn)算符和表達(dá)式:簡單賦值運(yùn)算符記為“ゴ’。由“=”連接的式子稱為賦值表達(dá)式。其?般形式為:變量=表達(dá)式賦值表達(dá)式的功能是計(jì)算表達(dá)式的值再賦予左邊的變量。賦值運(yùn)算符具有右結(jié)合性。因此a=b=c=5可理解為a=(b=(c=5))在其它高級(jí)語言中,賦值構(gòu)成了一個(gè)語句,稱為賦值語句。而在C中,把“=”定義為運(yùn)算符,從而組成賦值表達(dá)式。凡是表達(dá)式可以出現(xiàn)的地方均可出現(xiàn)賦值表達(dá)式。在C語言中也可以組成賦值語句,按照C語言規(guī)定,任何表達(dá)式在其未尾加上分號(hào)就構(gòu)成為語句。.類型轉(zhuǎn)換如果賦值運(yùn)算符兩邊的數(shù)據(jù)類型不相同,系統(tǒng)將自動(dòng)進(jìn)行類型轉(zhuǎn)換,即把賦值號(hào)右邊的類型換成左邊的類型。具體規(guī)定如下:1)實(shí)型賦予整型,舍去小數(shù)部分。2)整型賦予實(shí)型,數(shù)值不變,但將以浮點(diǎn)形式存放,即增加小數(shù)部分(小數(shù)部分的值為0)。3)字符型賦予整型,由于字符型為ー個(gè)字節(jié),而整型為二個(gè)字節(jié),故將字符的ASCI!碼值放到整型量的低八位中,高八位為0。整型賦予字符型,只把低八位賦予字符量。.復(fù)合的賦值運(yùn)算符在賦值符“=”之前加上其它二目運(yùn)算符可構(gòu)成復(fù)合賦值符。如+=,?=,*=,/=,%=,<<=,?=,&=,A=,I=0構(gòu)成復(fù)合賦值表達(dá)式的一般形式為:變量雙目運(yùn)算符=表達(dá)式它等效于變量=變量運(yùn)算符表達(dá)式復(fù)合賦值符這種寫法,對(duì)初學(xué)者可能不習(xí)慣,但十分有利于編譯處理,能提高編譯效率并產(chǎn)生質(zhì)量較高的目標(biāo)代碼。3.10逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式在C語言中逗號(hào)“,”也是ー種運(yùn)算符,稱為逗號(hào)運(yùn)算符。其功能是把兩個(gè)表達(dá)式連接起來組成一個(gè)表達(dá)式,稱為逗號(hào)表達(dá)式。其一般形式為:表達(dá)式!,表達(dá)式2其求值過程是分別求兩個(gè)表達(dá)式的值,并以表達(dá)式2的值作為整個(gè)逗號(hào)表達(dá)式的值?!纠?.3】main()(inta=2,b=4,c=6,x,y;y=(x=a+b),(b+c);printf("y=%d,x=%d",y,x);)本例中,y等于整個(gè)逗號(hào)表達(dá)式的值,也就是表達(dá)式2的值,X是第一個(gè)表達(dá)式的值。對(duì)于逗號(hào)表達(dá)式還要說明兩點(diǎn):1)逗號(hào)表達(dá)式一般形式中的表達(dá)式1和表達(dá)式2也可以又是逗號(hào)表達(dá)式,形成嵌套情形。因此可以把逗號(hào)表達(dá)式擴(kuò)展為以下形式:表達(dá)式1,表達(dá)式2,…表達(dá)式n整個(gè)逗號(hào)表達(dá)式的值等于表達(dá)式n的值。2)程序中使用逗號(hào)表達(dá)式,通常是要分別求逗號(hào)表達(dá)式內(nèi)各表達(dá)式的值,并不一定要求整個(gè)逗號(hào)表達(dá)式的值。并不是在所有出現(xiàn)逗號(hào)的地方都組成逗號(hào)表達(dá)式,如在變量說明中,函數(shù)參數(shù)表中逗號(hào)只是用作各變量之間的間隔符。3.11小結(jié)C的數(shù)據(jù)類型基本類型,構(gòu)造類型,指針類型,空類型3.11.2基本類型的分類及特點(diǎn)數(shù)值范圍類型說明符字節(jié)字符型char1C字符集基本整型int2■32768?32767短整型shortht2?32768?32767長整型longht4■214783648?214783647無符號(hào)型unsigned2〇?65535無符號(hào)長整型unsignedbng4〇?4294967295單精度實(shí)型float43/4E-38?3/4E+38雙精度實(shí)型double81/7E-308?1/7E+308常量后綴L或1長整型U或u無符號(hào)數(shù)F或f 浮點(diǎn)數(shù)常量類型整數(shù),長整數(shù),無符號(hào)數(shù),浮點(diǎn)數(shù),字符,字符串,符號(hào)常數(shù),轉(zhuǎn)義字符。數(shù)據(jù)類型轉(zhuǎn)換自動(dòng)轉(zhuǎn)換:在不同類型數(shù)據(jù)的混合運(yùn)算中,由系統(tǒng)自動(dòng)實(shí)現(xiàn)轉(zhuǎn)換,由少字節(jié)類型向多字節(jié)類型轉(zhuǎn)換。不同類型的量相互賦值時(shí)也由系統(tǒng)自動(dòng)進(jìn)行轉(zhuǎn)換,把賦值號(hào)右邊的類型轉(zhuǎn)換為左邊的類型。強(qiáng)制轉(zhuǎn)換:由強(qiáng)制轉(zhuǎn)換運(yùn)算符完成轉(zhuǎn)換。運(yùn)算符優(yōu)先級(jí)和結(jié)合性一般而言,單目運(yùn)算符優(yōu)先級(jí)較高,賦值運(yùn)算符優(yōu)先級(jí)低。算術(shù)運(yùn)算符優(yōu)先級(jí)較高,關(guān)系和邏輯運(yùn)算符優(yōu)先級(jí)較低。多數(shù)運(yùn)算符具有左結(jié)合性,單目運(yùn)算符、三目運(yùn)算符、賦值運(yùn)算符具有右結(jié)合性。表達(dá)式表達(dá)式是由運(yùn)算符連接常量、變量、函數(shù)所組成的式子。每個(gè)表達(dá)式都有一個(gè)值和類型。表達(dá)式求值按運(yùn)算符的優(yōu)先級(jí)和結(jié)合性所規(guī)定的順序進(jìn)行。第四章最簡單的c程序設(shè)計(jì)ー順序程序設(shè)計(jì)從程序流程的角度來看,程序可以分為三種基本結(jié)構(gòu),即順序結(jié)構(gòu)、分支結(jié)構(gòu)、循環(huán)結(jié)構(gòu)。4.1C語句概述C程序的結(jié)構(gòu):c程序的執(zhí)行部分是由語句組成的。程序的功能也是由執(zhí)行語句實(shí)現(xiàn)的。C語句可分為以下五類:1)表達(dá)式語句2)函數(shù)調(diào)用語句3)控制語句4)復(fù)合語句5)空語句.表達(dá)式語句:表達(dá)式語句由表達(dá)式加上分號(hào)組成。其ー?般形式為:表達(dá)式;執(zhí)行表達(dá)式語句就是計(jì)算表達(dá)式的值。.函數(shù)調(diào)用語句:由函數(shù)名、實(shí)際參數(shù)加上分號(hào)“;”組成。其一般形式為:函數(shù)名(實(shí)際參數(shù)表);執(zhí)行函數(shù)語句就是調(diào)用函數(shù)體并把實(shí)際參數(shù)賦予函數(shù)定義中的形式參數(shù),然后執(zhí)行被調(diào)函數(shù)體中的語句,求取函數(shù)值。.控制語句:控制語句用于控制程序的流程,以實(shí)現(xiàn)程序的各種結(jié)構(gòu)方式。它們由特定的語句定義符組成。C語言有九種控制語句。可分成以下三類:1)條件判斷語句:if語句、switch語句:2)循環(huán)執(zhí)行語句:dowhile語句、while語句、for語句;3)轉(zhuǎn)向語句:break語句、goto語句、continue語句、return語句。.復(fù)合語句:把多個(gè)語句用括號(hào){}括起來組成的一個(gè)語句稱復(fù)合語句。在程序中應(yīng)把復(fù)合語句看成是單條語句,而不是多條語句。復(fù)合語句內(nèi)的各條語句都必須以分號(hào)“;”結(jié)尾,在括號(hào)“ド外不能加分號(hào)。.空語句:只有分號(hào)“;”組成的語句稱為空語句??照Z句是什么也不執(zhí)行的語句。在程序中空語句可用來作空循環(huán)體。例如while(getchar()!='\n,)本語句的功能是,只要從鍵盤輸入的字符不是回車則重新輸入。這里的循環(huán)體為空語句。.2賦值語句賦值語句是由賦值表達(dá)式再加上分號(hào)構(gòu)成的表達(dá)式語句。其一般形式為:變量=表達(dá)式;賦值語句的功能和特點(diǎn)都與賦值表達(dá)式相同。它是程序中使用最多的語句之一。在賦值語句的使用中需要注意以下幾點(diǎn):.由于在賦值符“=”右邊的表達(dá)式也可以又是ー個(gè)賦值表達(dá)式,因此,下述形式變量=(變量=表達(dá)式);是成立的,從而形成嵌套的情形。其展開之后的一般形式為:變量=變量h“=表達(dá)式;.注意在變量說明中給變量賦初值和賦值語句的區(qū)別。給變量賦初值是變量說明的一部分,賦初值后的變量與其后的其它同類變量之間仍必須用逗號(hào)間隔,而賦值語句則必須用分號(hào)結(jié)尾。.在變量說明中,不允許連續(xù)給多個(gè)變量賦初值,而賦值語句允許連續(xù)賦值。.注意賦值表達(dá)式和賦值語句的區(qū)別。賦值表達(dá)式是一種表達(dá)式,它可以出現(xiàn)在任何允許表達(dá)式出現(xiàn)的地方,而賦值語句則不能。數(shù)據(jù)輸入輸出的概念及在C語言中的實(shí)現(xiàn)1)所謂輸入輸出是以計(jì)算機(jī)為主體而言的。2)本章介紹的是向標(biāo)準(zhǔn)輸出設(shè)備顯示器輸出數(shù)據(jù)的語句。3)在C語言中,所有的數(shù)據(jù)輸入/輸出都是由庫函數(shù)完成的。因此都是函數(shù)語句。4)在使用C語言庫函數(shù)時(shí),要用預(yù)編譯命令#include將有關(guān)“頭文件”包括到源文件中。使用標(biāo)準(zhǔn)輸入輸出庫函數(shù)時(shí)要用到“stdio.h”文件,因此源文件開頭應(yīng)有以下預(yù)編譯命令:#include<stdio.h>或#include^^stdio.h^^stdio是standardinput&outupt的意思。5)考慮到printf和scanf函數(shù)使用頻繁,系統(tǒng)允許在使用這兩個(gè)函數(shù)時(shí)可不加#includevstdio.h>或#include"stdio.h"字符數(shù)據(jù)的輸入輸出putchar函數(shù)(字符輸出函數(shù))putchar函數(shù)是字符輸出函數(shù),其功能是在顯示器上輸出単個(gè)字符。其ー一般形式為:putchar();對(duì)控制字符則執(zhí)行控制功能,不在屏幕上顯示。使用本函數(shù)前必須要用文件包含命令:#include<stdio.h>或#include"stdio.h"getchar函數(shù)(鍵盤輸入函數(shù))getchar函數(shù)的功能是從鍵盤上輸入一個(gè)字符。其ー?般形式為:getchar();通常把輸入的字符賦予ー個(gè)字符變量,構(gòu)成賦值語句。使用getchar函數(shù)還應(yīng)注意兒個(gè)問題:getchar函數(shù)只能接受單個(gè)字符,輸入數(shù)字也按字符處理。輸入多于ー個(gè)字符時(shí),只接收第一個(gè)字符。2)使用本函數(shù)前必須包含文件“stdio.h"。3)在TC屏幕下運(yùn)行含本函數(shù)程序時(shí),將退出TC屏幕進(jìn)入用戶屏幕等待用戶輸入。輸入完畢再返回TC屏幕。4)程序最后兩行可用下面兩行的任意一行代替:putchar(getchar());printf("%c”,getchar。);格式輸入與輸出printf函數(shù)(格式輸出函數(shù))printf函數(shù)稱為格式輸加函數(shù),其關(guān)鍵字最末一個(gè)字母f即為“格式”(format)之意。其功能是按用戶指定的格式,把指定的數(shù)據(jù)顯示到顯示器屏幕上。l.printf函數(shù)調(diào)用的一般形式printf函數(shù)是ー個(gè)標(biāo)準(zhǔn)庫函數(shù),它的函數(shù)原型在頭文件’'stdio.h”中。但作為ー個(gè)特例,不要求在使用printf函數(shù)之前必須包含stdio.h文件。printf函數(shù)調(diào)用的一般形式為:printf(“格式控制字符串”,輸出表列)其中格式控制字符串用于指定輸出格式。格式控制串可由格式字符串和非格式字符串兩種組成。格式字符串是以%開頭的字符串,在%后面跟有各種格式字符,以說明輸出數(shù)據(jù)的類型、形式、長度、小數(shù)位數(shù)等。非格式字符串在輸出時(shí)原樣照印,在顯示中起提示作用。輸出表列中給出了各個(gè)輸出項(xiàng),要求格式字符串和各輸出項(xiàng)在數(shù)量和類型上應(yīng)該ーー對(duì)應(yīng)。2.格式字符串在TurboC中格式字符串的?般形式為:[標(biāo)志][輸出最小寬度兒精度][長度]類型其中方括號(hào)口中的項(xiàng)為可選項(xiàng)。各項(xiàng)的意義介紹如下:1)類型:類型字符用以表示輸出數(shù)據(jù)的類型,其格式符和意義如下表所示:格式字符 意 義d 以十進(jìn)制形式輸出帶符號(hào)整數(shù)(正數(shù)不輸出符號(hào))〇 以八進(jìn)制形式輸出無符號(hào)整數(shù)(不輸出前綴〇)x,X 以十六進(jìn)制形式輸出無符號(hào)整數(shù)(不輸出前綴Ox)u 以十進(jìn)制形式輸出無符號(hào)整數(shù)f 以小數(shù)形式輸出單、雙精度實(shí)數(shù)e,E 以指數(shù)形式輸出單、雙精度實(shí)數(shù)g,G 以%f或%e中較短的輸出寬度輸出單、雙精度實(shí)數(shù)c 輸出單個(gè)字符s 輸出字符串2)標(biāo)志:標(biāo)志字符為ー、+、#、空格四種,其意義下表所示:標(biāo)志意 義? 結(jié)果左對(duì)齊,右邊填空格+ 輸出符號(hào)(正號(hào)或負(fù)號(hào))空格 輸出值為正時(shí)冠以空格,為負(fù)時(shí)冠以負(fù)號(hào)# 對(duì)c,s,d,u類無影響:對(duì)〇類,在輸出時(shí)加前綴〇:對(duì)x類,在輸出時(shí)加前綴Ox:對(duì)e,g,f類當(dāng)結(jié)果有小數(shù)時(shí)オ給出小數(shù)點(diǎn)3)輸出最小寬度:用十進(jìn)制整數(shù)來表示輸出的最少位數(shù)。若實(shí)際位數(shù)多于定義的寬度,則按實(shí)際位數(shù)輸出,若實(shí)際位數(shù)少于定義的寬度則補(bǔ)以空格或〇。4)精度:精度格式符以開頭,后跟十進(jìn)制整數(shù)。本項(xiàng)的意義是:如果輸出數(shù)字,則表示小數(shù)的位數(shù);如果輸出的是字符,則表示輸出字符的個(gè)數(shù);若實(shí)際位數(shù)大于所定義的精度數(shù),則截去超過的部分。5.長度:長度格式符為h,l兩種,h表示按短整型量輸出,1表示按長整型量輸出。【例4.4]main()inta=15;floatb=123.1234567;doublec=12345678.1234567;chard=*p*;printf(Ma=%d,%5d,%o,%x\n",a,a,a,a);printf(nb=%f,%lf,%5.41f,%e\nn,b,b,b,b);printf(Mc=%lf,%f,%8.41f\nM,c,c,c);printf(nd=%c,%8c\nM,d,d);)“%f”和“%lf”格式的輸出相同,說明“ビ符對(duì)“f”類型無影響。''%5.41f”指定輸出寬度為5,精度為4,由于實(shí)際長度超過5故應(yīng)該按實(shí)際位數(shù)輸出,小數(shù)位數(shù)超過4位部分被截去?!埃?.41f”由于指定精度為4位故截去了超過4位的部分。其中“%8c”指定輸出寬度為8故在輸出字符p之前補(bǔ)加7個(gè)空格。使用printf函數(shù)時(shí)還要注意一個(gè)問題,那就是輸出表列中的求值順序。不同的編譯系統(tǒng)不一定相同,可以從左到右,也可從右到左。TurboC是按從右到左進(jìn)行的。請(qǐng)看下面兩個(gè)例子:【例4.5】main(){inti=8;printf(1,%d\n%d\n%d\n%d\n%d\n%d\n,,,++i,-i,i++,i-,-i++,-i-);)【例4.6】main(){inti=8;printf("%d\n",++i);printf("%d\n",-i);printf("%d\n",i++);printf("%d\n",i-);printf("%d\n",-i++);printf("%d\n",-i-);)這兩個(gè)程序的區(qū)別是用ー個(gè)printf語句和多個(gè)printf語句輸出。因?yàn)閜rintf函數(shù)對(duì)輸出表中各量求值的順序是自右至左進(jìn)行的。在第一例中,先對(duì)最后ー項(xiàng)求值,結(jié)果為ー8,然后i自減1后為7。再對(duì)“-i++”項(xiàng)求值得一7,然后i自增1后為8。再對(duì)“i--”項(xiàng)求值得8,然后i再自減1后為7。再求“i++”項(xiàng)得7,然后i再自增1后為8。再求''—i”項(xiàng),1先自減1后輸出,輸出值為7?最后オ求輸出表列中的第一項(xiàng)“++i”,此寸i自增1后輸出8〇但是必須注意,求值順序雖是自右至左,但是輸出順序還是從左至右,因此得到的結(jié)果是上述輸出結(jié)果。4.5.2scanf函數(shù)(格式輸入函數(shù))scanf函數(shù)稱為格式輸入函數(shù),即按用戶指定的格式從鍵盤上把數(shù)據(jù)輸入到指定的變量之中。l.scanf函數(shù)的一般形式scanf函數(shù)是ー個(gè)標(biāo)準(zhǔn)庫函數(shù),它的函數(shù)原型在頭文件“stdio.h”中,與printf函數(shù)相同,C語言也允許在使用scanf函數(shù)之前不必包含stdio.h文件。scanf函數(shù)的一般形式為:scanf(“格式控制字符串”,地址表列);其中,格式控制字符串的作用與printf函數(shù)相同,但不能顯示非格式字符串,也就是不能顯示提示字符串。地址表列中給出各變量的地址。地址是由地址運(yùn)算符后跟變量名組成的。在C語言中,使用了地址這個(gè)概念,這是與其它語言不同的。應(yīng)該把變量的值和變量的地址這兩個(gè)不同的概念區(qū)別開來。變量的地址是C編譯系統(tǒng)分配的,用戶不必關(guān)心具體的地址是多少。scanf函數(shù)在本質(zhì)上也是給變量賦值,但要求寫變量的地址,如&a。&是ー個(gè)取地址運(yùn)算符,&a是ー個(gè)表達(dá)式,其功能是求變量的地址。在scanf語句的格式串中由于沒有非格式字符在"%d%d%d”之間作輸入時(shí)的間隔,因此在輸入時(shí)要用一個(gè)以上的空格或回車鍵作為每兩個(gè)輸入數(shù)之間的間隔。2.格式字符串格式字符串的—般形式為:%[*][輸入數(shù)據(jù)寬度][長度]類型其中有方括號(hào)口的項(xiàng)為任選項(xiàng)。各項(xiàng)的意義如下:1)類型:表示輸入數(shù)據(jù)的類型,其格式符和意義如下表所示。格式 字符意義d 輸入十進(jìn)制整數(shù)〇 輸入ハ進(jìn)制整數(shù)x 輸入十六進(jìn)制整數(shù)u 輸入無符號(hào)十進(jìn)制整數(shù)f或e 輸入實(shí)型數(shù)(用小數(shù)形式或指數(shù)形式)c 輸入單個(gè)字符S 輸入字符串2)“*”符:用以表示該輸入項(xiàng),讀入后不賦予相應(yīng)的變量,即跳過該輸入值。如:scanf("%d%*d%d",&a,&b);當(dāng)輸入為:1 2 3時(shí),把1賦予a,2被跳過,3賦予b。3)寬度:用卜進(jìn)制整數(shù)指定輸入的寬度(即字符數(shù))。如:scanf("%4d%4d",&a,&b);輸入:12345678將把1234賦予a,而把5678賦予b。4)長度:長度格式符為1和h,1表示輸入長整型數(shù)據(jù)(如%Id)和雙精度浮點(diǎn)數(shù)(如%If)。h表示輸入短整型數(shù)據(jù)。使用scanf函數(shù)還必須注意以下幾點(diǎn):scanf函數(shù)中沒有精度控制,如:scanf("%5.2『,&a);是非法的。scanf中要求給出變量地址,如給出變量名則會(huì)出錯(cuò)。3)在輸入多個(gè)數(shù)值數(shù)據(jù)時(shí),若格式控制串中沒有非格式字符作輸入數(shù)據(jù)之間的間隔則可用空格,TAB或回車作間隔。C編譯在碰到空格,TAB,回車或非法數(shù)據(jù)は對(duì)“%d”輸入“12A”時(shí),A即為非法數(shù)據(jù))時(shí)即認(rèn)為該數(shù)據(jù)結(jié)束。4)在輸入字符數(shù)據(jù)時(shí),若格式控制串中無非格式字符,則認(rèn)為所有輸入的字符均為有效字符。例如:scanf("%c%c%c",&a,&b,&c);輸入為:則把d賦予a,''賦予b,'e'賦予c?只有當(dāng)輸入為:def時(shí),才能把'd,賦于a,'e'賦予b,'F賦予c。如果在格式控制中加入空格作為間隔,如:scanf("%c%c%c",&a,&b,&c);則輸入時(shí)各數(shù)據(jù)之間可加空格。5)如果格式控制串中有非格式字符則輸入時(shí)也要輸入該非格式字符。6)如輸入的數(shù)據(jù)可輸出的類型不一致時(shí),雖然編譯能夠通過,但結(jié)果將不正確。第五章分支結(jié)構(gòu)程序關(guān)系運(yùn)算符和表達(dá)式在程序中經(jīng)常需要比較兩個(gè)量的大小關(guān)系,以決定程序下ー步的工作。比較兩個(gè)量的運(yùn)算符稱為關(guān)系運(yùn)算符。關(guān)系運(yùn)算符及其優(yōu)先次序在C語言中有以下關(guān)系運(yùn)算符:<小于<=小于或等于>大于>=大于或等于5)=等于6)!=不等于關(guān)系運(yùn)算符都是雙目運(yùn)算符,其結(jié)合性均為左結(jié)合。關(guān)系運(yùn)算符的優(yōu)先級(jí)低于算術(shù)運(yùn)算符,高于賦值運(yùn)算符。在六個(gè)關(guān)系運(yùn)算符中,<,<=,>,>=的優(yōu)先級(jí)相同,高于=和!=,=和!=的優(yōu)先級(jí)相同。5.1.2關(guān)系表達(dá)式關(guān)系表達(dá)式的?般形式為:表達(dá)式關(guān)系運(yùn)算符表達(dá)式由于表達(dá)式也可以又是關(guān)系表達(dá)式。因此也允許出現(xiàn)嵌套的情況。關(guān)系表達(dá)式的值是真”和“假”,用“ド和“0”表示。字符變量是以它對(duì)應(yīng)的ASCII碼參與運(yùn)算的。5.2邏輯運(yùn)算符和表達(dá)式邏輯運(yùn)算符極其優(yōu)先次序C語言中提供了三種邏輯運(yùn)算符:&&與運(yùn)算II或運(yùn)算!非運(yùn)算與運(yùn)算符&&和或運(yùn)算符II均為雙目運(yùn)算符。具有左結(jié)合性。非運(yùn)算符!為単目運(yùn)算符,具有右結(jié)合性。邏輯運(yùn)算符和其它運(yùn)算符優(yōu)先級(jí)的關(guān)系可表示如下:!(非)一&&(與)TI(或)“&&”和“に低于關(guān)系運(yùn)算符,“!”高于算術(shù)運(yùn)算符。邏輯運(yùn)算的值邏輯運(yùn)算的值也為“真”和“假”兩種,用“ピ和“?!眮肀硎?。其求值規(guī)則如下:I.與運(yùn)算&&:參與運(yùn)算的兩個(gè)量都為真時(shí),結(jié)果オ為真,否則為假。.或運(yùn)算II:參與運(yùn)算的兩個(gè)量只要有一個(gè)為真,結(jié)果就為真。兩個(gè)量都為假時(shí),結(jié)果為假。.非運(yùn)算!:參與運(yùn)算量為真時(shí),結(jié)果為假;參與運(yùn)算量為假時(shí),結(jié)果為真。雖然C編譯在給出邏輯運(yùn)算值時(shí),以“ド代表“真”,“〇”代表“假”。但反過來在判斷ー個(gè)量是為“真”還是為“假”時(shí),以“0”代表"假”,以非“〇”的數(shù)值作為“真”。5.2.3邏輯表達(dá)式邏輯表達(dá)式的?般形式為:表達(dá)式邏輯運(yùn)算符表達(dá)式其中的表達(dá)式可以又是邏輯表達(dá)式,從而組成了嵌套的情形。邏輯表達(dá)式的值是式中各種邏輯運(yùn)算的最后值,以“1"和“〇”分別代表“真”和“假”。if語句用if語句可以構(gòu)成分支結(jié)構(gòu)。它根據(jù)給定的條件進(jìn)行判斷,以決定執(zhí)行某個(gè)分支程序段。C語言的if語句有三種基本形式。.3.1if語句的三種形式.第一種形式為基本形式:ifif(表達(dá)式)語句其語義是:如果表達(dá)式的值為真,則執(zhí)行其后的語句,否則不執(zhí)行該語句。.第二種形式為:if-elseif(表達(dá)式)語句1;else語句2;其語義是:如果表達(dá)式的值為真,則執(zhí)行語句I,否則執(zhí)行語句2。.第三種形式為:if-else-if形式前二種形式的if語句一般都用于兩個(gè)分支的情況。當(dāng)有多個(gè)分支選擇時(shí),可采用if-else-if語句,其一般形式為:if(表達(dá)式1)語句1:elseif(表達(dá)式2)語句2;elseif(表達(dá)式3)語句3;elseif(表達(dá)式m)語句m;else語句n;其語義是:依次判斷表達(dá)式的值,當(dāng)出現(xiàn)某個(gè)值為真時(shí),則執(zhí)行其對(duì)應(yīng)的語句。然后跳到整個(gè)if語句之外繼續(xù)執(zhí)行程序。如果所有的表達(dá)式均為假,則執(zhí)行語句n。然后繼續(xù)執(zhí)行后續(xù)程序。.在使用if語句中還應(yīng)注意以下問題:1)在三種形式的if語句中,在if關(guān)鍵字之后均為表達(dá)式。該表達(dá)式通常是邏輯表達(dá)式或關(guān)系表達(dá)式,但也可以是其它表達(dá)式,如賦值表達(dá)式等,甚至也可以是一個(gè)變量。2)在if語句中,條件判斷表達(dá)式必須用括號(hào)括起來,在語句之后必須加分號(hào)。3)在if語句的三種形式中,所有的語句應(yīng)為單個(gè)語句,如果要想在滿足條件時(shí)執(zhí)行ー組(多個(gè))語句,則必須把這ー組語句用{}括起來組成一個(gè)復(fù)合語句。但要注意的是在}之后不能再加分號(hào)。.3.2if語句的嵌套當(dāng)if語句中的執(zhí)行語句又是if語句時(shí),則構(gòu)成了if語句嵌套的情形。其一般形式可表示如下:if(表達(dá)式)if語句;或者為if(表達(dá)式)if語句;elseif語句;在嵌套內(nèi)的if語句可能又是if-else型的,這將會(huì)出現(xiàn)多個(gè)if和多個(gè)else重掲的情況,這時(shí)要特別注意if和else的配対問題。為了避免這種二義性,C語言規(guī)定,else總是與它前面最近的if配對(duì)。.3.3條件運(yùn)算符和條件表達(dá)式如果在條件語句中,只執(zhí)行単個(gè)的賦值語句時(shí),??墒褂脳l件表達(dá)式來實(shí)現(xiàn)。不但使程序簡潔,也提髙了運(yùn)行效率。條件運(yùn)算符為?和:,它是ー個(gè)三目運(yùn)算符,即有三個(gè)參與運(yùn)算的量。由條件運(yùn)算符組成條件表達(dá)式的?般形式為:表達(dá)式1?表達(dá)式2;表達(dá)式3其求值規(guī)則為:如果表達(dá)式1的值為真,則以表達(dá)式2的值作為條件表達(dá)式的值,否則以表達(dá)式3的值作為整個(gè)條件表達(dá)式的值。使用條件表達(dá)式時(shí),還應(yīng)注意以下幾點(diǎn):1)條件運(yùn)算符的運(yùn)算優(yōu)先級(jí)低于關(guān)系運(yùn)算符和算術(shù)運(yùn)算符,但高于賦值符。2)條件運(yùn)算符?和:是ー對(duì)運(yùn)算符,不能分開單獨(dú)使用。3)條件運(yùn)算符的結(jié)合方向是自右至左。switch語句C語言還提供了另ー種用于多分支選擇的switch語句,其一般形式為:switch(表達(dá)式){case常量表達(dá)式1:語句!;case常量表達(dá)式2:語句2;case常量表達(dá)式n:語句n;default :語句n+1;}其語義是:計(jì)算表達(dá)式的值。并逐個(gè)與其后的常量表達(dá)式值相比較,當(dāng)表達(dá)式的值與某個(gè)常量表達(dá)式的值相等時(shí),即執(zhí)行其后的語句,然后不再進(jìn)行判斷,繼續(xù)執(zhí)行后面所有case后的語句。如表達(dá)式的值與所有case后的常量表達(dá)式均不相同時(shí),則執(zhí)行default后的語句。為了避免上述情況,C語言還提供了一一種break語句,專用于跳出switch語句,break語句只有關(guān)鍵字break,沒有參數(shù)。在每一case語句之后增加break語句,使每一次執(zhí)行之后均可跳出switch語句,從而避免輸出不應(yīng)有的結(jié)果。在使用switch語句時(shí)還應(yīng)注意以下幾點(diǎn):I)在case后的各常量表達(dá)式的值不能相同,否則會(huì)出現(xiàn)錯(cuò)誤。2)在case后,允許有多個(gè)語句,可以不用{}括起來。3)各case和default子句的先后順序可以變動(dòng),而不會(huì)影響程序執(zhí)行結(jié)果。4)default子句可以省略不用。第六章循環(huán)控制概述循環(huán)結(jié)構(gòu)是程序中一?種很重要的結(jié)構(gòu)。其特點(diǎn)是,在給定條件成立時(shí),反復(fù)執(zhí)行某程序段,直到條件不成立為止。給定的條件稱為循環(huán)條件,反復(fù)執(zhí)行的程序段稱為循環(huán)體。1)用goto語句和if語句構(gòu)成循環(huán);2)用while語句;3)用do-while語句;4)用for語句:goto語句以及用goto語句構(gòu)成循環(huán)goto語句是ー種無條件轉(zhuǎn)移語句。goto語句的使用格式為:goto語句標(biāo)號(hào);其中標(biāo)號(hào)是ー個(gè)有效的標(biāo)識(shí)符,這個(gè)標(biāo)識(shí)符加上一個(gè)“:"ー起出現(xiàn)在函數(shù)內(nèi)某處,執(zhí)行g(shù)oto語句后,程序?qū)⑻D(zhuǎn)到該標(biāo)號(hào)處并執(zhí)行其后的語句。另外標(biāo)號(hào)必須與goto語句同處于ー個(gè)函數(shù)中,但可以不在ー個(gè)循環(huán)層中。通常goto語句與if條件語句連用,當(dāng)滿足某ー條件時(shí),程序跳到標(biāo)號(hào)處運(yùn)行。goto語句通常不用,主耍因?yàn)樗鼘⑹钩绦驅(qū)哟尾磺?且不易讀,但在多層嵌套退出時(shí),用goto語句則比較合理。while語句while語句的一般形式為:while(表達(dá)式)語句其中表達(dá)式是循環(huán)條件,語句為循環(huán)體。while語句的語義是:計(jì)算表達(dá)式的值,當(dāng)值為真(非〇)時(shí),執(zhí)行循環(huán)體語句。使用while語句應(yīng)注意以下幾點(diǎn):while語句中的表達(dá)式一般是關(guān)系表達(dá)或邏輯表達(dá)式,只要表達(dá)式的值為真(非〇)即可繼續(xù)循環(huán)。2)循環(huán)體如包括有一個(gè)以上的語句,則必須用{}括起來,組成復(fù)合語句。do-while語句do-while語句的一般形式為:do語句while(表達(dá)式);這個(gè)循環(huán)與while循環(huán)的不同在于:它先執(zhí)行循環(huán)中的語句,然后再判斷表達(dá)式是否為真,如果為真則繼續(xù)循環(huán);如果為假,則終止循環(huán)。因此,do-while循環(huán)至少要執(zhí)行一次循環(huán)語句。同樣當(dāng)有許多語句參加循環(huán)時(shí),耍用"{"和"}"把它們括起來。for語句在C語言中,for語句使用最為靈活,它完全可以取代while語句。一般形式為:for(表達(dá)式1;表達(dá)式2;表達(dá)式3)語句它的執(zhí)行過程如下:1)先求解表達(dá)式!〇2)求解表達(dá)式2,若其值為真(非〇),則執(zhí)亍for語句中指定的內(nèi)嵌語句,然后執(zhí)行下面第3)步:若其值為假(0).則結(jié)束循環(huán),轉(zhuǎn)到第5)步。3)求解表達(dá)式3。4)轉(zhuǎn)回上面第2)步繼續(xù)執(zhí)行。5)循環(huán)結(jié)束,執(zhí)行for語句下面的ー個(gè)語句。for語句最簡單的應(yīng)用形式也是最容易理解的形式如下:for(循環(huán)變量賦初值;循環(huán)條件;循環(huán)變量增量)語句循環(huán)變量賦初值總是ー個(gè)賦值語句,它用來給循環(huán)控制變量賦初值;循環(huán)條件是ー個(gè)關(guān)系表達(dá)式,它決定什么時(shí)候退出循環(huán);循環(huán)變量增量,定義循環(huán)控制變量每循環(huán)一次后按什么方式變化。這三個(gè)部分之間用分開。對(duì)于for循環(huán)中語句的一般形式,就是如下的while循環(huán)形式:表達(dá)式1;while(表達(dá)式2){語句表達(dá)式3;}注意:1)for循環(huán)中的“表達(dá)式1(循環(huán)變量賦初值)”、“表達(dá)式2(循環(huán)條件)”和“表達(dá)式3(循環(huán)變量增量)”都是選擇項(xiàng),即可以缺省,但ー”不能缺省。2)省略了“表達(dá)式1(循環(huán)變量賦初值)”,表示不對(duì)循環(huán)控制變量賦初值。3)省略了“表達(dá)式2(循環(huán)條件)”,則不做其它處理時(shí)便成為死循環(huán)。4)省略了’‘表達(dá)式3(循環(huán)變量增量)”,則不對(duì)循環(huán)控制變量進(jìn)行操作,這時(shí)可在語句體中加入修改循環(huán)控制變量的語句。5)省略了“表達(dá)式1(循環(huán)變量賦初值)”和‘’表達(dá)式3(循環(huán)變量增量)”。3個(gè)表達(dá)式都可以省略。7)表達(dá)式1可以是設(shè)置循環(huán)變量的初值的賦值表達(dá)式,也可以是其他表達(dá)式。例如:for(sum=0;i<=100;i++)sum=sum+i;8)表達(dá)式1和表達(dá)式3可以是一個(gè)簡單表達(dá)式也可以是逗號(hào)表達(dá)式。for(sum=0,i=1;i<=100;i++)sum=sum+i;9)表達(dá)式2一般是關(guān)系表達(dá)式或邏輯表達(dá)式,但也可是數(shù)值表達(dá)式或字符表達(dá)式,只要其值非零,就執(zhí)行循環(huán)體。循環(huán)的嵌套幾種循環(huán)的比較1)四種循環(huán)都可以用來處理同一個(gè)問題,一般可以互相代替。但一般不提倡用goto型循環(huán)。2)while和do-while循環(huán),循環(huán)體中應(yīng)包括使循環(huán)趨于結(jié)束的語句。for語句功能最強(qiáng)。3)用while和do-while循環(huán)時(shí),循環(huán)變量初始化的操作應(yīng)在while和do-while語句之前完成,而for語句可以在表達(dá)式1中實(shí)現(xiàn)循環(huán)變量的初始化。6.8break和continue語句break語句break語句通常用在循環(huán)語句和開關(guān)語句中。當(dāng)break用于開關(guān)語句switch中時(shí),可使程序跳出switch而執(zhí)行switch以后的語句;如果沒有break語句,則將成為ーー個(gè)死循環(huán)而無法退出。當(dāng)break語句用于do-while、for、while循環(huán)語句中時(shí),可使程序終止循環(huán)而執(zhí)行循環(huán)后面的語句,通常break語句總是與if語句聯(lián)在ー起。即滿足條件時(shí)便跳出循環(huán)。注意:break語句對(duì)if-else的條件語句不起作用。2)在多層循環(huán)中,ー個(gè)break語句只向外跳一層。continue語句第七章數(shù)組在程序設(shè)計(jì)中,為了處理方便,把具有相同類型的若干變量按有序的形式組織起來。這些按序排列的同類數(shù)據(jù)元素的集合稱為數(shù)組。在C語言中,數(shù)組屬于構(gòu)造數(shù)據(jù)類型。ー個(gè)數(shù)組可以分解為多個(gè)數(shù)組元素,這些數(shù)組元素可以是基本數(shù)據(jù)類型或是構(gòu)造類型。因此按數(shù)組元素的類型不同,數(shù)組又可分為數(shù)值數(shù)組、字符數(shù)組、指針數(shù)組、結(jié)構(gòu)數(shù)組等各種類別。ー維數(shù)組的定義和引用ー維數(shù)組的定義方式在C語言中使用數(shù)組必須先進(jìn)行定義。-ー維數(shù)組的定義方式為:類型說明符數(shù)組名[常量表達(dá)式];其中:類型說明符是任一種基本數(shù)據(jù)類型或構(gòu)造數(shù)據(jù)類型。數(shù)組名是用戶定義的數(shù)組標(biāo)識(shí)符。方括號(hào)中的常量表達(dá)式表示數(shù)據(jù)元素的個(gè)數(shù),也稱為數(shù)組的長度。對(duì)于數(shù)組類型說明應(yīng)注意以下幾點(diǎn):1)數(shù)組的類型實(shí)際上是指數(shù)組元素的取值類型。對(duì)于同一個(gè)數(shù)組,其所有元素的數(shù)據(jù)類型都是相同的。2)數(shù)組名的書寫規(guī)則應(yīng)符合標(biāo)識(shí)符的書寫規(guī)定。3)數(shù)組名不能與其它變量名相同。4)方括號(hào)中常量表達(dá)式表示數(shù)組元素的個(gè)數(shù),但是其下標(biāo)從0開始計(jì)算。5)不能在方括號(hào)中用變量來表示元素的個(gè)數(shù),但可以是符號(hào)常數(shù)或常量表達(dá)式。6)允許在同一個(gè)類型說明中,說明多個(gè)數(shù)組和多個(gè)變量。ー維數(shù)組元素的引用數(shù)組元素是組成數(shù)組的基本單元。數(shù)組元素也是一種變量,其標(biāo)識(shí)方法為數(shù)組名后跟ー個(gè)下標(biāo)。下標(biāo)表示了元素在數(shù)組中的順序號(hào)。數(shù)組元素的一般形式為:數(shù)組名[下標(biāo)]其中下標(biāo)只能為整型常量或整型表達(dá)式。如為小數(shù)時(shí),C編譯將自動(dòng)取整。數(shù)組元素通常也稱為下標(biāo)變量。必須先定義數(shù)組,才能使用下標(biāo)變量。在C語言中只能逐個(gè)地使用下標(biāo)變量,而不能一次引用整個(gè)數(shù)組。例如,輸出有10個(gè)元素的數(shù)組必須使用循環(huán)語句逐個(gè)輸出各下標(biāo)變量:for(i=0;i<10;i
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 云南省楚雄彝族自治州祿豐市2024-2025學(xué)年八年級(jí)下學(xué)期開學(xué)生物學(xué)試題(含答案)
- 農(nóng)業(yè)政策支持措施作業(yè)指導(dǎo)書
- 私人美容師服務(wù)合同
- 基于大數(shù)據(jù)的商業(yè)決策支持系統(tǒng)開發(fā)合同
- 電子支付結(jié)算合作協(xié)議
- 農(nóng)業(yè)自動(dòng)化系統(tǒng)安裝維護(hù)合同
- 活動(dòng)籌備報(bào)告
- 《現(xiàn)代酒店管理基礎(chǔ)》(第二版)課件 任務(wù)7 酒店服務(wù)質(zhì)量管理
- 企業(yè)員工健康管理與促進(jìn)計(jì)劃指南
- 春蕾百合幼兒園入學(xué)條件
- 第一課我的服飾巧搭配(課件)鄂教版勞動(dòng)六年級(jí)上冊(cè)
- 江蘇2024年江蘇省新聞出版學(xué)校招聘人員筆試歷年典型考題及考點(diǎn)附答案解析
- 大酒店風(fēng)險(xiǎn)分級(jí)管控和隱患排查治理雙體系文件
- 美容衛(wèi)生管理制度打印版
- 2024CSCO非小細(xì)胞肺癌診療指南解讀
- HJ 1131-2020 固定污染源廢氣 二氧化硫的測定 便攜式紫外吸收法(正式版)
- (高清版)JTGT 3610-2019 公路路基施工技術(shù)規(guī)范
- 湖南省建設(shè)工程竣工驗(yàn)收備案表
- 2022年江蘇省五年制專轉(zhuǎn)本考試英語真題(試卷+答案)
- 手術(shù)室穿脫手術(shù)衣小講課
- 2024年蕪湖職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫及答案解析
評(píng)論
0/150
提交評(píng)論