C語言實(shí)例教程第2版普通高等教育“十一五”國級級規(guī)劃教材習(xí)題答案作者趙克林《C程序案例教程》實(shí)驗(yàn)指導(dǎo)與習(xí)題解答_第1頁
C語言實(shí)例教程第2版普通高等教育“十一五”國級級規(guī)劃教材習(xí)題答案作者趙克林《C程序案例教程》實(shí)驗(yàn)指導(dǎo)與習(xí)題解答_第2頁
C語言實(shí)例教程第2版普通高等教育“十一五”國級級規(guī)劃教材習(xí)題答案作者趙克林《C程序案例教程》實(shí)驗(yàn)指導(dǎo)與習(xí)題解答_第3頁
C語言實(shí)例教程第2版普通高等教育“十一五”國級級規(guī)劃教材習(xí)題答案作者趙克林《C程序案例教程》實(shí)驗(yàn)指導(dǎo)與習(xí)題解答_第4頁
已閱讀5頁,還剩206頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

?c程序案例教程》實(shí)驗(yàn)招導(dǎo)導(dǎo)燈敢解答主編:陳承歡參編:趙克林北京工業(yè)大學(xué)出版社內(nèi)容簡介本書是C語言程序設(shè)計(jì)課程的實(shí)驗(yàn)指導(dǎo)書和參考用書。本書主要包括四個部分:第一部分為實(shí)驗(yàn)指導(dǎo)部分,第二部分為習(xí)題解答部分,第三部分為補(bǔ)充習(xí)題部分,第四部分為附錄部分。本書具有較強(qiáng)的針對性與實(shí)用性,內(nèi)容豐富、條理清晰,是學(xué)習(xí)c語言程序設(shè)計(jì)的ー本好的參考用書,本書可以與《C程序案例教程》配套使用,也可以作為其他C語言教材的實(shí)驗(yàn)指導(dǎo)書和習(xí)題集,可以作為參加全國計(jì)算機(jī)等級考試二級c語言的參考用書。本書是《C程序案例教程》的配套教材,其內(nèi)容緊扣C語言程序設(shè)計(jì)的教學(xué)內(nèi)容與教學(xué)進(jìn)度,可以作為其他C語言教材的實(shí)驗(yàn)指導(dǎo)書和習(xí)題集,也可以作為參加全國計(jì)算機(jī)等級考試二級C語言的參考用書。本書主要包括四個部分:第一部分為實(shí)驗(yàn)指導(dǎo)部分,為《C程序案例教程》一書中各章安排了具有針對性的實(shí)驗(yàn)內(nèi)容。每個實(shí)驗(yàn)都給出了具體的實(shí)驗(yàn)?zāi)康暮蛯?shí)驗(yàn)要求,并且根據(jù)學(xué)生每次上機(jī)操作的時間限制,精心安排了各次實(shí)驗(yàn)的實(shí)驗(yàn)內(nèi)容,其目的是使學(xué)生通過上機(jī)實(shí)驗(yàn)理解所學(xué)的內(nèi)容,訓(xùn)練學(xué)生編程、調(diào)試的動手能力。第二部分為習(xí)題解答部分,給出了《C程序案例教程》一書中所有習(xí)題的解題思路與參考答案,所有程序都上機(jī)調(diào)試并運(yùn)行通過。第三部分為補(bǔ)充習(xí)題部分,給合教材內(nèi)容與c語言二級等級考試的需要,補(bǔ)充了大量習(xí)題。第四部分為附錄部分,主要包括TurboC2.0的主菜單,TurboC編譯環(huán)境中常用的功能鍵與熱鍵,書寫實(shí)驗(yàn)報告的格式與要求,C語言多文件程序的編譯與連接,C語言程序的調(diào)試方法,DOS的相關(guān)知識,UCDOS的正確使用方法,VisualC++編譯環(huán)境下C語言程序上機(jī)操作的基本方法和步驟,C程序常見的出錯信息淺析,C語言程序中常見錯誤淺析、編程規(guī)范化淺析等。本書共安排了10次上機(jī)實(shí)驗(yàn),與主教材《C程序案例教程》各章相對應(yīng),任課老師可根據(jù)課時的多少,適當(dāng)?shù)卣{(diào)整實(shí)驗(yàn)次數(shù)。每一次實(shí)驗(yàn)的內(nèi)容分為三個部分:第一部分為驗(yàn)證性實(shí)驗(yàn),主要根據(jù)主教材中的例題中給出的程序,進(jìn)行輸入、修改、調(diào)試、輸出結(jié)果,加深對所學(xué)知識的理解。第二部分為修改性實(shí)驗(yàn),給出的程序中有意設(shè)定了幾個錯誤,要求學(xué)生通過調(diào)試程序,修改程序中的錯誤,側(cè)重于培養(yǎng)學(xué)生根據(jù)出錯信息提示修改錯誤、調(diào)試程序的能力。第三部分為設(shè)計(jì)性實(shí)驗(yàn),根據(jù)對應(yīng)章節(jié)所學(xué)習(xí)的重點(diǎn)內(nèi)容,給出幾個編程題,題目相對比較容易,要求學(xué)生上機(jī)編寫程序,并且調(diào)試成功,輸出正確結(jié)果,主要提高學(xué)生的程序編寫能力。每一部分給出了多個題目,讀者可以根據(jù)具體情況完成2至3個實(shí)驗(yàn)題。本書第一部分、第三部分、第四部分由湖南鐵道職業(yè)技術(shù)學(xué)院陳承歡老師編寫,第二部分由四川信息職業(yè)技術(shù)學(xué)院趙克林老師編寫,全書由陳承歡老師負(fù)責(zé)組織、統(tǒng)稿和審核。需要補(bǔ)充說明的是:本書所給出的程序參考答案并非是唯一的答案,對于同一題目,其算法不一定唯一,不同的設(shè)計(jì)思路編寫的程序可能會有所區(qū)別,本書中給出只是ー種答案,可能不是最好的,只是提供一個參考答案供讀者參考,啟發(fā)讀者思維。本書給出的所有程序都在TurboC或VC環(huán)境下調(diào)試通過。由于時間倉促,作者水平有限,書中難免存在ー些疏漏和不妥之處,懇請各位專家以及廣大讀者批評指正。編者2004年8月TOC\o"1-5"\h\z\o"CurrentDocument"內(nèi)容簡介 .i\o"CurrentDocument"第一部分C語言程序設(shè)計(jì)實(shí)驗(yàn)指導(dǎo) 1\o"CurrentDocument"實(shí)驗(yàn)ー 初識C語言集成編譯環(huán)境 1\o"CurrentDocument"實(shí)驗(yàn)二 C程序的調(diào)試與運(yùn)算符 14\o"CurrentDocument"實(shí)驗(yàn)三順序結(jié)構(gòu)程序設(shè)計(jì) 24\o"CurrentDocument"實(shí)驗(yàn)四選擇結(jié)構(gòu)程序設(shè)計(jì) 27\o"CurrentDocument"實(shí)驗(yàn)五循環(huán)結(jié)構(gòu)程序設(shè)計(jì) 31\o"CurrentDocument"實(shí)驗(yàn)六數(shù)組與結(jié)構(gòu) 36\o"CurrentDocument"實(shí)驗(yàn)七指針 40\o"CurrentDocument"實(shí)驗(yàn)ハ函數(shù)與變量存儲類別 44\o"CurrentDocument"實(shí)驗(yàn)九文件 48\o"CurrentDocument"實(shí)驗(yàn)十部分典型算法 52\o"CurrentDocument"第二部分《C程序案例教程》習(xí)題解答 57\o"CurrentDocument"習(xí)題1 57\o"CurrentDocument"習(xí)題2 58\o"CurrentDocument"習(xí)題3 61\o"CurrentDocument"習(xí)題4 64\o"CurrentDocument"習(xí)題5 69\o"CurrentDocument"習(xí)題7 92\o"CurrentDocument"習(xí)題9 109\o"CurrentDocument"第三部分補(bǔ)充習(xí)題 120第1早 初識C程)十 120\o"CurrentDocument"第2章 C語言基礎(chǔ) 120\o"CurrentDocument"第4章 選擇結(jié)W程序設(shè)計(jì) 125\o"CurrentDocument"第5章 循環(huán)結(jié)構(gòu)程序設(shè)計(jì) 127\o"CurrentDocument"第6章 數(shù)組與結(jié)構(gòu) 133\o"CurrentDocument"第7章指針 142\o"CurrentDocument"第8章 函數(shù)與變量存儲類別 143\o"CurrentDocument"第四部分附錄 150\o"CurrentDocument"附求!TurboC2.0的主菜單 150\o"CurrentDocument"附錄2TurboC編譯環(huán)境中常用的功能鍵與編輯熱鍵 156iiiTOC\o"1-5"\h\z\o"CurrentDocument"附錄3書寫實(shí)驗(yàn)報告的格式與要求 158\o"CurrentDocument"附錄4C語言多文件程序的編譯與連接 159\o"CurrentDocument"附錄5C語言程序的調(diào)試方法 162\o"CurrentDocument"附求6DOS的相關(guān)知識 164\o"CurrentDocument"附錄7UCDOS的正確使用方法 165\o"CurrentDocument"附錄8VisualC++的使用方法 166\o"CurrentDocument"附錄9C程序常見的出錯信息淺析 170\o"CurrentDocument"附錄10C語言程序中常見錯誤淺析 176\o"CurrentDocument"附錄11編程規(guī)范化淺析 191\o"CurrentDocument"附錄12第三部分補(bǔ)充習(xí)題的參考答案 194\o"CurrentDocument"參考文獻(xiàn) 197第一部分 C語言程序設(shè)計(jì)實(shí)驗(yàn)指導(dǎo)實(shí)驗(yàn)ー初識c語言集成編譯環(huán)境—.實(shí)驗(yàn)?zāi)康膜妨私馑玫挠?jì)算機(jī)系統(tǒng)的基本操作方法,學(xué)會獨(dú)立使用該系統(tǒng)。.逐步熟悉C語言集成編譯環(huán)境,學(xué)會設(shè)置合適的TurboC工作環(huán)境。.熟悉如何建立、打開、保存ー個C語言源程序。.通過編輯、編譯、連接與運(yùn)行簡單的C程序,初步了解C程序的調(diào)試方法。二、實(shí)驗(yàn)內(nèi)容和步驟1.熟悉TurboC的集成編譯環(huán)境TurboC為C程序提供了編輯、編譯、連接、運(yùn)行的集成工作環(huán)境,具有運(yùn)行速度快、編譯效率高、易學(xué)易用、使用方便等特點(diǎn)。(1)啟動TurboC,進(jìn)入工作窗口開機(jī)后,按如下步驟進(jìn)入C的工作環(huán)境:在DOS環(huán)境下啟動TurboC,先鍵入:TurboC所在的盤符'TurboC所在路徑、tc(例如C:\TurboC2\tc),并回車,則會出現(xiàn)如圖1-1所示編輯窗口。圖1-1也可以用cd命令使TurboC程序所在的目錄成為當(dāng)前目錄(例如:cdc:\TurboC2),然后在含有TurboC程序子目錄的命令行上鍵入:tc,并回車。注意如在C程序中要處理漢字,則在啟動TurboC之前,應(yīng)先啟動UCDOS中文操作系統(tǒng),具體方法參見附錄7。

在Windows環(huán)境下啟動TurboC.可以在如圖1-2所示的資源管理器中雙擊文件名為“TC.EXE”的應(yīng)用程序,或者進(jìn)入Windows的MS-DOS方式(對于Windows98,可選擇“開始”-“程序”-“MS-DOS方式”菜單,進(jìn)入“DOS方式”窗口;對于Windows2000,可選擇“開始”一“程序”一“附件”一“命令提示符”菜單,進(jìn)入“DOS方式”窗口),通過DOS命令(例如:cd\c:\TurboC2)進(jìn)入TurboC所在目錄再鍵入tc,即出現(xiàn)如圖!-1所示的TurboC編輯窗口。圖1-2(2)熟悉TurboC操作界面TurboC集成環(huán)境的操作界面主要分成五個部分:主菜單、編輯窗口、狀態(tài)欄、信息窗口和功能鍵提示行。主菜單位于窗口屏幕的頂部,它包括8個菜單:File(文件)、Edit(編輯)、Run(運(yùn)行)、Compile(編譯)、Project(項(xiàng)目)、Options(選項(xiàng))、Debug(調(diào)試)、Break/watch(中斷/監(jiān)視),每一個主菜單還有其子菜單,分別用來實(shí)現(xiàn)各種操作。各個菜單項(xiàng)的名稱及其功能詳見附錄1。編輯窗ロ:在主菜單的下面,正上方有Edit字樣作為標(biāo)志,主要用于TurboC源程序的輸入和編輯。狀態(tài)欄:在編輯窗u的上部有一行英文,這一行英文提供正在編輯操作的信息,其中Line!和Col1表示當(dāng)前光標(biāo)位置在第1行第1歹リ,標(biāo)識光標(biāo)當(dāng)前所在的位置。當(dāng)光標(biāo)移動時,Line和Col后面的數(shù)字也隨之改變。!nsert表示當(dāng)前處于插入狀態(tài)。右端顯示當(dāng)前正在編輯的文件名,對于新文件自動命名為:NONAME.C,對于調(diào)入ー個已存在的文件,該位置上將顯示調(diào)入文件的文件名。試_試在編輯窗口中輸入"#include<stdio.h>",然后按回車鍵,觀察窗口頂部左端Line和Col后面數(shù)字的變化。按一下"Insert"鍵,觀察窗口的變化。信息窗口:在屏幕的下部,用來顯示編譯和連接時的有關(guān)信息,在信息窗口上方有"Message”字樣作為標(biāo)志,但不能向信息窗口輸入源程序。試ー試按功能鍵F5,觀察它有什么作用,再按一次F5,再觀察它有什么作用。然后按功能鍵F6,觀察它有什么作用:再按一次F6,再觀察它有什么作用。?功能鍵提示行:在信息窗口的下面,顯示一些功能鍵的作用。常見的功能鍵的功能如下所示。Fl-Help:按Fl鍵系統(tǒng)將會根據(jù)光標(biāo)當(dāng)前位置為線索給出幫助信息。F5-Zoom:擴(kuò)大當(dāng)前活動窗口(編輯窗口或信息窗口)。F6-Switeh:編輯窗口和信息窗口之間的切換。F7-Trace:用于跟蹤程序的運(yùn)行情況。F8-Step:按一次F8鍵執(zhí)行一個語句。F9-Make:進(jìn)行編輯和連接,生成目標(biāo)文件,但不運(yùn)行程序。F10-Menu:激活第一個菜單File,進(jìn)入主菜單選擇狀態(tài)。(3)熟悉TurboC主菜單的操作主菜單可以提供集成環(huán)境下的各種功能,主菜單的選擇有兩種方法:ー是按F10鍵進(jìn)入主菜單的選擇狀態(tài),此時主菜單中某ー項(xiàng)上呈高亮度顯示,用左右光標(biāo)移動鍵"一”或"一”將亮條移動到要選用的項(xiàng)目上,回車后出現(xiàn)對應(yīng)的子菜單,再用上下光標(biāo)移動鍵"或"t”選擇菜単項(xiàng),確認(rèn)后回車。二是按AIt+各個菜單欄的第一個字母,例如選中"File”菜單,可按Alt+F.彈出該菜單欄的下拉子菜單,用上下光標(biāo)移動鍵"I"或"t"將亮條移到所需的子菜単項(xiàng),按回車鍵即可。試_試按功能鍵F10,并按回車鍵,觀察"File”菜單,了解該菜單欄的下拉子菜單。用鍵盤上的"一”鍵,分別選中Edit、Run、Compile,Project,Option、Debug、Break/watch,觀察它們的下拉子菜單,大致上了解它們的作用。了解TurboC的工作環(huán)境,學(xué)會改變其工作目錄建立工作目錄工作目錄指用戶文件所在的目錄,用戶進(jìn)入TurboC的目錄后,可以在這個目錄下再建立一個用戶專用的子目錄,如圖1-2所示,用戶建立了兩個子目錄:exercise和ExOutput,其中exercise用于存儲所編寫的源程序,擴(kuò)展名為.C;ExOutput用于存儲目標(biāo)文件和可執(zhí)行文件,擴(kuò)展名分別為,obj和.exe。在啟動TC之前,先應(yīng)建立用戶所需的工作目錄,因?yàn)門urboC系統(tǒng)中改變工作目錄時,該工作目錄必須事先存在,否則會出錯。改變當(dāng)前工作目錄可以在進(jìn)入TurboC系統(tǒng)以前,在DOS狀態(tài)下用CD命令設(shè)置,也可以在進(jìn)入TurboC系統(tǒng)以后改變工作目錄。進(jìn)入TurboC系統(tǒng)以后改變工作目錄的方法如下:先按“Alt+F”選擇File菜單,然后使用光標(biāo)移動鍵“f”或“I”,將亮條移動到“Changedir”處并按回車鍵或直接按“C”鍵,出現(xiàn)ー個“NewDirectory”即“新目錄輸入框”,輸入已存在的目錄路徑再按回車即可,例如:C:\TurboC2\exerciseo如圖1-3所示。圖1-3當(dāng)前工作目錄的作用:新建的源文件和輸出文件(.obj文件.exe文件),如不另外指定存放位置,將自動保存在該子目錄中。(5)學(xué)會設(shè)置合適的TurboC工作環(huán)境改變TurboC系統(tǒng)默認(rèn)工作環(huán)境的方法:按Alt+O選擇Options菜單,然后按D鍵(也可以用光標(biāo)移動鍵將亮條移到“DirectoriesM處,再按回車鍵)后彈出ー個窗口,如圖1-4所示。窗口中的各項(xiàng)的含義如下:第一行:Includedirectories指“頭文件”所在的目錄,系統(tǒng)顯示出默認(rèn)的子目錄為:C:\TURB0C2\INCLUDEo如要改變該子目錄,則將亮條移到“Includedirectories”處并按回車鍵,然后輸入“包含文件”所在的盤符和路徑。具體位置應(yīng)與安裝TurboC實(shí)際位置一致。第二行:Librarydirectories指庫文件所在的H錄,系統(tǒng)顯示出默認(rèn)的子目錄為:C:\TURBOC2\LIBo如要改變該子目錄,5!リ將亮條移到“Librarydirectories”處并按回車鍵,然后輸入“庫文件”所在的盤符和路徑。具體位置應(yīng)與安裝TurboC實(shí)際位置一致。圖1-4第三行:Outputdirectories指定編譯、連接生成的目標(biāo)文件和可執(zhí)行文件(.obj文件和.exe文件)存放的目錄,如果不改變則保存在當(dāng)前工作目錄中。系統(tǒng)允許輸出文件保存在與源文件不同的子目錄中,改變輸岀文件的目錄后,新建的源文件仍然存放在用戶的當(dāng)前工作目錄中,而輸出文件保存在另外的子目錄中。如圖1-4所示,將Outputdirectories設(shè)置為C:\TurboC2\ExOutput。這樣設(shè)置完成后,源程序仍保存在C:\Turboc2\exereise了H錄下,而目標(biāo)文件和可執(zhí)行文件將保存在C:\Turboc2\ExOutput子目錄下。修改該子目錄的方法:用上下移動光標(biāo)鍵在目錄窗口中選中所需更改的目錄,按回車鍵,彈出ー個“輸出文件目錄對話框”,在此框內(nèi)輸入正確的子目錄,按回車鍵確認(rèn)后,對話框消失,則顯示新的目錄位置。第四行:TurboCdirectoワ指TurboC系統(tǒng)文件所在的目錄,系統(tǒng)顯示的是安裝時的默認(rèn)目錄C:\TURBOC2,一一般可不修改它。特別提示:以上設(shè)置ー定要根據(jù)所用計(jì)算機(jī)的具體情況進(jìn)行設(shè)置。根據(jù)TurboC安裝的位置不同,目錄名不一定是“TURBOC2”,可能為其他的目錄名,總之要與實(shí)際情況ー致。試ー試以自己的姓名為子目錄名,在適當(dāng)?shù)奈恢媒⒁粋€子目錄,然后將源程序的存放目錄和輸出文件的存放目錄改為所建立的新子目錄。保存TurboC的工作環(huán)境信息按上述方法設(shè)置好工作環(huán)境后,按ESC鍵返回Options菜單,然后選擇SaveOption菜單項(xiàng),并按回車鍵,彈出ー個“ConfigFile”對話框,在框中默認(rèn)的路徑下輸入TCCONFIGTC,并按回車鍵,系統(tǒng)在當(dāng)前工作目錄下建立一個配置文件TCCONFIG.TC,《C語言案例教程》實(shí)驗(yàn)指導(dǎo)與習(xí)題解答如圖1-5所示。FileEditRunCompileProject TTTCTTiWDebugFileEditRunCompileProject TTTCTTiWDebugBreak/watchLine1EditCol1InsertIndentTaCompilei*LinkerEnvironmentDirectoriesArgumentsIONAME.C ConfigFileC:\TURBOC2\TCCONFIG.TCMessageFl-HeIpF5-ZoomFb-SwitchF7-TraceF8-StepF9Fl-HeIpF5-ZoomFb-SwitchF7-TraceF8-StepF9-MakeJ-nenuNUM圖!-5啟動TurboC時,系統(tǒng)會從當(dāng)前工作目錄和TurboC系統(tǒng)文件所在的目錄中尋找文件TCCONFIGTC,如果找到了就把它調(diào)入內(nèi)存,且不再顯示TC的版本信息。(6)熟悉如何建立、打開、保存ー個C語言源程序源程序的輸入輸入源程序并建立源程序文件的過程,一般要調(diào)用編輯程序。能編輯源程序的軟件較多,例如Windows自帶的記事本、TurboC、VisualC++等,但記事本不具有編譯、連接功能,使用較多的是TurboC,TurboC自帶編譯器和調(diào)試器,有了它就可以建立、修改、調(diào)試和運(yùn)行C語言程序,此外可以利用集成環(huán)境各個菜單、熱鍵進(jìn)行程序調(diào)試。文件菜單File通過功能鍵F10選擇File菜單或按住Alt+F鍵將彈出文件File的下拉子菜單。如圖1-6所示。新建C源程序LoadF3PickAlt-F3NewSaueF2WritetoDirectoryChangedirOSshellQuitAlt-X圖1-6新建一個源程序步驟如下:File-New一LoadF3PickAlt-F3NewSaueF2WritetoDirectoryChangedirOSshellQuitAlt-X圖1-6先選擇File菜單的New菜單項(xiàng),然后按回車鍵,編輯窗口被清空,光標(biāo)自動定位在左上角(第1行,第1列),此時可以開始輸入和編輯源程序了。將源程序逐行輸入,如發(fā)現(xiàn)錯誤可隨時修改,在編輯過程中除用到鍵盤上的各個字符鍵外,還會用到各個編輯熱鍵(詳見附錄2所示),其中Del鍵和Insert鍵又用得較多。源程序輸入完成后應(yīng)對程序認(rèn)真檢查,并改正所發(fā)現(xiàn)的錯誤。這時應(yīng)及時將源程序存盤,選中File菜單下的Save菜單項(xiàng),按回車鍵后,彈出ー個如圖1-7所示對話框,要求指定新的文件名。由圖1-7可知對話框中有一個默認(rèn)的文件NONAME.C,此時可以指定新的文件存放路徑和新的文件名。小技巧:如果路徑不變,只改變文件名,可以先按一下左右光標(biāo)移動鍵“一”或“一”,然后刪除NONAME.C,輸入新的文件名,這要可以避免重新輸入路徑。圖1-7試ー試編寫程序:求半徑為2.0的圓面積。源程序如下:#include<stdio.h>main()(floats,r;r=2.0;s=3.14*r*r;printfTs=%f\iT,s);}源程序輸入后,按上述方法進(jìn)行存盤,文件名為“Exl」.c”。為了便于管理C文件,C文件的名稱可按統(tǒng)ー的規(guī)范化方法命名,“Exl」.c”中的“Ex”表示“上機(jī)練習(xí)”,“1」”表示“第一次實(shí)驗(yàn)ー第一個程序”,后面各次實(shí)驗(yàn)テ文件名都是按此方法命名的。?編輯ー個已有的源程序重新編輯ー個已有的C源程序,選擇菜單File中的菜單項(xiàng)Load,彈出“LoadFileName"對話框,選擇默認(rèn)的“*.C”,則列出所有當(dāng)前目錄下的擴(kuò)展名是“.C”的文件。利用光標(biāo)移動鍵將亮條移到需要編輯的文件名處,按回車后,對應(yīng)文件的內(nèi)容將顯示在屏幕ヒ,供用戶編輯、修改。如果要打開的文件不在當(dāng)前目錄下,則需要輸入盤符、路徑和文件名。編輯完成后保存文件,避免由于程序死循環(huán)或者其他意外情況而造成無法存盤。保存文件可選擇菜單File中的菜單項(xiàng)Save(將亮條移到Save處回車),也可以直接按F2鍵,將文件存盤。對于修改的源程序,如果耍改用其他的文件名保存,則可選擇菜單File中的菜單項(xiàng)"Writeto",按回車鍵后彈出ー個“NewName”對話框。在框中輸入新的文件名或文件新的存放位置,然后按回車鍵,文件就會以新名存盤或在新的位置保存(原來的文件仍存在),編輯窗口中右上角便會顯示新的文件名。(7)熟悉如何編譯、連接和運(yùn)行C程序?程序編譯程序全部輸入完畢或修改后,需要進(jìn)行編譯,生成目標(biāo)文件(擴(kuò)展名為.obj),然后將目標(biāo)文件再連接生成可執(zhí)行文件(擴(kuò)展名為.exe)。說明:為什么源程序不能直接執(zhí)行而還要進(jìn)行編譯呢?這是因?yàn)橛?jì)算機(jī)不能識別高級語言程序,而只能識別用機(jī)器語言編寫的程序,所以用高級語言編寫的源程序,必須將它翻譯成機(jī)器語言后,計(jì)算機(jī)才能執(zhí)行。這種將高級語言源程序翻譯成目標(biāo)程序的過程稱為編譯過程,這種翻譯程序稱為編譯程序。編譯過程很復(fù)雜,編譯程序一方面要對源程序中的各語句進(jìn)行識別和分析,最后翻譯成與之對應(yīng)的機(jī)器語言指令;另一方面還要找出源程序中的錯誤。如果在編譯過程中發(fā)現(xiàn)源程序中有語法錯誤,則要顯示相應(yīng)的錯誤信息,在這種情況下,必須重新調(diào)用編譯程序?qū)υ闯绦蜻M(jìn)行編輯修改,而修改后的源程序也必須重新進(jìn)行編譯。這個過程可能要重復(fù)多次,直到編譯過程中沒有錯誤發(fā)生為止。編譯通過后,即生成相應(yīng)的目標(biāo)程序,它是由計(jì)算機(jī)能識別的機(jī)器代碼組成的。ー個完整的C程序可以由若干個函數(shù)模塊組成,而這些模塊可以存放在ー個文件中,也可以分別存放在不同的文件中,C編譯程序允許各模塊的文件分別編譯,具體內(nèi)容參見附錄4,下面將介紹在TurboC集成編譯環(huán)境中如何編譯C程序。方法一:先編譯(選擇Compile/CompiletoOBJ)得到目標(biāo)程序?.obj,后連接(選擇Compile/LinkEXEfile)得到可執(zhí)行文件?.exe。方法二:一次完成編譯和連接(選擇Compile/MakeEXEfile)或按F9圖1-8中表示編譯后生成Exl」.OBJ。圖1-8如果沒有錯誤,將會提示編譯成功“Success”,生成目標(biāo)程序,如圖1-9所示。若程序有錯,則在屏幕底部的“Message”窗口顯示出錯及警告信息,這時可進(jìn)行修改,改完后,再重新進(jìn)行編譯。屏幕上的編譯信息窗口包含以下信息:①最上方的Compiling表示是編譯階段的信息。

②第1行表示主文件名是EX1」.C。③第2行表示正在編輯的是文件EX1」.C。④以后幾行分別表示編譯的行數(shù)為7行,“警告"為〇個,“錯誤"為〇個。⑤倒數(shù)第二行表示占用的有效存儲空間為249KB。@最后一行表示編譯成功(Success),請用戶按任ー鍵以便繼續(xù)。圖1-9F7001700圖1-9F7001700?程序連接用戶編寫的程序一般都要調(diào)用ー些庫函數(shù),例如數(shù)學(xué)函數(shù)、字符串函數(shù)、輸入輸出函數(shù)等,有時還要調(diào)用用戶自編的函數(shù),但在源程序中調(diào)用這些函數(shù)時只給出函數(shù)名和有關(guān)參數(shù),在編譯過程中不可能自動生成實(shí)現(xiàn)這些被調(diào)用函數(shù)的代碼。所以源程序文件經(jīng)編譯后生成的目標(biāo)程序還不能真正執(zhí)行,還需要將被調(diào)用函數(shù)的代碼進(jìn)行連接操作。所謂“連接”,是指將編譯生成的目標(biāo)文件與被調(diào)用函數(shù)的目標(biāo)模塊進(jìn)行連接,最后生成計(jì)算機(jī)真正能執(zhí)行的可執(zhí)行文件。在連接的過程中,也要進(jìn)行查錯,主要是檢查調(diào)用、各模塊之間的聯(lián)系,參數(shù)的傳遞以及存儲空間分配等方面的錯誤。如果發(fā)現(xiàn)連接錯誤,則要對有關(guān)源程序進(jìn)行編輯修改,然后重新進(jìn)行編譯和連接。在TurboC集成環(huán)境中進(jìn)行連接的方法是:選擇菜單“Compile”中的菜單項(xiàng)“LinkEXEfile”,如圖1-10所示。如果沒有錯誤,將會提示連接成功“Success”,生成可執(zhí)行程序,如圖1-11所示。屏幕上的連接信息窗口包含以下信息:①最上方的Linking表示是連接階段的信息。②第1行表示連接后生成的可執(zhí)行文件名為EX1_1.EXE,③第2行表示將H標(biāo)文件與LIB子目錄中的庫文件CS.LIB進(jìn)行連接。

其他幾行與編譯信息窗U相似。圖1-10圖1-11程序連接還可以采用菜単“Compile”中的菜單項(xiàng)“MakeEXEfile”或菜單項(xiàng)“Buildair'o前者先判斷是否編譯過,如果未編譯,則先編譯后連接。后者無論程序編譯與否,都要先編譯再連接。程序運(yùn)行源程序經(jīng)過編輯、編譯和連接過程,并且無錯誤發(fā)生,最后生成可執(zhí)行文件,且可以運(yùn)行該可執(zhí)行文件,得到所需要的結(jié)果。運(yùn)行可執(zhí)行程序有多種方法:ー是在DOS環(huán)境直接鍵入C程序的可執(zhí)行文件名;二是在Windows的資源管理器內(nèi)雙擊該可執(zhí)行文件名;三是在C的集成環(huán)境下運(yùn)行。這里只介紹第三種方法:在C的集成環(huán)境的操作界面下,選擇菜單Run中的菜單項(xiàng)Run且按回車鍵,如圖!-12所示,或者直接按Ctrl+F9組合鍵。如果源程序沒有編譯或連接,將先編譯、連接再運(yùn)行,否則程序直接執(zhí)行,程序運(yùn)行結(jié)束后,系統(tǒng)又自動回到原狀態(tài)。

圖1-12雖然在C的集成環(huán)境下,對于ー個未編譯的程序,我們只要選擇運(yùn)行“Run”命令,就可以完成編譯、連接、運(yùn)行三個步驟,但是對于初學(xué)者,我們建議還是按照上述內(nèi)容先選擇編譯,成功后再連接,最后選擇運(yùn)行。這樣操作便于理解C程序的開發(fā)過程。此時如果發(fā)現(xiàn)運(yùn)行結(jié)果不對,要進(jìn)入編輯狀態(tài),可按Alt+E使亮塊移到'‘Edit”處,也可以直接按F6,或者直接按回車鍵(對于連接錯誤不可行)。說明:在編譯過程中,雖然可以發(fā)現(xiàn)源程序中的大部分語法錯誤、連接錯誤,但不能保證發(fā)現(xiàn)程序中的全部錯誤,特別是不能發(fā)現(xiàn)程序中的邏輯錯誤,有時雖然沒有顯示錯誤信息,但運(yùn)行結(jié)果仍然不正確或運(yùn)行過程中出現(xiàn)異常情況,此時還需要對源程序進(jìn)行編輯修改,然后再進(jìn)行編譯、連接,直到運(yùn)行結(jié)果正確為止。查看結(jié)果在TurboC2.0的集成環(huán)境下觀看運(yùn)行結(jié)果的方法是:選擇菜單“Run”中的的菜單項(xiàng)"Userscreen"I如圖1-13所示,或者直接Alt+F5組合鍵,轉(zhuǎn)到用戶屏幕,程序運(yùn)行的結(jié)果將顯示在用戶屏幕上,如圖1-14所示。按任一鍵返回TurboC集成環(huán)境的編輯窗口。圖!-13圖1-14?退出TurboC退出TurboC的集成環(huán)境,選擇菜單File中的菜單項(xiàng)Quit,或者直接按Alt+X組合鍵,退出TurboC的集成環(huán)境,返回到DOS提示符狀態(tài)。試ー試輸入以下源程序,然后進(jìn)行編譯、連接、運(yùn)行,最后查看運(yùn)行結(jié)果。練習(xí)一:已知長方形的長為5,寬為3,求該長方形的周長1。(文件名為:exl_2.c)源程序如下:#include"stdio.h"main()(inta,b,1;a=5;b=3;l=2*(a+b);printfCl=%d",l);}注意:“ド即”じ,與“ビ的區(qū)別,不要輸錯。練習(xí)ニ:打印樓梯,同時在樓梯上方打印兩個笑臉。(文件名為:exl_3.c)源程序如下:#include<stdio.h>main()(intij;printf("\l\l\n"); /?輸岀兩個笑臉?/forti=l;i<n;i++){fbr(j=lア=ij++)prin氓"%c%c”,219,219);printf("\n");2.根據(jù)本次實(shí)驗(yàn)所做的操作,編寫C程序的步驟總結(jié)如下:(1)輸入C語言源程序。(2)將輸入的程序保存在自己的子目錄中。(3)檢查已輸入的程序有無錯誤(包括語法錯誤和邏輯錯誤),如果有錯,及時改正。(4)進(jìn)行編譯和連接(按F9),如果在編譯和連接過程中發(fā)現(xiàn)錯誤,屏幕上會出現(xiàn)“出錯信息”,仔細(xì)分析錯誤提示信息,根據(jù)出錯提示找到出錯位置和原因,加以改正,再進(jìn)行編譯……如此反復(fù),直到順利通過編譯和連接為止。(5)編譯和連接成功后,運(yùn)行程序,并分析運(yùn)行結(jié)果是否合理和正確。在運(yùn)行時要注意輸入不同的數(shù)據(jù)時所得到的結(jié)果是否正確。(6)查看程序運(yùn)行結(jié)果。三.實(shí)驗(yàn)總結(jié)與書寫實(shí)驗(yàn)報告(1)總結(jié)本次實(shí)驗(yàn)完成情況,相關(guān)知識的掌握情況。(2)總結(jié)本次實(shí)驗(yàn)編輯、編譯、連接、運(yùn)行所取得的經(jīng)驗(yàn)。(3)分析本次實(shí)驗(yàn)事現(xiàn)的主要錯誤最直接的原因,提出改進(jìn)措施。(4)按附錄3的格式和要求書寫實(shí)驗(yàn)報告。。實(shí)驗(yàn)二C程序的調(diào)試與運(yùn)算符--實(shí)驗(yàn)?zāi)康?了解C程序的常見錯誤及其修改方法。.掌握C語言的基本數(shù)據(jù)類型,熟悉如何定義ー個變量,以及它們賦值的方法。.學(xué)會使用C語言的運(yùn)算符以及包含運(yùn)算符的表達(dá)式。.鞏固第1次實(shí)驗(yàn)所學(xué)習(xí)的操作方法,進(jìn)ー步熟悉C程序的編輯、編譯、連接和運(yùn)行的步驟和方法。--實(shí)驗(yàn)準(zhǔn)備.檢查所用計(jì)算機(jī)的完好情況,發(fā)現(xiàn)問題及時報告。.啟動計(jì)算機(jī),進(jìn)入自己的工作子目錄,查看工作子目錄中的內(nèi)容。.啟動TurboC,進(jìn)入TurboC集成工作環(huán)境。三.實(shí)驗(yàn)內(nèi)容和步驟1.了解C程序的常見錯誤及其修改方法啟動TurboC后,選擇FilefLoad,找到第1次實(shí)驗(yàn)曾編寫的程序exl」.c,加載該程序。exl」.c的程序代碼如下:main()/*①*/(/*②*/floats,r;/*③*/r=2.0;/*④*/s=3.14*r*r;/*⑤*/printfi(,,s=%f\nH,s);/*⑥*/I/*⑦*/按F10鍵,將亮條移至Compile處后回車,在下拉菜單中選擇CompiletoOBJ,此時系統(tǒng)顯示出默認(rèn)的冃標(biāo)文件名:exl_l.obj,按回車犍進(jìn)行編譯,接著再進(jìn)行連接。以上程序能順利地通過編譯和連接。下面有意地給程序設(shè)置?些常見的錯誤,觀察其編譯或連接出現(xiàn)的錯誤提示信息,以提高觀察能力和調(diào)試能力。(1)去掉第4行結(jié)尾的“;”,再一次編譯該程序,出現(xiàn)如圖2-1所示的編譯信息窗口。圖2-1所示窗口中間小窗口的信息的含義說明如下:①窗口最上方的“Compiling”表示當(dāng)前是編譯階段的信息。②第1行表示主文件名是:EX1_1.C。③第2行表示正在編譯的文件是:EXl_l.Co由于只有一個主文件,所以與主文件名相同。④下面幾行表示編譯時行數(shù)為7行,“警告”為2個,“錯誤”為1個。所謂“Warnings(警告)”是指較輕微的錯誤,TurboC系統(tǒng)對此能夠容忍,仍然把有警告的程序生成目標(biāo)文件和可執(zhí)行文件,即程序編譯可通過,但不保證程序的運(yùn)行結(jié)果正確。所謂“Errors(錯誤)”是指嚴(yán)重的錯誤,系統(tǒng)不能容忍,編譯不能通過。編譯系統(tǒng)對有錯誤的程序不生成目標(biāo)文件和可執(zhí)行文件,必須改正后重新編譯和連接。⑤倒數(shù)第2行表示占用的有效存儲空間為:249KB。⑥最后一行表示編譯存在錯誤,請用戶按任ー鍵繼續(xù)。圖2-1按任何一個鍵后,中間的編譯信息窗口消失,在屏幕下部的Message窗口中,顯示了具體的出錯信息和錯誤的位置,如圖2-2所示。圖2-2中Message窗口中出錯信息的含義說明如下:①第1行顯示正編譯的文件名:EX1_1.C?②第2行是出錯信息,指出源程核的第5行出現(xiàn)了一個錯誤,錯誤的內(nèi)容是:uStatementmissing;infunctionmain"(主函數(shù)中的語句漏了一?個分號),從圖2-2中可以看到該行是以高亮度顯示的,同時在上部Edit窗口中源程序的第5行也是以高亮度顯示,這樣便于用戶對照檢查。我們可以發(fā)現(xiàn)該源程序中第4行的末尾漏了一個“;”,而此時高亮度標(biāo)識卻在第5行,Message窗口中提示也是第5行,為什么兩者不一致呢?這是由于編譯系統(tǒng)在檢査第4行時,發(fā)現(xiàn)語句末尾沒有分號,但這時還不能判定該語句有錯,因?yàn)镃語言允許把ー個語句分寫在兩行上。于是,編譯系統(tǒng)接著檢查第5行,看第5行的開頭有無分號,當(dāng)發(fā)現(xiàn)第5行的開頭沒有分號時オ判定出錯,但此時的位置已是第5行了,所以報錯的行數(shù)為第5行。請注意,在看到出錯信息時,不能只簡單地從系統(tǒng)顯示的岀錯行數(shù)去找錯,應(yīng)該連同《C語言案例教程》實(shí)驗(yàn)指導(dǎo)與習(xí)題解答上下行ー起檢查。圖2-2③第3行是警告信息,錯誤的內(nèi)容是:"Possibleuseof's'beforedefinition(在定義s之前可能已使用)”,出現(xiàn)這個警告信息的原因是:由于源程序中第4行漏了分號,造成變量r沒有被賦值。由于變量r沒有確定的值,第5行表達(dá)式“3.14*r*r"也就不能計(jì)算出確定的值,所以s也就沒有被賦值。第6行輸出語句中輸出s的值,沒有確定的值輸出,也就出現(xiàn)了警告信息。④第4行也是警告信息,錯誤的內(nèi)容是:"‘r'isassignedavaluewhichisneverused(r被賦的值從未使用過)”。原因是該變量r出現(xiàn)在ー個賦值語句中,但直到函數(shù)結(jié)束都未使用過,所以警告信息出現(xiàn)在第7行。此時,高亮度仍然停在Message區(qū)的第2行,按回車鍵,激活上面的編輯窗口,光標(biāo)停在第5行上,以便用戶修改。兩個窗口中的高亮度顯示行已恢復(fù)為正常顯示。在編輯窗ロ頂部用紅色顯示剛オ觀察的出錯信息,以便用戶對照修改,ー開始進(jìn)行修改,頂部的紅色顯示即消失。修改錯誤:在源程序第4行末尾加一個”。再?次進(jìn)行編譯,發(fā)現(xiàn)編譯成功,1個錯誤消失了,兩個警告也同時被排除,如圖2-3所示。按任何ー個鍵后,發(fā)現(xiàn)Message窗口中原有錯誤信息和警告信息消失了。(2)將源程序中第6行prin日語句內(nèi)的雙引號去掉右邊的一半,再一次編譯,出現(xiàn)如圖2d所示的編譯提示信息,有1個警告,2個錯誤。按任ー?鍵后出現(xiàn)如圖2-5所示的出錯提示信息。圖2-5中Message窗口中出錯提示信息的含義說明如下:出現(xiàn)在第6行的第1個錯誤:"Unterminatestringorcharacterconstant(未終結(jié)的串或字符常量)”,編譯程序發(fā)現(xiàn)串或字符常量開始后沒有終結(jié)。由于printf語句括號內(nèi)的字符串雙引號只有一半,也是沒有終結(jié)。圖2-3命令提示符ーtc圖2-4出現(xiàn)在第6行的第2個錯誤:"Functioncallmissing)infunctionmain(在主函數(shù)中函數(shù)調(diào)用缺少‘)')”,造成該錯誤的原因仍然是由于printf語句括號內(nèi)的字符串雙引號缺少右半部分,所以調(diào)用輸出函數(shù)printf時,參數(shù)形式與函數(shù)原形不符。③出現(xiàn)在第6行的的警告也是表示‘s‘被賦以ー個從未使用的值。其實(shí)后面的1個錯誤和1個警告都是伴隨第1個錯誤而出現(xiàn)的。將printf語句括號內(nèi)的字符串雙引號加上右半部分,,,,”后,再次編譯,系統(tǒng)沒有發(fā)現(xiàn)編譯錯誤,表示編譯成功。(3)將源程序主函數(shù)的結(jié)束標(biāo)志“}”去掉,再次進(jìn)行編譯,出現(xiàn)如圖2-6所示的編譯信息。按任一鍵后,出現(xiàn)如圖2-7所示的錯誤提示信息。圖2?5File EditLineRun_Compile ProjectOptions_File EditLineRun_Compile ProjectOptions_DebugColInsertIndentTabFillUnindent*”也星1以星EX1_1.Citch且旦至floats,r;r=2.0;s=3.14*r*rfloats,r;r=2.0;s=3.14*r*r;printf<Ms=zf\n0,sCompilingMainfile:EXERCISEヽEX1」.CCompiling:EDITOR->EX1_L.CTotalLinescompiled:7Warnings:0Errors:1e?1F701Availablememory:249KAvailablememory:249KErrors : Pressanyke圖2-6圖2-7中Message窗口中出錯信息的含義說明如下:出現(xiàn)在源程序第7行的錯誤:"Compoundstatementmissing}infunctionmain",其義是在主函數(shù)復(fù)合語句中漏掉了“ド。編譯程序掃描到源程序結(jié)束處,未發(fā)現(xiàn)結(jié)束標(biāo)記“ド,很明顯是由于花括號不配對造成的,加上結(jié)束標(biāo)記“ド,再次編譯,系統(tǒng)沒有發(fā)現(xiàn)編譯錯誤,表示編譯成功。(4)將源程序中“r*r”改為“「2",再次編譯,出現(xiàn)如圖2-8所示的編譯信息。按任ー鍵后,出現(xiàn)如圖2-9所示的錯誤提示信息。圖2-7命令提示符ーtct Run CompileProjectak/watchLine5mainO 二Edit Col13InsertIndentTabFillUnindent*C:EX1_1.Cfloats,r;r=2.0;s=3?14*r人2;printぐ’s=Nf",s〉CompilingMainfile:EXERCISE\EX1_1-CCompiling:EDITOR->EX1J.CTotalLinescompiled:7Warnings:2Errors:1.1F721Availablememory:249KErrors :Pressanuke圖2-8出現(xiàn)在源程序中第5行的錯誤:"Illegaluseoffloatingpointinfunctionmain(在主函數(shù)出現(xiàn)非法的浮點(diǎn)運(yùn)算)”,產(chǎn)生這個錯誤的原因是由于將“r*r”寫成了“己2”,在C語言中“人”表示“按位異或”運(yùn)算符,而不是表示求平方的運(yùn)算符,只要將“「2”改為“r*r”,再次編譯便不會出現(xiàn)錯誤了。另外兩個警告與前面的相同,在此不再重述。(5)將源程序中printf改為print,再次編譯,系統(tǒng)沒有發(fā)現(xiàn)編譯錯誤,表示編譯成功。為什么將正確的函數(shù)名printf改為錯誤的函數(shù)名print,編譯過程卻沒有出現(xiàn)錯誤呢?原因是編譯時只檢査源程序中各語句的語法錯誤,函數(shù)名print符合C語言的命名規(guī)則,所以沒有出現(xiàn)錯誤。但由于輸出函數(shù)是標(biāo)準(zhǔn)的庫函數(shù),其函數(shù)名是預(yù)定義的,必須與TurboC頭文件中函數(shù)說明的函數(shù)名?致,否則在連接階段仍然會出現(xiàn)錯誤,具體分析見下ー步的連接。圖2-9下面進(jìn)行連接操作,連接時仍然保留錯誤的輸出函數(shù)名print,其他錯誤全部修改成正確的。程序編譯后,進(jìn)行連接。方法是選擇菜單“Compile”中的菜單項(xiàng)“LinkEXEfile”,如果沒有錯誤,將會提示連接成功“Success”,生成可執(zhí)行程序。程序連接還可以采用“Compile”菜單項(xiàng)目中的“MakeEXEfile”命令或“Buildah”命令。前者先判斷是否編譯過,如果未編譯,則先編譯后連接。后者無論程序編譯與否,都要先編譯再連接。按F10鍵后選擇Compile-LinkEXEfile,然后按回車鍵,進(jìn)行連接,出現(xiàn)如圖2-10所示的連接信息,按任一鍵后,出現(xiàn)如圖2-11所示的錯誤提示信息。從圖2-11可知出現(xiàn)了一個連接錯誤,錯誤的內(nèi)容是:“Undefinedsymbol'jrint'inmoduleEX1JC”(在EX1J.C模塊中符號'_print,沒有定義)”,原因是標(biāo)準(zhǔn)輸加函數(shù)名printf寫成了printo對于這類錯誤,首先需要查找該符號,如果是變量,需要判定是否定義或者書寫是否有誤,如果是庫函數(shù),則要判定書寫是否正確(注意大小寫不同)或者是否在程序中包含了(即include)該庫函數(shù)所在的頭文件。把函數(shù)名print改成printf,再次連接便成功了。注意:連接之前一定要先進(jìn)行編譯,如果沒有編譯就連接會出現(xiàn)以下錯誤:“Unabletoopeninputfile:EXlJobj”。特別說明:如果連接時,出現(xiàn)如圖2-12所示的錯誤信息,則說明需要修改TurboC的環(huán)境設(shè)置。修改方法參見第1次實(shí)驗(yàn)的操作說明,在此不再重述。

圖2-10圖2-11接下來運(yùn)行程序,生成可執(zhí)行文件后,就可以運(yùn)行了。在C集成編譯環(huán)境的操作界面下,選擇菜單"Run”中的菜單項(xiàng)“Run”運(yùn)行程序,或者直接按Ctrl+F9組合鍵運(yùn)行程序。程序運(yùn)行結(jié)束后,系統(tǒng)又自動回到原狀態(tài)。程序運(yùn)行過程中,如有鍵盤輸入語句(scanf語句),屏幕顯示會切換到用戶屏幕,等待用戶輸入數(shù)據(jù),輸完數(shù)據(jù)后,按回車鍵,屏幕顯示切換到TurboC編輯窗口。運(yùn)行時如果不符合要求,可以采用單步執(zhí)行(使用功能鍵F7或F8)的方法。如果需要在整個程序執(zhí)行過程中觀察變量值的變化情況,可以利用“Break/Watch”中的“Addwatch”鍵入需要的變量名。如果只是在程序運(yùn)行的某ー個位置觀察某個變量的值時,可以選擇“Debug”中的“Evaluate”命令輸入變量名。以上這些方法,有助于用戶了解程序流程和變量的變化,從而找到算法或程序的錯誤或漏洞。圖2-12特別提示:使用scanfO函數(shù)時,如果變量名前遺忘了取地址符“&”,編譯將會通過,但是最后輸出的結(jié)果將會不正確。所以如果結(jié)果與期望不符,首先要檢查scanf()函數(shù)的地址表列是否正確、scan")和printf()中的格式符是否匹配、從鍵盤中輸入數(shù)據(jù)是否與scan")輸入格式一致。最后查看程序運(yùn)行結(jié)果,選擇菜単“Run”中的菜單項(xiàng)“Userscreen”,按回車鍵,屏幕顯示切換到用戶屏,顯示程序運(yùn)行結(jié)果??赐杲Y(jié)果,按任ー鍵返回TurboC編輯窗口。試ー試(1)將程序exl」.c中的第3行的単精度數(shù)據(jù)類型名float改為int,進(jìn)行編譯觀察提示信息,改正后再次編譯,觀察提示信息。(2)在主函數(shù)名main()后加上一個“;”,進(jìn)行編譯觀察提示信息,改正后再次編譯,觀察提示信息。(3)去掉第3行末尾的分號“;”,進(jìn)行編譯觀察提示信息,改正后再次編譯,觀察提不信息。(4)將第6行輸出語句括號內(nèi)的“%f”改成“%d”,進(jìn)行編譯觀察提示信息,改正后再次編譯,觀察提示信息。(5)將第3行變量s的名稱改為大寫字母“S”,進(jìn)行編譯觀察提示信息,改正后再次編譯,觀察提示信息。2.學(xué)會使用C語言的運(yùn)算符以及包含運(yùn)算符的表達(dá)式先輸入以下源程序,然后進(jìn)行編譯、連接與運(yùn)行。(文件名為ex2」.c)main()(inti,j,m,n;i=8;j=10;m=++i;n=j++;printR"i=%dj=%d,m=%d,n=%d\n”,i,j,m,n); /*i=9,j=l1,m=9,n=10*/(1)運(yùn)行程序,觀察輸出的結(jié)果,注意i、j、m、n各變量的值。(2)將第6、7行改為:m=i++;n=++j;運(yùn)行程序,觀察輸出的結(jié)果,注意i、j、m、n各變量的值,輸出結(jié)果應(yīng)為:“i=9,j=ll,m=8,n=ll(3)將程序改為:(文件名為ex2_2.c)main()(inti,j;i=8;j=10;printf(6ti=%d,j=%d\n”,i++,j++);/*i=8,j=10*/i=8;j=10;printfCi=%d,j=%d\n",++i,++j);/*i=9,j=ll*/運(yùn)行程序,觀察輸出的結(jié)果,注意兩次輸出的值。四.實(shí)驗(yàn)總結(jié)與書寫實(shí)驗(yàn)報告(1)總結(jié)本次實(shí)驗(yàn)完成情況,相關(guān)知識的掌握情況。(2)總結(jié)本次實(shí)驗(yàn)編輯、編譯、連接、運(yùn)行所取得的經(jīng)驗(yàn)。(3)分析本次實(shí)驗(yàn)出現(xiàn)的主要錯誤最直接的原因,提出改進(jìn)措施。(4)按附錄3的格式和要求書寫實(shí)驗(yàn)報告。

實(shí)驗(yàn)三順序結(jié)構(gòu)程序設(shè)計(jì)—.實(shí)驗(yàn)?zāi)康?掌握C語言中賦值語句的使用方法。.掌握鍵盤輸入輸出語句。.掌握各種類型數(shù)據(jù)的輸入輸出方法,能正確使用各種格式符。.注意不同數(shù)據(jù)類型所對應(yīng)的格式符及其特點(diǎn)。實(shí)驗(yàn)前的準(zhǔn)備.檢查所用計(jì)算機(jī)的完好情況,發(fā)現(xiàn)問題及時報告。.啟動計(jì)算機(jī),進(jìn)入自己的工作子目錄,查看工作子目錄中的內(nèi)容。.啟動TurboC,進(jìn)入TurboC集成工作環(huán)境。三.實(shí)驗(yàn)內(nèi)容和步驟.驗(yàn)證性實(shí)驗(yàn)輸入已編好的源程序,然后進(jìn)行編輯、編譯、連接和運(yùn)行,觀察運(yùn)行結(jié)果。(1)隨機(jī)產(chǎn)生兩個三位自然數(shù),并求其平均值。(文件名為ex3」.c)源程序如下:#includeconio.h"ttinclude"math,h”main(){intx,y;源程序如下:#includeconio.h"ttinclude"math,h”main(){intx,y;floataver;clrscr0;x=rand()%900+100;y二rand()%900+100;aver=(x+y)/2.0;/?掛頭文件?//?定義變量?//*連續(xù)3行:處理數(shù)據(jù)?/printf("\nx=%d,y二%d,aver二%f”,x,y,aver); /?輸出結(jié)果?/(2)從鍵盤輸入ー個字母,如果是大寫字母,則輸出它對應(yīng)的小寫字母;如果是小寫字母,則輸出它對應(yīng)的大寫字母。(文件名為ex3一2.c)源程序如下:#includeconio.h"main(){charchi,ch2;clrscr0;scanf("就",&chl);ch2=chl>=A'&&chl<=Z>?chl+32:chl-32;printf(*\n%c*,ch2);).改錯性實(shí)驗(yàn)輸入已編好的源程序,源程序中包含有錯誤,先對源程序進(jìn)行編譯和連接,然后根據(jù)提示信息,修改程序中的錯誤,經(jīng)過多次反復(fù)修改ー編譯ー連接,直到編譯、連接成功。最后運(yùn)行程序,輸出正確結(jié)果。(1)輸入兩個整數(shù)給變量x和y,然后輸出x和y,在交換x和y中的值后,再輸出。程序如下:(文件名為ex3-3.C)include"stdio.h" /?提示:有3處錯誤?/main()(intx,y;printf("輸入x和y:\n");scanf("%d%d",x,y);printfi["x=%dy=%d\n",x,y);t=x,x=y,y=t;print("x=%dy=%d\n",x,y);}(2)求兩數(shù)平方根之和。例如:輸入12和20,輸出結(jié)果為:產(chǎn)7.936238。(文件名為ex3_4.c)#include<stdio.h> /?有6處錯誤?/main()|doublea,b,y;scanf,&a,&b);y=sqr(a)+sqr(b);printff'尸%f\n",y);}.設(shè)計(jì)性實(shí)驗(yàn)學(xué)習(xí)編寫程序,根據(jù)要求編寫正確的程序并調(diào)試成功。(1)設(shè)圓柱的半徑X1.5,圓柱高h(yuǎn)=3,求圓柱的體積。要求用scanf函數(shù)輸入數(shù)據(jù),用printf函數(shù)輸出結(jié)果。輸出時要有文字說明,取小數(shù)點(diǎn)后兩位數(shù)字。(文件名為ex3一5.C)(2)編寫程序,用getchar函數(shù)讀入兩個字符給cl、c2,然后分別用putchar函數(shù)和printf函數(shù)分別輸出這兩個字符。(文件名為ex3_6.c)四.實(shí)驗(yàn)總結(jié)與書寫實(shí)驗(yàn)報告(1)總結(jié)本次實(shí)驗(yàn)完成情況,相關(guān)知識的掌握情況。(2)總結(jié)本次實(shí)驗(yàn)編輯、編譯、連接、運(yùn)行所取得的經(jīng)驗(yàn)。(3)分析本次實(shí)驗(yàn)出現(xiàn)的主要錯誤最直接的原因,提出改進(jìn)措施。(4)按附錄3的格式和要求書寫實(shí)驗(yàn)報告。實(shí)驗(yàn)四選擇結(jié)構(gòu)程序設(shè)計(jì)—.實(shí)驗(yàn)?zāi)康?了解C語言表示邏輯量的方法。.學(xué)會正確使用邏輯運(yùn)算符和邏輯表達(dá)式。.熟練掌握if語句和switch語句。.結(jié)合程序掌握ー些簡單的算法。實(shí)驗(yàn)前的準(zhǔn)備.檢查所用計(jì)算機(jī)的完好情況,發(fā)現(xiàn)問題及時報告。.啟動計(jì)算機(jī),進(jìn)入自己的工作子目錄,查看工作子目錄中的內(nèi)容。.啟動TurboC,進(jìn)入TurboC集成工作環(huán)境。三.實(shí)驗(yàn)內(nèi)容和步驟1.驗(yàn)證性實(shí)驗(yàn)輸入已編好的源程序,然后進(jìn)行編輯、編譯、連接和運(yùn)行,觀察運(yùn)行結(jié)果。(1)輸入x,按下列公式求分段函數(shù)g(x)的值。(文件名為ex4_l.c)"0.75*x (x<-40)g(x尸イ046*x+3.7 (lOWxく20)、1.5*x-6 (x>20)程序如下:voidmain()(floatx,y;scanf(K%f*,&x);if(x<-40)y=0.75*x;elseif(x<=20)y=0.46*x+3.7;elsey=1.5*x-6;printfC'g(%f)=%f\nM,x,y);}(2)有3個整數(shù)a、b、c,由鍵盤輸入,輸出其中最大的數(shù)。(文件名為ex4_2.c)main()inta,b,c,temp,max;printf(”請輸入3個整數(shù):M);scanfi(,,%d%d%d",&a,&b,&c);temp=(a>b)?a:b;max=(temp>c)?temp:c;printf("3個整數(shù)中最大數(shù)是:%d\nH,max);}(3)輸入學(xué)生某科成績,輸出其等級。成績[90,100]為A等,成績[80,89]為B等,成績[60,79]為C等,60分以下為D等。程序!:用if語句(文件名為ex4_3.c)^include“conio.h"main(){intscore,x;chargrade;clrscr();printf("\nPleaseinputscore[0,100]:");scanf("籾”,&score);if(score>=90)printf("A");elseif(score>=80)printf("B");elseif(score>=60)printf("C");elseprintf("D");}程序2:用switch語句(文件名為ex4_4.c)#include"conio.h"main()(intscore,x;chargrade;clrscr();printf("\nPleaseinputscore[0,100]:");scanf("%d",&score);x=score/10;switch(x){case10:case9:printf("A");break;case8:printf("B");break;case7:case6:printf("C");break;case5:case4:case3:case2:case1:case0:printf(MDn);break;default:printf(zzInputError!");.改錯性實(shí)驗(yàn)輸入已編好的源程序,源程序中包含有錯誤,先對源程序進(jìn)行編譯和連接,然后根據(jù)提示信息,修改程序中的錯誤,經(jīng)過多次反復(fù)修改ー編譯一連接,直到編譯、連接成功。最后運(yùn)行程序,輸出正確結(jié)果。(1)編寫程序,輸入一位學(xué)生的生日(年:y0>月:m0、日:d0),并輸入當(dāng)前的日期(年:yK月:ml、日:dl),輸出該生的實(shí)足年齡。請?zhí)羁?文件名為ex4_5.c)#include<stdio.h>main()(intyO,mO,dO;intyl,ml,dl,age;scanf(M%d%d%dM,&y0,&m0,&d0);scan出"%d%d%d",&yl,&ml,&dl);age=yl-yO;if(ml<m0)age—;printf(”age=%d\n",age);}(2)下面這個程序要求用戶輸入兩個整數(shù)和一個字符。字符必須是屮、ビ、陽、ア其中的ー個。然后程序輸出兩數(shù)作相應(yīng)運(yùn)算的結(jié)果。例如:輸入123,34,+程序輸出123+34=157。(文件名為ex4_6.c)#include<stdio.h>/?提示:有3處錯誤ッmain()(floatdl,d2,result;charop;scanfi(,,%f%f%c,,,&dl,&d2,&op);switchopcase屮:result=dl+d2;break;caseresult=dl-d2;break;case???.result=dl*d2;break;case7fresult=dl/d2;break;defaulterror=l;if(error)printf("運(yùn)算操作符輸入有錯!ッ;elseprintfl["%.2f%c%.2f=%.2f\n",d1,op,d2,result);.設(shè)計(jì)性實(shí)驗(yàn)學(xué)習(xí)編寫程序,根據(jù)要求編寫正確的程序并調(diào)試成功。(1)火車站托運(yùn)行李,從甲地到乙地,按規(guī)定,每張客票托運(yùn)行李不超過50千克,按每千克1.35元計(jì)算運(yùn)費(fèi)。如果超過50千克,超過部分按每千克2.65元計(jì)算運(yùn)費(fèi)。編寫程序計(jì)算托運(yùn)費(fèi)。(文件名為ex4_7.c)(2)個人所得稅問題。規(guī)定:1000元以下不收所得稅,1000到1500元之間部分收5%,1500到2000元之間部分收10%,2000到2500元之間的部分收!5%,2500元以上收20%〇月收入由鍵盤輸入,輸出個人收入所得稅。(文件名為ex4一8.c)四.實(shí)驗(yàn)總結(jié)與書寫實(shí)驗(yàn)報告(1)總結(jié)本次實(shí)驗(yàn)完成情況,相關(guān)知識的掌握情況。(2)總結(jié)本次實(shí)驗(yàn)編輯、編譯、連接、運(yùn)行所取得的經(jīng)驗(yàn)。(3)分析本次實(shí)驗(yàn)出現(xiàn)的主要錯誤最直接的原因,提出改進(jìn)措施。(4)按附錄3的格式和要求書寫實(shí)驗(yàn)報告。實(shí)驗(yàn)五循環(huán)結(jié)構(gòu)程序設(shè)計(jì)--實(shí)驗(yàn)?zāi)康?熟練掌握用while語句,do-while語句和fbr語句實(shí)現(xiàn)循環(huán)的方法。.掌握在程序設(shè)計(jì)中用循環(huán)的方法實(shí)現(xiàn)ー些常用算法。.對循環(huán)語句的三種形式進(jìn)行分析、比較,以掌握各種形式的共同之處及其特點(diǎn)。實(shí)驗(yàn)前的準(zhǔn)備.檢查所用計(jì)算機(jī)的完好情況,發(fā)現(xiàn)問題及時報告。.啟動計(jì)算機(jī),進(jìn)入自已的工作子目錄,查看工作子目錄中的內(nèi)容。.啟動TurboC,進(jìn)入TurboC集成工作環(huán)境。三.實(shí)驗(yàn)內(nèi)容和步驟.驗(yàn)證性實(shí)驗(yàn)輸入已編好的源程序,然后進(jìn)行編輯、編譯、連接和運(yùn)行,觀察運(yùn)行結(jié)果。(1)求100?200間的全部素?cái)?shù)(文件名為ex5_l.c)include"stdio.h"include"math.h"voidmain()(intm,k,i,n=0;for(m=101;m<=200;m=m+2)(if(n%10=0)printf("\n");k=sqrt(m);fbr(i=2;i<=k;i++)if(m%i==0)break;if(i>=k+l)(printf(H%d",m);n-H-;(2)程序功能是分別計(jì)算1至10之間奇數(shù)之和及偶數(shù)之和,分析程序執(zhí)行結(jié)果。(文件名為ex5_2.c)includenstdio.hM

mainOintx,y,z,k;x=z=O;for(k=l;k<10;k+=2){x+=k;y=k+l;z+=y;/*k取奇數(shù):1mainOintx,y,z,k;x=z=O;for(k=l;k<10;k+=2){x+=k;y=k+l;z+=y;/?奇數(shù)k之和放于x變量中?//*y比x大1,故取偶數(shù):2、4、6、8、10*//?偶數(shù)y之和放于z變量中?/printf("\nx=%d,z=%d”,x,z);)(3)求自然對數(shù)的底e的值,直到某項(xiàng)值小于104為止。(文件名為ex5-3.c)計(jì)算公式是:e=ld 1 1 P 1!2!3!#includeconio.h*mainO{longt=l;intn=l,i;floate=l;clrscr();whiled.0/t>=le-6){t=l;for(i=l;iく=n;i++)t?二i;e+=l.0/t;n++;printf("e=%f",e);}(4)鍵盤輸入的任意正整數(shù),求其逆數(shù)。所謂“逆數(shù)”是指將原來的數(shù)顛倒順序后形成的數(shù)。如輸入1986時,輸岀6891。(文件名為ex5_4.c)ttinclude'conio.h"mainO(intdigit,n=0;longx,y=0;clrscr0;scanf("%ld",&x);do{digit=x%10; /*取出低位數(shù)字?/y=y*10+digit; /? 合并數(shù)字 ?/n++; /*統(tǒng)計(jì)位數(shù)*/x=x/10; /?移動數(shù)字?/}while(x);printfy);).改錯性實(shí)驗(yàn)輸入已編好的源程序,源程序中包含有錯誤,先對源程序進(jìn)行編譯和連接,然后根據(jù)提示信息,修改程序中的錯誤,經(jīng)過多次反復(fù)修改ー編譯ー連接,直到編譯、連接成功。最后運(yùn)行程序,輸出正確結(jié)果。(1)函數(shù)ftinr功能是:統(tǒng)計(jì)不超過ー個整數(shù)m(包括m且m23)的素?cái)?shù)個數(shù)。(文件名為ex5_5.c)#include<stdio.h> /?提示:有3處錯誤?/#include<conio.h>intfun(m){inti,k,num=0;for(i=3;i<=m;i+=2){k=2;while(k<=i&&(i%k)==0) k++;if(i=k)num++;}returnnum;}main(){intn;scanf("%d",&n);printf("\nResult=%d",fun(n));)(2)下述程序中,函數(shù)firn的功能是:判斷ー個整數(shù)是否是素?cái)?shù),若是返回1,否則返回〇。(文件名為ex5_6.為#include<conio.h> /?提示:有3處錯誤?/#include<stdio.h>intfun(m)intk=2;while(k<=m&&(m/k)) k++;if(k=m)return1;else return0;}main()(intn;scanf('*%d",&n);if(ftin(n)) printffYES\n");else printfT'NO!\n");}(3)下列程序中,fun函數(shù)的功能是:讀入ー個整數(shù),計(jì)算如下公式:t=l?l/2?l/3?l/4?……-1/m的值。(文件名為ex5_7.c)例如,若輸入5,則輸出?0.28333。#include<conio.h>/?提示:有4處錯誤?/#include<stdio.h>doublefun(intm)(doublet;inti;for(i=2,i<=m,i卄)t=1.0-1.0/i;return(t);}main()(intm;scanf(H%dH,&m);printf(H\ntheresultis%If*,fun(m));}3.設(shè)計(jì)性實(shí)驗(yàn)學(xué)習(xí)編寫程序,根據(jù)要求編寫正確的程序并調(diào)試成功。(1)假設(shè)有36塊磚,36人搬,男搬4,女搬3,小孩2人搬ー塊。要求一次全部搬完,問男、女、小孩各多少人?(文件名為ex5_8.c)(2)斐波那數(shù)列的前幾項(xiàng)是:1、1、2、3、5、8、13、21、34……。編程輸出該數(shù)列的前13項(xiàng)。每行給出5個數(shù)。(文件名為ex5_9.c)(3)編寫程序,ー張100元鈔票換成面值分別為5元、1元、0.5元的三種鈔票共100張,每種鈔票至少1張,則每種面值的鈔票各多少張?有哪幾種可能的兌換方案?(文件名為ex5_10.c)四.實(shí)驗(yàn)總結(jié)與書寫實(shí)驗(yàn)報告(1)總結(jié)本次實(shí)驗(yàn)完成情況,相關(guān)知識的掌握情況。(2)總結(jié)本次實(shí)驗(yàn)編輯、編譯、連接、運(yùn)行所取得的經(jīng)驗(yàn)。(3)分析本次實(shí)驗(yàn)出現(xiàn)的主要錯誤最直接的原因,提出改進(jìn)措施。(4)按附錄3的格式和要求書寫實(shí)驗(yàn)報告?!禖語言案例教程》實(shí)驗(yàn)指導(dǎo)與習(xí)題解答實(shí)驗(yàn)六數(shù)組與結(jié)構(gòu)--實(shí)驗(yàn)?zāi)康?掌握ー維數(shù)組和二維數(shù)組的定義、賦值和輸入輸出方法。.掌握字符數(shù)組的使用。.掌握與數(shù)組有關(guān)的算法。.掌握結(jié)構(gòu)體類型變量的定義和使用。二.實(shí)驗(yàn)前的準(zhǔn)備.檢查所用計(jì)算機(jī)的完好情況,發(fā)現(xiàn)問題及時報告。.啟動計(jì)算機(jī),進(jìn)入自己的工作子目錄,査看工作子目錄中的內(nèi)容。.啟動TurboC,進(jìn)入TurboC集成工作環(huán)境。三.實(shí)驗(yàn)內(nèi)容和步驟.驗(yàn)證性實(shí)驗(yàn)輸入已編好的源程序,然后進(jìn)行編輯、編譯、連接和運(yùn)行,觀察運(yùn)行結(jié)果。(1)某數(shù)列前兩項(xiàng)為0、1,以后各項(xiàng)均為前相鄰兩項(xiàng)之和,輸出該數(shù)列前20項(xiàng)。(文件名為ex6_l.c)^include"conio.h"main()(longi,x[20];clrscr();x[〇]=0;x[l]=l;for(i=2;i<20;i++) /?尚剩18項(xiàng)?/x[i]=x[i-l]+x[i-2]: /?產(chǎn)生各項(xiàng)?/for(i=0;i〈20;i++) /*輸岀數(shù)列*/printf(*%ld\t*,x[i]);}(2)從鍵盤輸入N個自然數(shù),然后按升序進(jìn)行排列。程序1:用“比較法”(文件名為ex6_2.c)^include"conio.h"#defineN10main()inta[N],t,i,j;clrscr();for(i=0;i<N;i++) /*本循環(huán)輸入N個原始數(shù)據(jù)?/scanf&a[i]);for(i=0;i<N-l;i++) /*本循環(huán)完成排序*1for(j=i+l;j<N;j++)/*x[i]與它后邊所有元素逐一比較,大則交換?/if(a[j]<a[i]){t=a[j];a[j]=a[i];a[i]=t;}for(i=0;i<N;i++) /?輸出排序后的數(shù)組?/printf(*%d*,a[i]);)程序2:用“冒泡法”(文件名為ex6_3.c)#include'conio.h"#defineN10mainO(inta[N],t,i,j;clrscr();for(i=0;iくN;i++)scanf(線d”,a+i);for(j=0;j<N-l;j++)for(i=0;i<N-j;i++)if(a[i]>a[i+l]){t=a[i];a[i]=a[i+l];a[i+l]=t;}for(i=0;i<N;i++)printf(*%d”,a[i]);)(3)輸入一個字符串,判斷它是否是回文(對稱)。如abcdcba是回文。(文件名為ex6_4.c)源程序如ド:ftinclude"conio.h"^include"string,h”mai

溫馨提示

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

評論

0/150

提交評論