



版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
C語言實驗指導與習題解析饒琛 陳舜青蔡曉麗率州ス挙角TOC\o"1-5"\h\z\o"CurrentDocument"第1單兀TurboC2.0集成開發(fā)環(huán)境 1\o"CurrentDocument"ー、進入TurboC的工作窗口 1\o"CurrentDocument"二、TurboC的工作窗口介紹 1\o"CurrentDocument"三、設(shè)置TC工作環(huán)境 2\o"CurrentDocument"四、改變用戶工作目錄 2\o"CurrentDocument"五、TC常用菜單項的使用 3\o"CurrentDocument"六、對單文件的編輯、編譯、連接、運行 8\o"CurrentDocument"七、對多文件程序進行編譯和連接 9\o"CurrentDocument"ハ、TC程序的調(diào)試 10\o"CurrentDocument"第2單元C語言上機實驗 1\o"CurrentDocument"實驗1C程庁的運行方法 1\o"CurrentDocument"實驗2基本語句(一) 5頭お3本世句(—?) 8\o"CurrentDocument"實驗5數(shù)組(一) 18實驗6數(shù)組(二) 23\o"CurrentDocument"實驗7函數(shù)(一) 27\o"CurrentDocument"實驗8函數(shù)(二) 35實込セ9指針(一) 42實驗!0指科(二) 46\o"CurrentDocument"實驗11結(jié)構(gòu)體和共用體(一) 52實驗13文件的使宿(一). 63\o"CurrentDocument"實驗14文件的使用(二) 67\o"CurrentDocument"第3單元習題與マ題解析 76\o"CurrentDocument"習題1基本語句解析 79\o"CurrentDocument"づ題2數(shù)組 85習題2數(shù)組解析 89\o"CurrentDocument"習題3函數(shù) 93\o"CurrentDocument"習題3函數(shù)解析 101\o"CurrentDocument"習題4指針 109\o"CurrentDocument"習題4指針解析 112\o"CurrentDocument"ス題5帀構(gòu)體和共用體 120\o"CurrentDocument"習題5結(jié)構(gòu)體和共用體解析 126\o"CurrentDocument"習題6文件 133\o"CurrentDocument"第4單元C語言理論考試模擬試卷 145\o"CurrentDocument"附錄TurboC編譯常見出錯信息 156第1單元TurboC2.0集成開發(fā)環(huán)境ー、進入TurboC的工作窗口TurboC提供了兩種編譯環(huán)境:集成編譯開發(fā)環(huán)境TC和命令行編譯TCC。TC是ー個集編輯、編譯、連接、調(diào)試及運行為一體的集成模塊,為用戶提供了一個方便的集成開發(fā)環(huán)境。廠家提供的編譯系統(tǒng)都是以壓縮文件的形式存放在軟盤或光盤上的,安裝時只要在硬盤建立TC文件夾,將存放在軟盤上的壓縮文件TTC.EXE復制到硬盤TC文件夾中,雙擊該文件解壓,或者用TurboC(簡稱TC)系統(tǒng)提供的install.exe安裝程序進行安裝,用戶可以根據(jù)系統(tǒng)提示進行操作,指定存放系統(tǒng)文件的目錄和存儲模式,也可以按默認方案安裝。在TC主目錄下已經(jīng)存放了tc.exe、tcc.exe兩個執(zhí)行文件,其中tc.exe是將編輯、編譯、連接、調(diào)試和運行集成為?體的基本模塊;tcc.exe則提供了某些補充功能,例如可以在程序中嵌入?yún)R編代碼等,一般只需用到tc.exe。進入TurboC環(huán)境需要調(diào)用tc.exe,可以在DOS平臺進入TCH錄,鍵入TC執(zhí)行Tc.exe?;蛘咴赪indows平臺通過“資源管理器”、“我的電腦”找到TC文件夾中的Tc.exe,雙擊該文件即可進入TurboC環(huán)境。為更方便地進入TC環(huán)境,可以在桌面上建立相應(yīng)的快捷方式。二、TurboC的工作窗口介紹進入TurboC的工作窗口后,可以使用Alt+Enter進行全屏和窗口工作兩種方式的切換,TurboC的界面如圖1所示。屏幕上最上面一行是主菜單,有8個下拉菜單選項:主菜單下面為編輯框,程序文件的編輯工作就在該框中進行,在編輯框的最上面一行顯示編輯狀態(tài),如當前光標所在行號(Line)、列號(Col)、當前正在編輯的文件的文件名和路徑等;編輯框下面有一部分是信息框(Message),表示程序編譯和連接時產(chǎn)生的信息;TurboC工作窗口的最下面一行為常用熱鍵,用戶可以使用熱鍵快速完成所需要的操作。圖1TC環(huán)境界面主菜單的操作有兩種方法:1、按F10鍵激活主菜單,按光標移動鍵"I"或“t”把光標希望的菜單項處,然后按回車鍵。2、直接按Alt+菜單項第一個字母(例如按Alt+F就是選擇了“File”項,進入文件菜單)。三、設(shè)置TC工作環(huán)境除Edit菜單項僅為進入編輯狀態(tài)外,其他菜單項被選擇后會打開ー個子菜單。通過如下操作制作可以配置文件:選擇“Options”菜單項,屏幕上彈出ー個子菜單窗口,如圖2所示。為了保存安裝程序建立的環(huán)境,在子菜單中選擇"SaveOptions”命令,被選中后,彈出ー個對話框,要求輸入配置文件名,為了方便,一般取缺省文件名TCCONFIGTC。圖2圖2配置文件界面如果想重建工作環(huán)境,可以改變“Options”子菜單中的命令。例如:可以選擇“Directories”命令,并按下圖3所示設(shè)置存放文件的目錄(這里假定TC文件夾位置是安裝在C盤,用戶文件夾為D:\ZXF)〇設(shè)置完畢后按Esc鍵返回“Options”子菜單.,然后用上面的方法(執(zhí)行SaveOptions命令)保存設(shè)置好的環(huán)境。注意:Includedirectories>Librarydirectories,TurboCdirectories這幾項中的盤符路徑一定要與硬盤中TC文件夾實際位置相符,否則就在此界面上Includedirectories:C:\TC\INCLUDEInstall建立的頭文件所在的缺省目錄Librarydirectories:C:\TC\LIBOutputdirectories:D:\ZXFTurboCdirectories:C:\TCPickfilename:CurrentPickfile:Install建立的庫文件所在的缺省目錄自己建立的存放*.exe和?.obj輸出文件的目錄Librarydirectories:C:\TC\LIBOutputdirectories:D:\ZXFTurboCdirectories:C:\TCPickfilename:CurrentPickfile:Install建立的TC所在的缺省口錄彈出ー個窗口,允許用戶規(guī)定pick文件名顯示當前pick文件名和它所在的目錄,不能修改圖3"Options”子菜單設(shè)置界面四、改變用戶工作目錄安裝程序把TurboC系統(tǒng)的可執(zhí)行文件存放在C:\TC目錄中,如果直接在這個H錄中エ作,源文件、?.obj及?.exe等文件都將被存儲在該目錄中,這樣,系統(tǒng)文件和用戶自己的文件混雜在ー起,導致了管理不便。可以專設(shè)存放源文件和存放用戶自己的可執(zhí)行文件的目錄,比如,用目錄D:\ZXF存放源文件、用戶生成的?.obj和?.exe文件億XF是某用戶在D盤上自己建立的文件夾)。
為了能將用戶生成的?.。bj和?.exe文件自動存放在D:\ZXF中,在圖3中要明確指出輸出文件的H錄(Outputdirectories:D:\ZXF)〇為了將源文件?.C存放在D:\ZXF目錄中,一般是把D:\ZXF目錄作為工作目錄。具體方法是:在“File”下拉菜單中選擇“Changedir”項,出現(xiàn)新目錄輸入框,提示用戶輸入所選擇的工作目錄名(如:將原有系統(tǒng)默認工作目錄刪除,輸入新的用戶工作目錄D:\ZXF),如圖4所示。此后,存盤和加載文件時,只要鍵入文件即可,無需再輸入盤符路徑。圖4圖4改變用戶文件夾界面五、TC常用菜單項的使用1、File菜單l)Load(加載):在編輯器中裝入一個已有的文件,可以用通配符(*)進行列表選擇,也可以直接鍵入文件名及其路徑。例如:想裝入的文件是E盤的GB文件夾中的P3.C文件,則輸入文件名如圖5所示。按回車鍵后,該文件就被調(diào)入內(nèi)存并顯示。如果記不淸所要裝入的源文件名,想看一下當前目錄中有哪些源文件,則可以在Load命令后出現(xiàn)?.C時直接按回車鍵,TC就會顯示當前目錄下所有后綴為.C的文件名,用光標移動鍵移到要裝入的文件名處按回車鍵,就可以顯示該文件內(nèi)容。要調(diào)出D盤ZXF文件夾中的源程序,只要鍵入:E:\ZXR*.C即可?!?Edit.LoadF3||Col1InsertIndentTabFill LoadFileNameE:\GB\P3.C_圖5加載已有文件的界面2)Pick(選擇):將最近裝入編輯器的八個文件組成一個表,讓用戶選擇后裝入編輯器,可以方便快速地打開最近操作過的文件。3)New(新文件):說明當前要編輯的文件是最新文件,裝入編輯器后的文件缺省名為NONAME.Co4)Save(存盤):將編輯器中的文件存盤。如果該文件已存盤,則按原有文件名存盤;如果該文件未存過盤,則出現(xiàn)輸入文件名對話框,非當前盤非當前目錄必須輸入盤符路徑。5)Writeto(另存為):將編輯器中的文件以另ー個文件名存盤,如果該文件已存在,則覆蓋該文件。6)Directory(目錄):按冋車鍵顯示?.*,再按回車鍵顯示當前目錄及其所需文件列表,可以選擇要打開的文件。如果顯示?.?時改為?.C,則只顯示當前目錄及其C源程序文件列表。7)ChangDir(改變驅(qū)動器):顯示當前目錄,改變當前驅(qū)動器及其口錄。8)0sShell(暫時退出):暫時退出TurboC,轉(zhuǎn)到DOS提示符下,可以用EXIT命令返冋。9)Quit(退出):退出TurboC。2、Edit菜單執(zhí)行Edit命令可以對源程序文件進行編輯。在編輯窗口最上面一行出現(xiàn)Insert提示時,表示當前處于插入編輯狀態(tài);Insert消失時,表示當前處于重寫(覆蓋)狀態(tài)。按Insert鍵可以改變“插入Z重寫”狀態(tài)。Ctrl+Fl鍵的作用是顯示在線幫助。用法是:把光標移到任一關(guān)鍵字或函數(shù)名處按Ctrl+Fl鍵,會在屏幕上顯示出關(guān)鍵字或函數(shù)的使用信息。3、Run菜單使用該菜單命令可以運行和調(diào)試程序。下面介紹各菜単命令:l)Run(運行):編譯、連接生成目標文件和可執(zhí)行文件并運行程序。如果選擇Debug/Sourcedebug為on,程序執(zhí)行時每ー個斷點處都會暫停下來,再次按Ctrl+F9鍵,繼續(xù)執(zhí)行到下ー個斷點處或程序結(jié)束。2)Programreset(程序重啟):該命令終止當前調(diào)試,釋放分配給程序的空間,關(guān)閉已打開的文件。但不改變斷點設(shè)置。3)GotoCursor(執(zhí)行到光標所在行):用于動態(tài)調(diào)試,使程序執(zhí)行到編輯窗口中光標所在行。注意光標所在行應(yīng)該是可執(zhí)行代碼語句。4)Traceinto(跟蹤進入被調(diào)用函數(shù)):執(zhí)行當前函數(shù)中的下一條語句,如果該語句為函數(shù)調(diào)用語句,則進入該函數(shù),包括系統(tǒng)函數(shù)。用于動態(tài)調(diào)試,單步跟蹤程序執(zhí)行。5)Stepover(単步執(zhí)行):執(zhí)行當前函數(shù)的下一條語句,但不跟蹤進入被調(diào)入的子函數(shù),用該命令單步跟蹤程序執(zhí)行,一次執(zhí)行一條語句。6)Userscreen(用戶屏幕):使用該命令可以看到程序執(zhí)行后的屏幕(把編輯窗口切換到程序輸出窗口)。4、Compile菜單使用該菜單命令可以編譯和連接程序,生成可執(zhí)行文件。各子菜單命令功能如下:l)CompiletoOBJ(把源文件編譯成H標文件):把C語言源文件(*.C)編譯成H標文件(*.obj),在編譯過程中,彈出ー窗口顯示編譯信息,如有編譯錯誤,則顯示在信息框中,并用高亮度條在編輯中顯示出錯語句的位置。2)MakeEXEfile(生成可執(zhí)行文件):此命令調(diào)用相應(yīng)工程文件生成一個可執(zhí)行文件,并顯示生成的可執(zhí)行文件的文件名。如果處理的是.C文件,編譯并連接生成相應(yīng)的.。bj和.exe文件。如果源文件的生成時間比.。bj文件早,則不再對源文件進行編譯,更新了源文件后オ重新編譯。如果處理的是.。bj文件,只進行連接生成相應(yīng)的.exe文件,同樣只有更新了.。bj文件后才重新連接。對文件的處理順序是:?Projectname中的.PRJ;②PrimaryCfile中的.C文件;③最后裝入編輯窗口的.C文件。3)LinkEXEfile(連接生成可執(zhí)行文件):將當前目標文件和相應(yīng)庫文件連接成一個新的可執(zhí)行文件,但不執(zhí)行。該命令不檢查日期和時間。4)Buildall(編譯連接相關(guān)文件):重新編譯連接相應(yīng)工程文件中的所有文件,不管其是否是過期文件,無條件重新編譯與連接生成相應(yīng)的可執(zhí)行文件。5プ!40^7じ£怕(主?文件):該命令用于編譯含有多個嵌入文件的C語言源程序,執(zhí)行時彈出ー個對話窗口,要求輸入將要編譯或Make的新文件名。當編譯出現(xiàn)錯誤時,自動裝入源文件以便用于修改錯誤。6)Getinfb(獲得編譯信息):該命令可以顯示編譯信息,如當前文件名、源文件長度,可用內(nèi)存空間等。5ヽProject菜單該命令可以用來把多個源文件和目標文件連接成一個完整的程序,子程序功能如下:1)Projectname:彈出對話窗口,要求輸入將要編譯、連接的.PRJ文件名。用這種方法生成的.EXE文件的主文件名就是.PRJ文件的主文件名。2)Breakmakeon:規(guī)定終止Make的缺省條件,共有四個選項:Warning:編譯完一個文件后如發(fā)現(xiàn)“警告”以上的錯誤停止編譯;Error:編譯完一個文件后如發(fā)現(xiàn)“錯誤”,停止編譯;FatalError:編譯完全部文件后,如發(fā)現(xiàn)錯誤,停止編譯:Link:在連接前Make,即只生成.obj文件。3)AutoDependencies:設(shè)置自動依賴關(guān)系。On:自動檢查.C文件與相應(yīng).obj文件的日期時間關(guān)系,TC在編譯時把日期時間信息存放在.obj文件中,若.C文件比.obj文件新,則重新編譯。Off:不進行日期時間檢查。4)ClearProject:清除Projectname和重置消息窗口。5)Removemessage:清除消息窗口中的出錯信息。6、Options菜單該命令可以進行集成開發(fā)環(huán)境的各項設(shè)置,包括庫和包含文件的目錄、程序運行參數(shù)等。常用設(shè)置如下:Compile4編譯程序選項):其下子菜單提供如下功能:Model子菜單:設(shè)置存儲器模式,允許用戶選擇Tiny、Small>Medium、Compact>Large>Huge等6種模式中的ー種:Defines子菜單:輸入宏定義;Codegeneration子菜單:控制生成目標代碼的形式,如Instructionsetuj'以選擇8088、8086或80286指令;Optimization:控制代碼生成策略,彈出子菜單供選擇:Source;控制編譯器如何處理源代碼,彈出ー個子菜單供選擇。如指定標識符有效字符個數(shù)(Identifierlength可選擇1~32);Errors子菜單:代碼優(yōu)化和診斷信息,設(shè)置停止編譯的錯誤個數(shù)及警告?zhèn)€數(shù),彈出子菜單供選擇。Names:改變代碼、數(shù)據(jù)和BSS段的缺省段、組和類名,一般不需改變。Linker(連接子菜単):改變連接子菜單中的命令,可以改變連接器的設(shè)置。子菜単如下:MapFfile:控制是否產(chǎn)生映射文件;Initializesegments:控制連接器是否對未初始化的段初始化。Defaultlibraries:當由其他編譯器產(chǎn)生的目標文件時,那些編譯器可能在目標文件中放入了一個缺省庫。該命令控制連接器是否在那些庫中尋找所需函數(shù)。Graphicslibrary:打開或關(guān)閉自動查找圖形庫的開關(guān),當選擇了Off時可在.PRJ文件中寫上graphics.lib,也可輸出圖形;Warnduplicatesymbols:控制是否檢查.OBJ文件和.LIB文件中的重復符號;Stackwarning:控制是否Nostack警告信息;Case-sensitivelink:控制是否區(qū)分大小寫字母不通用。Environment(環(huán)境子菜単):設(shè)置文件是否自動存盤、制表鍵的空格數(shù)和顯示屏幕行數(shù)等,為編輯程序設(shè)置環(huán)境。子菜單功能如下:Messagetracking:當滾動信息窗口中的錯誤信息是,控制TC是否跟蹤編輯程序中的語法錯誤及跟蹤方式;Keepmessages:控制在編譯、Make之前是否保存信息窗口中的錯誤信息;Configautosave:控制是否保存選項設(shè)置;Editautosave:控制是否將正在編輯的文件自動存盤:Backupfiles:控制是否產(chǎn)生備份文件:Tabsize:選擇制表(Tab)鍵的空格數(shù)。默認值為8,可取值為2?16(Tabmodeon時有效);Zoomedwindows:與熱鍵為F5的作用ー樣,把當前激活的窗口(編輯窗或信息窗)放大到整屏;Screensize:彈出ー個子菜單,允許選擇顯示屏幕的行數(shù),標準為25,EGA為43,VGA為50.Directories(目錄子菜單):選擇頭文件、庫文件、編譯器等所在的目錄及可執(zhí)行文件的輸出目錄。子菜單功能如前面圖3所示;Arguments(參數(shù)設(shè)置命令):允許用戶在集成環(huán)境下運行程序時使用參數(shù),執(zhí)行這一命令后,在彈出的窗口中輸入運行所需參數(shù),如圖6所示,然后Run/Run執(zhí)行程序。圖6集成環(huán)境運行程序輸入運行所需參數(shù)的界面SaveOptions(環(huán)境保存命令):如前面圖2所示。該命令的作用是將設(shè)置的命令保存到磁盤文件中,缺省的文件是配置文件Tcconfig.tc。RetrieveOptions(恢復環(huán)境命令):裝入以前用Saveoptions命令保存的配置文件,為TC設(shè)置環(huán)境。7、Debug菜單該菜單命令可以設(shè)置除斷點和表達式之外的集成調(diào)試環(huán)境和各項功能。常用設(shè)置如ド:Evaluate(計算):用于計算和顯示變量或表達式的值,還允許用戶修改此值。運行該命令后,彈出ー個窗口,該窗口包含計算域(Evaluate)、結(jié)果域(Result)和新值域(Newvalue)三部分。用戶可以在其中計算任何合法的C語言表達式或變量,但不包括函數(shù)調(diào)用語句和宏定義的常量。如果調(diào)試程序可以計算表達式的值,它就可以在結(jié)果域中顯示出來:如果表達式引用了一個變量或簡單的數(shù)據(jù)單元,用戶可以將光標移動到新值域并把表達式作為新值輸入。在調(diào)試過程中可以采用給某些變量賦新值的辦法尋找錯誤。CallStrack(調(diào)用棧):顯示程序正在運行的函數(shù)調(diào)用、序列。FindFunction:顯示編輯窗口中某ー函數(shù)的定義。彈出ー個窗口,在其中輸入要顯示的函數(shù)名并按回車,光標就指向函數(shù)的定義處。RefreshDisplay(恢復原先屏幕):如果編輯屏幕被重寫,該選擇項可恢復當前屏幕內(nèi)容。DisplaySwapping(屏幕切換):控制編輯窗口與程序輸入窗口的轉(zhuǎn)換關(guān)系,彈出ー個窗口提供三種選擇:Smart(缺省方式):執(zhí)行代碼產(chǎn)生輸出時切換到程序輸入窗口,然后返回到編輯窗口;?None:不進行屏幕切換;Always:每執(zhí)行一條語句切換一次屏幕。SourceDebugging(源程序調(diào)試):控制編譯器是否在可執(zhí)行文件中加入調(diào)試信息,彈出選擇窗口提供三種選擇:On:在可執(zhí)行文件中加入調(diào)試信息,為源代碼級調(diào)試做準備;Standalone:在可執(zhí)行文件中加入調(diào)試信息,但只能使用獨立調(diào)試工具Turbodebugger;None:在可執(zhí)行文件中不加入調(diào)試信息。8、Break/Watch菜單使用該菜單命令可以進行集成調(diào)試環(huán)境中斷點和監(jiān)視表達式的設(shè)置,子菜單功能如下:AddWatch(加入一個監(jiān)視表達式):監(jiān)視表達式是其運算值可在監(jiān)視窗口中顯示的表達,每當程序暫停時它的值會被亜新計算。用戶可以通過監(jiān)視表達式的值來判斷程序執(zhí)行的情況。當用戶選擇本命令時,調(diào)試程序打開ー個彈出窗口,提示用戶鍵入ー個監(jiān)視表達式,按回車鍵可以增加一個表達式及其當前值到觀察窗口。DeleteWatch(刪除監(jiān)視表達式):該命令用來從觀察窗口中刪除監(jiān)視表達式,使用該命令時,監(jiān)視表達式必須是可見的。也可以把光標移到Watch窗口中某ー表達式用De!鍵或Ctrl+Y鍵刪除。EditWatch(編輯監(jiān)視表達式):該命令允許用戶編輯觀察窗口中的當前監(jiān)視表達式。RemoveAllWatch(刪除所有監(jiān)視表達式):該命令用來從觀察窗口中刪除所有監(jiān)視表達式。ToggleBreakpoint(打開或關(guān)閉斷點):斷點是程序執(zhí)行中暫停的地方,設(shè)置斷點可以C語言上機實驗指導讓用戶有足夠的時間檢查關(guān)鍵變量和表達式的值。否則,用戶無法確定程序是否按設(shè)計的那樣執(zhí)行。該命令用來設(shè)置和刪除(再次執(zhí)行時)光標所在處的斷點,程序運行過程中遇到斷點就暫停。ClearAllBreakpoints(清除所有斷點):該命令用來從程序中清除所有斷點。ViewNextBreakpoints(顯示下ー個斷點):該命令將光標移動到程序的下一個斷點,它不執(zhí)行程序,只是在編輯窗口中定位活動的斷點。六、對單文件的編輯、編譯、連接、運行1、編輯要輸入和編輯ー個新的C程序,應(yīng)先按F10激活主菜單,用光標移動鍵選定File/New命令,按回車鍵。出現(xiàn)空白的編輯窗口,用戶就可以輸入和編輯源程序了。輸入完整的程序或部分程序后,應(yīng)及時將源程序保存起來,按F2功能鍵或執(zhí)行File/Save命令。第一次存盤將彈出ー個對話框,要求用戶輸入文件名,以后再次存盤不再彈出對話框。文件將保存在用戶工作目錄內(nèi),如果TurboC安裝在D盤TC文件夾中,且用戶未更改過工作目錄時,默認的工作目錄即為D:\TC,默認文件名為NONAME.C(一般用戶應(yīng)改成自己命名的文件名)。建議較長的程序在錄入時多存幾次。不指定路徑時,文件就存在D:\TC中,如果用戶不想保存在D:\TC,也可以自己設(shè)定盤符路徑,如:D:\ZXF\P126_2.C,或在存盤前先用File/Changedir命令改變用戶的工作目錄。在用指定的文件名P126_2.C存盤后,編輯窗口中右上角的文件名就自動改為P126_2.Co如果以后還想改名,可以使用File/Writeto命令。編輯ー個已存在的文件,可以使用File/Load命令,調(diào)出已存在的文件,重新修改、處理。為了驗證TC是否能正常工作,TC自帶ー個測試程序Helb.C,用菜單命令File/Load可將該文件從TC文件夾中調(diào)出,觀察其是否能正常編譯連接和運行。2、編譯執(zhí)行Compile/CompiletoOBJ命令,此時系統(tǒng)顯示默認的目標文件名。如果當前被編譯的源程序文件名為P126_2.C,則系統(tǒng)自動將目標文件名定為P126_2.obj,按冋車鍵執(zhí)行該命令即可編譯程序。3、連接有了目標文件后還不能直接運行,必須把目標文件與系統(tǒng)提供的庫函數(shù)和包含文件等連接成一個可執(zhí)行文件(后綴為.exe),才能運行這個.exe文件。執(zhí)行Compile/LinkEXEfile命令就可進行連接,在當前工作目錄或配置文件TCCONFIGTC指定的輸出目錄中生成一個可執(zhí)行文件P126_2.exe〇用Compile/MakeEXEfile命令或者直接按F9鍵可以一次完成編譯和連接,生成目標文件和可執(zhí)行文件。4、運行如果在編譯、連接過程中未出現(xiàn)錯誤,系統(tǒng)就會生成目標文件和可執(zhí)行文件,這時就可以運行了,運行程序可以采用以下幾種方法:1)在DOS環(huán)境下運行如果當前目錄就是輸出文件.EXE所在目錄,直接輸入可執(zhí)行文件名,即可運行程序。假設(shè)可執(zhí)行文件名為P126_2.EXE,輸入命令P126_2,按回車就能運行該程序。如果該文件不在當前目錄中,則應(yīng)指出其路徑,如輸入:D:\ZXF\P126_2命令。2)在TC環(huán)境中通過菜單選擇運行按Ctrl+F9鍵,或選擇執(zhí)行RuiVRun命令,即可運行程序。實際上Ctrl+F9的作用不僅是運行,而是包括編譯、連接和運行。因此,在編輯窗口完成一個源程序的編輯后,如果經(jīng)過檢查認為沒有問題,就可直接按Ctrl+F9鍵,TurboC將一次完成從編譯、連接到運行的全過程。如果在編譯或連接中有錯,就停下,顯示出錯信息,用戶改正后再按Ctrl+F9鍵重新編譯、連接,若沒有錯誤就自動開始運行。程序運行時,如有鍵盤輸入語句(scanf語句),屏幕顯示會切換到用戶屛,此時用戶可以從鍵盤輸入數(shù)據(jù)。如果想看運行結(jié)果,可選擇Run/Userscreen命令,或者直接按Alt+F5鍵,此時屏幕的顯示切換到用戶屏,程序運行的結(jié)果顯示在用戶屏上。用戶看完結(jié)果后,按任一?鍵就回到編輯窗口。下面是最常用的功能鍵的有關(guān)操作:F2:保存文件F9:進行編譯和連接Ctrl+F9:編譯、連接、運行Alt+F5:觀看運行結(jié)果操作順序一般為:輸入程序fF2fF9-Ctrl+F9fAit+F5七、對多文件程序進行編譯和連接如果ー個源程序包含多個文件(源程序.C),則應(yīng)當對各文件分別進行編譯,得到多個文件(目標文件.。bj),然后將這些目標文件以及庫函數(shù)、包含文件等連接成一個可執(zhí)行文件。TC提供了對多文件程序進行編譯和連接的簡便方法。要將這些文件組成一個“項目”就要建立一個“項目文件”,在該文件中包含各文件的名字,然后將該項目連接,就可以得到可執(zhí)行文件.exe。具體步驟如下:闇7建立項冃文件在TC編輯環(huán)境中,輸入各源文件的名字。如果有一個程序,包含兩個文件,分別為P1.C和P2.C(后綴名.C可以省略不寫,源文件名可以帶有路徑),則在TC編輯窗口中輸入這兩個文件名,如圖7闇7建立項冃文件執(zhí)行File/Writeto命令將文件保存,文件名為P1_P2.PRJ,P1_P2是用戶自己指定的名字,后綴必須用.PRJ(Project的縮寫),以表示為項目。執(zhí)行Project/Projectname命令,在對話框中輸入需要進行編譯和連接的項目文件名(系統(tǒng)顯示為?.PRJ,要求用戶修改為實際的文件名)。由于剛オ是用P1_P2.PRJ存盤的,因此現(xiàn)在應(yīng)輸入P1_P2.PRJ,按回車鍵確認。選擇Compile/MakeEXEfile命令,系統(tǒng)就會對此項目文件進行編譯和連接,并生成兩個目標文件P1.OBJ和P2.OBJ,以及可執(zhí)行文件P1_P2.EXE?在選擇“MakeEXEfile”或按F9鍵進行編譯連接時,系統(tǒng)首先查找有無項目文件(.PRJ)。如果在Projectname中指定了當前有效的項目文件,則系統(tǒng)優(yōu)先編譯該項目中的文件,而不是編譯編輯窗口中的文件。因此,在處理完一個多文件程序的編譯和連接后,應(yīng)及時將Projectname項清空(選擇Project下拉菜單中的ClearProject項),否則就會在編譯連接時仍然把項目文件.PR!當做編譯的對象,而不是編譯編輯窗口中的源文件。ハ、TC程序的調(diào)試1>TC集成環(huán)境的調(diào)試程序我們把發(fā)現(xiàn)改正程序中錯誤的過程稱為程序調(diào)試。有時僅僅靠觀察不正確的程序是很難找到錯誤的關(guān)鍵所在的。因此大多數(shù)程序員都借助調(diào)試程序,再對被調(diào)試程序進行定位。調(diào)試程序能夠控制程序的運行,可以在任一點上停止程序的執(zhí)行,每次執(zhí)行一句,觀察程序輸出的數(shù)據(jù)等。要想使用集成調(diào)試程序,首先應(yīng)該設(shè)置啟用集成調(diào)試程序的開關(guān),即選擇Debug/SourceDebugging為打開狀態(tài)。這時,用RUN選項或Ctrl+F9進行調(diào)試程序時,TurboC2.0集成調(diào)試程序自動接管對程序的調(diào)試工作。在程序較大時,一般是將一個源程序設(shè)置幾個斷點,當運行程序到斷點處時,它就在執(zhí)行斷點所在行的第一個語句之前將程序掛起,同時把調(diào)試程序的控制權(quán)交給程序員。在程序暫停時,你可以用許多方法來研究和處理程序。如:可以顯示ー個變量或表達式的值;在ー個特定的窗口設(shè)置ー些表達式并觀察它們值的變化:修改變量的值:清除所有的斷點或者設(shè)置斷點:一次一行地單步執(zhí)行程序:編輯文件,重新編譯和連接程序等。調(diào)試程序的方法互不相同,要靠自己不斷積累,使之日益豐富。ー?般使用TC的集成環(huán)境編譯用戶程序時,采用RUN選擇項或Ctrl+F9命令,系統(tǒng)也能給出出錯的地點供程序員修改調(diào)試之用,我們稱這種方法為靜態(tài)調(diào)試:而將使用調(diào)試程序進行的調(diào)試稱其為動態(tài)跟蹤調(diào)試。2、動態(tài)調(diào)試1)一般調(diào)試方法為了使用集成調(diào)試工具,在編譯和連接時耍把Options/Compiler/Codegeneration/OBJdebuginfbrmation選擇開關(guān)和Debug/SurceDebugging選擇開關(guān)都置為On。這樣,在生成的運行文件中才能包含與調(diào)試有關(guān)的符號信息。為了調(diào)試方便,在編譯和連接時應(yīng)當把Options/Compiler/Optimization/JumpOptimization選擇開關(guān)置為OfF。因為當這個開關(guān)為On時,編譯程序在優(yōu)化代碼時會引起執(zhí)行代碼與源代碼行的不對應(yīng)。2)步進執(zhí)行法為了找出邏輯錯誤,可以RurVTraceinto(熱鍵F7)或RnWStepover(熱鍵F8)一步一步地逐行執(zhí)行程序,在懷疑可能出錯的地方停下來使用Break/watch/Addwatch(熱鍵Ctrl+F7)命令或10Debug/Evaluate使用(熱鍵Ctrl+F4)命令,在彈出的監(jiān)視窗口中輸入監(jiān)視表達式(ー個變量或ー個C表達式等)。通過查看、分析表達式的值,逐步找出出錯原因。3)設(shè)置斷點法當調(diào)試ー個大的程序時,為了冋憶調(diào)試速度,可以使用Break/watch"ogglcbreakpoint(熱鍵Ctrl+F8)命令在懷疑可能出錯的代碼行設(shè)置斷點。設(shè)置了斷點后,當按下Ctrl+F9鍵快速執(zhí)行程序時,程序執(zhí)行到斷點處就會暫停下來等待輸入命令。這時,可以用上面的方法查看表達式的值,也可以接著步進跟蹤程序,再次按Ctrl+F9鍵,程序繼續(xù)執(zhí)行到下ー個斷點處或程序結(jié)束。如果在調(diào)試的過程中想終止調(diào)試操作,可以按下Ctrl+F2鍵。要刪除某ー斷點,可把光標移到斷點行按Ctrl+F8鍵。九、常用功能鍵表表1TurboC常用編輯命令及功能鍵命令功能命令功能Home光標移到行首F1打開幫助文件End光標移到行尾F2把當前編輯的文件存儲到磁盤上,見File/SaveCtrl+N插入一行F3裝載ー個文件,見File/loadCtrl+Y刪除光標所在行F4讓程平從執(zhí)行長條執(zhí)行到光標所在行,見Run/GotoCursorCtrl+KB塊頭標記F5放大或縮小激活的窗口,見Options/Environment/ZoomedWindowsCtrl+KK塊尾標記F6交替激活編輯或信息窗口Ctrl+KC塊復制F7單步執(zhí)行程序,跟蹤函數(shù)調(diào)用,見Run/TraccintoCtrl+KY塊刪除F8單步執(zhí)行程序,不跟蹤函數(shù)調(diào)用,見Run/StcpoverCtrl+KH顯示/隱藏塊標記F9編譯并連接,見Compile/MakeCtrl+KV塊移動F10返回主菜單Ctrl+KR從磁盤讀入塊Alt+F5顯示用戶屏,見Run/UscrscreenCtrl+KW把塊寫入磁盤Alt+F7光標指向前ー個出錯處Ctrl+U撤消正在進行的操作Alt+F8光標指向下一個出錯處Ctrl+P允許加入控制符Alt+F9不進行日期和時間檢查的編譯,生成.OBJ文件
續(xù)前表命令功能命令功能Ctrl+KD文件存盤退出Alt+C打開編譯菜單Ctrl+KQ文件不存盤退出Alt+D打開Debug菜單Ctrl+QF查找Alt+E進入編輯狀態(tài)Ctrl+QA査找和替換Alt+F打開File菜單Ctrl+Fl顯示光標所指的關(guān)鍵詞或函數(shù)的使用信息Alt+O打開Options菜單Ctrl+F2終止調(diào)試Alt+P打開Project菜單Ctrl+F3操作顯示函數(shù)的調(diào)用序列,£Debug/CallStackAlt+R打開Run菜單Ctrl+F4檢查和改變表達式的值,見Debug/EvaluateAlt+X退出TC,返回Ctrl+F7在觀察窗口屮輸入表達式,見Debug/watchTab制表符Ctrl+F8設(shè)置或清除斷點,見Debug/watchEsc返回上一級菜單Ctrl+F9編譯、連接并運行程序,見Run/Run命令I(lǐng)ns插入與改寫狀態(tài)切換注:Ctrl+KB表示按住Ctrl鍵不放,再按K鍵和B鍵。12第2單元C語言上機實驗實驗1C程序的運行方法ー、關(guān)鍵知識點:通過前面的學習,我們認識到C程序的編輯、編譯、連接和運行可以在TC環(huán)境中通過菜單、熱鍵、功能鍵,按照一定的順序和方法來完成。TurboC2.0中不能使用鼠標時,或者輸入中文(需要在DOS下執(zhí)行命令PDOS95)感覺不方便時,可以在記事本、寫字板、Word中編輯程序,然后保存為.txt純文本文件,再到TC下編譯、連接、運行。TC下編輯的源程序(.C文件)也可以插入到Word文檔中,編輯后打印輸出。在C語言中數(shù)據(jù)的輸入輸出大致分為以下幾種情況:1、用鍵盤輸入、屏幕輸出用scanf函數(shù)從鍵盤輸入數(shù)據(jù)給程序中的變量或數(shù)組元素,每次運行到scanf函數(shù)時,程序?qū)⑼V惯\行,在用戶屏幕上等待用戶從鍵盤輸入數(shù)據(jù)后再繼續(xù)運行,每次運行程序輸入的數(shù)據(jù)可以不同;用printf函數(shù)將程序運行結(jié)果輸出到扉幕上,但輸出結(jié)果不保存。2、在程序中用文件輸入輸出語句用fscanf、fprintf、fread,fwrite等函數(shù),通過已存在的文件中的數(shù)據(jù)輸入給程序中的變量或數(shù)組元素(代替人工鍵盤輸入),或?qū)⒊绦蜻\行的結(jié)果輸出到ー個已存在的也可以是新建立的文件中。3,在DOS下用重定向符在DOS下,用重定向符“V”將文件中的數(shù)據(jù)輸入到程序中,或用重定向符“>”,將結(jié)果輸出到文件中。二、實驗?zāi)康模毫私釺C編譯環(huán)境,掌握一般程序的上機步驟,了解C語言基本結(jié)構(gòu)及輸入輸出函數(shù)的基本形式。學習將源程序及運行結(jié)果打印出來的方法。三、實驗內(nèi)容:1、程序的靜態(tài)調(diào)試1)在資源管理器中找到TC文件夾(大多數(shù)系統(tǒng)安裝在C盤或D盤,這里假定TC文件夾安裝在C盤,用戶文件夾為D:\ZXF)中的TC.EXE文件,雙擊該文件進入TC,經(jīng)常使用TC的用戶可以在桌面建立快捷方式。2)調(diào)出TC文件夾中自帶的測試程序Hello.C.驗證其是否能正常編譯。3)為了將源文件?.C存放在D:\ZXF文件夾中,可以把D:\ZXF文件夾作為用戶工作文件夾。選擇File/Changedir命令,出現(xiàn)新路徑輸入框,提示用戶輸入所選擇的工作文件夾名(將原有的系統(tǒng)默認工作目錄刪除,輸入新的用戶工作文件夾D:\ZXF,該文件夾名可以按自己的名字拼音重新命名,盤符也可以選擇優(yōu)盤或其他硬盤)〇4)為了能將用戶生成的?.obj和?.exe文件自動存放在D:\ZXF中,選擇Options/Directories命令,并設(shè)定輸出文件的目錄(Outputdirectories:D:\ZXF),Outputdirectories設(shè)置缺省時?.obj文件和?.exe文件將自動存放在用戶工作文件夾中,*.obj文件和?.exe文件與源程序文件*.c分開放在不同的文件夾時則一定要設(shè)置。觀察Includedirectories:C:\TC\INCLUDE、Librarydirectories:C:\TC\LIB和TurboCdirectories:C:\TC設(shè)置是否與TC實際存放位置相符。5)設(shè)置完畢后按Esc健返回“Options”子菜單,然后執(zhí)行SaveOptions命令保存設(shè)置好的環(huán)境。6)編輯新程序,輸入如下程序練習調(diào)試(學會在程序適當?shù)牡胤郊幼⑨?,便于他人閱讀和自己以后閱讀):(源程序文件名為al」.C)#include<stdio.h>#include<stdlib.h>intmax(intx,inty){intz;ifi[x>y)z=x;elsez=y;retum(z);}main(){inta,b,c;intmax(intx,inty);scanf(”%d,%d”,&a,&b); /?程序運行到此會等待用戶從鍵盤輸入兩個整數(shù)?/c=max(a,b); /*max()函數(shù)使用前必須先定義?/printf("max=%d",c);system("pause");}程序運行到scanf函數(shù)時,將切換到用戶屏幕等待用戶輸入a、b的值,若輸入3,5/將重新回到編輯窗口,按Alt+F5又回到用戶屏幕觀察程序運行結(jié)果。請記錄運行結(jié)果,并再次運行程序,輸入9,3/記錄結(jié)果。觀察D:\ZXF文件夾中是否存在al」.C文件,D:\ZXF文件夾中是否存在al」.obj文件和al」.exe文件,在Windows中雙擊al」.exe文件即可運行該程序。7)用文件輸出方式,將下列程序(文件名為al_2.c)的運行結(jié)果存放到用戶文件夾(D:\ZXF)下名為al_2.out的文件中。#include<stdio.h>#include<stdlib.h>main(){FILE?巾; /?定義ー個文件指針?/intt=l,i=2;if((fp=fdpen(Hal_2.out,,,',w,'))=NULL)/*建立al_2.out文件,并使文件指針指向C語言實驗指導與習題解析al_2.out文件*/{printf("cannotopenthefile\n");exit(O); /?建立al_2.out文件失敗,退出程序?/)while(i<=5){t=t*i;i=i+l;}巾rintセ電"5的階乘是:%d\n",t); /*將5的階乘寫入al_2.out文件中?/printff5的階乘是:%d\n",t); /*將5的階乘輸出到屏幕上?/fclose(fp);system(,,pauseM);}上述程序編輯、編譯、連接后,在D:\ZXF中生成可執(zhí)行文件al_2.exe,運行該程序的方法有:①在Windows中雙擊al_2.exe文件:②在TC中按Ctrl+F9:③在DOS下,鍵入盤符:隔徑、文件名,如果是當前盤可以省去盤符,當前目錄可以省去路徑。程序運行后就可以在ZXF文件夾中生成一個存放程序運行結(jié)果的文件al_2.outo要查看文件al_2.out的內(nèi)容,可以在DOS下提示符D:\ZXF后鍵入typeal_2.out命令或者在Windows中用記事本打開該文件。記錄al_2.out文件內(nèi)容:錄入程序的方法可以采用:①在TurboC提供的界面上編輯輸入。②為了輸入中文方便,整個程序都可以在記事本中輸入,存盤時文件名和擴展名都在文件名輸入框中輸入,如:al_2.c,然后再在TC中用Load命令調(diào)入該文件。③在Windows中輸入,或者從網(wǎng)頁等其他文檔處復制到Windows中,保存文件時選擇保存類型為“純文本文件”,在文件名框輸入al_2.c,然后再在TC中用Load命令調(diào)入該文件。4、使用調(diào)試程序?qū)Τ绦蜻M行動態(tài)調(diào)試在首次使用TC調(diào)試程序進行調(diào)試時,可使用TC附帶的ー個供練習調(diào)試用的程序ーwordcnt.e。它是ー個顯示ー個正文文件(wordent.dat)中只有一個字符的詞有多少個,兩個字符的詞有多少個等等。為了供練習調(diào)試,該程序中包含了幾個錯誤。調(diào)試前應(yīng)先檢查ー下工作環(huán)境是否正確,頭文件目錄和庫文件目錄設(shè)置是否正確。如:在調(diào)試wordcnt.c時,設(shè)置wordcnt.c和wordent.dat所在目錄為當前目錄。使用調(diào)試程序進行程序調(diào)試,沒有固定的步驟,下面提供參考步驟,請照此練習:1)檢查調(diào)試程序是否正確將wordent.e程序調(diào)入編輯窗口,選擇Run/Run命令運行該程序,系統(tǒng)將提示你輸入文本文件名,輸入wordcnt.dat。wordentdat被讀入并顯示第一,行后就鎖了起來,說明本程序有錯誤。按Ctrl+Break鍵,再按ESC健解除閉鎖。然后用Run/Programreset選擇項或Ctrl+F2熱鍵結(jié)束此次調(diào)試。2)錯誤的初步定位在有疑問的地方設(shè)置斷點,用光標移動鍵移到while(電ets)…開始的行上(要設(shè)置斷點的地方),選擇Break/Watch和Togglebreakpoint在當前光標所在行上設(shè)置斷點。運行程序到斷點處,用Run/Run重新運行此程序,運行到斷點處將暫停,等待進ー步操作。逐步執(zhí)行疑問區(qū)的程序,按F8(或選擇Run/Stepover)和F7(或選擇RurVTraeeinto)均可單步執(zhí)行程序,只是前者將跳過所調(diào)用的函數(shù),而后者將跟蹤進入被調(diào)用的函數(shù)之內(nèi)。運行到printflj語句處,按Alt+F5(或選擇Run/Userscreen)觀察程序輸出結(jié)果,在屏幕上顯示wordent.dat文件的第一行。可見while。語句和printfl;)函數(shù)均是正確的。繼續(xù)執(zhí)行下一句,計算輸入行的長度,其值賦給變量i。選擇Debug/Evaluate項,出現(xiàn)ー個窗口,在計算域中輸入變量i,回車后結(jié)果域應(yīng)顯示變量i的值是43,這說明賦值語句是正確的。按F8運行while。語句,高亮條將移動到循環(huán)體的第一個語句匕它調(diào)用wordlen。函數(shù),該函數(shù)計算?wordptr所指向的單詞長度。按F8執(zhí)行該語句,再計算i,此時的i值為〇,錯誤!第-個單詞的長度是2,錯誤在wordlen。函數(shù)中。3)錯誤的詳細定位選擇RurVRun運行到斷點,單步執(zhí)行到調(diào)用wordlen。函數(shù),選擇RurVTraceinto進入wordlen。函數(shù)中。連續(xù)兩次單步執(zhí)行完成賦值語句。計算wordimit指向的字符串,為輸入文件的每行,正確。單步執(zhí)行while。語句,高亮條以下一行,卻返回到了一個返回語句行。它就是我們要查找的錯誤!觀察while。循環(huán)中的語句,打出疑點:*wordlimit&*wordlimit!=SPACE。使用Debug/Evaluate計算?worldimit的值為T,“*worldimit!="其值為1,整個表達式的值就為I。計算“*wordlimit&*worldimit!="的值為0,所以此處有錯誤!將&&運算符誤為&運算符了。4)改正錯誤返回到編輯窗口,將光標移動到錯誤處,把&改為&&,按F2將修改過的程序存盤,再次運行,系統(tǒng)提示是否要“rebuild",按“Y”,重新編譯、連接,進行再次調(diào)試。5)繼續(xù)調(diào)試在未調(diào)試程序段設(shè)置幾個斷點,觀察運行斷點前的程序是否正確,也可以利用在監(jiān)視窗口中設(shè)置監(jiān)視表達式來簡化觀察操作,可以用BreakAVatch菜單中的Addwatch向監(jiān)視窗口加入表達式。還可以對監(jiān)視表達式進行編輯:先激活監(jiān)視窗口將高亮度條移動到需要編輯的表達式上,然后選擇Break/Watch菜單中的Editwatch選擇項,即可對該監(jiān)視表達式進行編輯。每次調(diào)試程序暫停時,都要重新計算監(jiān)視窗口中的監(jiān)視表達式,在程序運行時觀察表達式值的變化。實驗2基本語句(一)(順序結(jié)構(gòu)程序設(shè)計)ー、關(guān)鍵知識點:C語言是由函數(shù)組成的,一個函數(shù)包含聲明部分和執(zhí)行部分,聲明部分的內(nèi)容不稱為語句,執(zhí)行部分オ稱之為語句。聲明部分進行數(shù)據(jù)描述,定義數(shù)據(jù)類型和數(shù)據(jù)初值;執(zhí)行部分進行數(shù)據(jù)操作,対已提供的數(shù)據(jù)進行加工處理。順序結(jié)構(gòu)程序是按照語句的書寫順序依次執(zhí)行的。一般,每個程序都至少有一個輸出語句。二、實驗?zāi)康?掌握C語言順序結(jié)構(gòu)程序設(shè)計,掌握輸入輸出函數(shù)的用法,初步理解算法和結(jié)構(gòu)化程序設(shè)計的基本概念,了解順序程序的基本結(jié)構(gòu)。三、實驗內(nèi)容:1、改錯題改正下面程序的錯誤,給源程序命名為g2」.c。main{floatx=5.0;printf("%f\n",x%3);)2、編程題A、基礎(chǔ)題1)要將“Hello”譯成密碼,密碼的規(guī)律是:用原來的字母后面第2個字母代替原來的字母。例如:用字母"c”取代字母“a",用字母"D”取代字母“B”。因此,“Hello”應(yīng)譯成“Jgnnq”。請編寫ー程序,用賦初值的方法使5個變量cl、c2、c3、c4、c5的值分別為‘H','e',T,T,‘〇’,經(jīng)過運算,使cl、c2、c3、c4、c5的值分別為‘J','g','n','n','q',并輸出。源程序命名為:a2_Lc。【請在此處編寫程序】2)編寫程序,實現(xiàn)從鍵盤輸入學生的4門課成績,計算并輸出其總成績sum和平均成績avg。源程序命名為:a2_2.c,【請在此處編寫程序】「5(—32)3)輸入ー個華氏溫度,輸出攝氏溫度。公式為 9 ,結(jié)果取兩位小數(shù)。源程序命名為:a2_3.c?[請在此處編寫程序】B、選做題1)從犍盤上輸入三角形的三條邊a,b,c的值,假定它們能夠構(gòu)成一個三角形,利用公式 _a+b+cブ須=/(5-4)"ーの"ーケ計算三角形的面積,其中5—2 ,結(jié)果取兩位小數(shù)。源程序命名為:b2」.c?!菊堅诖颂幘帉懗绦颉?)求一元二次方程以2+版+。=°的根,a、b、c由鍵盤輸入,假設(shè)輸入的a、b、c的值滿足がー4ac>°。源程序命名為:b2_2.c.【請在此處編寫程序】實驗3基本語句(二)(選擇結(jié)構(gòu)程序設(shè)計)ー、關(guān)鍵知識點:順序結(jié)構(gòu)程序一般只能對邏輯關(guān)系相對簡單的問題求解。如果要使程序具備對條件進行邏輯判斷和選擇的功能,根據(jù)不同情況選擇不同方式進行處理,就必須在程序中使用控制語句來控制程序的執(zhí)行流程,使用選擇結(jié)構(gòu)也叫分支結(jié)構(gòu)進行編程。c語言表示邏輯變量時,以〇代表"假",以非〇代表"真"。kif條件分支語句一般形式為:iR表達式){語句體!;)else{語句體2;}條件語句可以嵌套,這種情況經(jīng)常碰到,但條件嵌套語句容易出錯,其原因主要是不知道哪個if對應(yīng)哪個else。 TurboC2.0規(guī)定:else語句與最近的ー個if語句匹配??捎秒A梯式i比lse-if結(jié)構(gòu)。階梯式結(jié)構(gòu)的一般形式為:if(表達式1)語句1;elseiル表達式2)語句2;else語句n;這種結(jié)構(gòu)是從上到下逐個對條件進行判斷,一旦發(fā)現(xiàn)條件滿足點就執(zhí)行與它有關(guān)的語句,并跳過其它剩余階梯:若沒有一個條件滿足,則執(zhí)行最后ー個else語句n。最后這個else常起著“缺省條件”的作用。同樣,如果每一個條件中有多于一條語句要執(zhí)行時,必須使用“ド和“}”把這些語句包括在其中。switch多重:選擇結(jié)構(gòu)一般形式為:switch(表達式){case常量1:語句1或空;break;case常量2:語句2或空;break;1Icase常量n:語句n或空;break;default: 語句n+1或空;break;}執(zhí)行switch開關(guān)語句時,將表達式的值逐個與case后的常量進行比較,若與其中一個相等,則執(zhí)行該常量下的語句,若不與任何一個常量相等,則執(zhí)行default后面的語句。switch表達式可以是任何產(chǎn)生整數(shù)結(jié)果的表達式。二、實驗?zāi)康?掌握關(guān)系運算符和邏輯運算符的運算規(guī)則,學會使用關(guān)系表達式和邏輯表達式正確描述選擇結(jié)構(gòu)的判斷條件。學習結(jié)構(gòu)化程序設(shè)計思想和開發(fā)方法,熟練掌握if語句和switch語句的格式和功能,結(jié)合程序掌握ー些簡單的算法,進ー步學習調(diào)試程序。三、實驗內(nèi)容:1、改錯題1)改正下面程序中的錯誤,給源程序命名為g3_l.Comain();{intx,y;scanf(M%d%d\nn,&x,&y);if(x>=y)thenprintf(,,x>=yM);printf(Mx<y");}2)改正下面程序中的錯誤,給源程序命名為g3_2.c。main(){floatx,y,z;intc=25;scanf("%£%f',x,y);if(x!=0&&y/x<c){z=y/x;printf(M%f\nM,z);}else{z=x+y;printf(',%f\n,,,z);}2、編程題A、基礎(chǔ)題1)從鍵盤輸入3個整數(shù),輸出其中最大的整數(shù)。源程序命名為:a3_l.Co【請在此處編寫程序】2)從鍵盤輸入ー個字符,如果是小寫,則轉(zhuǎn)換為大寫字母,并顯示轉(zhuǎn)換后的結(jié)果:如果不是小寫字母,則原樣輸出。源程序命名為:a3一2.c。【請在此處編寫程序】3)試編程判斷輸入的正整數(shù)是否既是5又是7的倍數(shù)。若是,則輸出yes:否則輸出no。源程序命名為:a3_3.Co【請在此處編寫程序】4)輸入三個整數(shù),將它們按照從小到大的順序輸出。源程序命名為:a3-4.c?!菊堅诖颂幘帉懗绦颉緽、選做題1)從鍵盤上輸入年、月、日,計算這1天是這1年的第幾天。源程序命名為:b3_l.c?【提示】按大月小月計算每月天數(shù),判斷是否是閏年,如果是閏年,則天數(shù)加1?!菊堅诖颂幘帉懗绦颉?)求一元二次方程の2+bx+c=。的根,a、b、c由鍵盤輸入,考慮パー4改>0、從ー4ac=0、グ-4ac<0三種情況。源程序命名為:b3_2.c?【請在此處編寫程序】實驗4基本語句(三)(循環(huán)結(jié)構(gòu)程序設(shè)計)ー、關(guān)鍵知識點:TurboC2.0提供三種基本的循環(huán)語句:fbr語句、while語句和do-while語句。1、fbr循環(huán)的一般形式為:fbr(く初始化〉;〈條件表過式〉;〈增量〉){語句體;}for循環(huán)中的“初始化”、’’條件表達式”和“增量”都是選擇項,即可以缺省,但“;”不能缺省。for循環(huán)可以有多層嵌套。2、while的一般形式為:while(條件){語句體;}while循環(huán)當條件為真時,便執(zhí)行語句,直到條件為假才結(jié)束循環(huán),并繼續(xù)執(zhí)行循環(huán)程序外的后續(xù)語句。與for循環(huán)ー—樣,while循環(huán)總是在循環(huán)的頭部檢驗條件,這就意味著循環(huán)可能什么也不執(zhí)行就退出。3、do-while循環(huán)的一般格式為:do{語句體;}while(條件);這個循環(huán)與while循環(huán)的不同在于:它先執(zhí)行循環(huán)中的語句,然后再判斷條件是否為真,如果為真則繼續(xù)循環(huán);如果為假則終止循環(huán)。因此do-while循環(huán)至少要執(zhí)行一次循環(huán)語句。4、break、continue和goto語句break語句通常用在循環(huán)語句和開關(guān)語句中。當break用于開關(guān)語句switch中時,可使程序跳出switch而執(zhí)行switch以后的語句。當break語句用于do-while、for、while循環(huán)語句中時,可使程序終止循環(huán)而執(zhí)行循環(huán)后面的語句,通常break語句總是與if語句聯(lián)在一起。即滿足條件時便跳出循環(huán)。break語句對if-else的條件語句不起作用。在多層循環(huán)屮,ー個break語句只向外跳ー層。continue語句的作用是跳過循環(huán)體中剩余的語句而強行執(zhí)行下一次循環(huán)。continue語句只用在for、while、do-while等循環(huán)體中,常與if條件語句ー起使用,用來加速循環(huán)。goto語句是ー種無條件轉(zhuǎn)移語句,使用格式為:goto標號;執(zhí)行g(shù)oto語句后,程序?qū)⑻D(zhuǎn)到該標號處并執(zhí)行其后的語句。通常goto語句與if條件語句連用,當滿足某ー條件時,程序跳到標號處運行。goto語句應(yīng)盡量不用,主要因為它將使程序?qū)哟尾磺?,且不易讀,但在多層嵌套退出時,用goto語句則比較合理。二、實驗?zāi)康氖煜ふ莆沼脀hile語句,do-while語句和for語句實現(xiàn)循環(huán)的方法。掌握在程序設(shè)計中用循環(huán)的方法實現(xiàn)ー些常用算法,進ー步學習調(diào)試程序。三、實驗內(nèi)容1、改錯題1)有一分數(shù)序列:2ハ,3/2,5/3,8/5,13/8,21/13…求出這個數(shù)列的前20項之和。改正下面程序的錯誤,給源程序命名為g4」.c。main(){intn,t,number=20;floata=2,b=l,s=0;fbr(n=1;n<=number;n-H-){s=a/b;t=a;a=a+b;b=a;)prin氓"sumis%9.6f\n",s);)2)從鍵盤輸入ー個正整數(shù),要求按照逆序輸出該數(shù)。改正下面程序的錯誤,給源程序命名為g4_2.Co#include<stdio.h>main(){intn;printf("請輸入ー個正整數(shù):");scanf("%d",&n);do{printf("%d",n/10);n=n/10;}while(n/10!=0);printf("\nM);)3)ー個數(shù)如果恰好等于它的因子之和,這個數(shù)就稱為完數(shù)。例如,6的因子是1、2、3,而6=1+2+3,因此6是完數(shù)。編程找出1000以內(nèi)的所有完數(shù)。改正下面程序的錯誤,給源程序命名為g4_3.c。#include<stdio.h>main(){intm,s,i;fbr(m=2;m>1000;m-H-){s=0;
if((m%i)=O)m=m+i;if(s=m){printf("%d是ー個完數(shù),它的因子是",m);fbr(i=l;i<m;i-H-)inm%i=O)printn"%d",i);printf("\n");2、編程題A、基礎(chǔ)題1)求l!+2!+……+n!。n由鍵盤輸入,源程序命名為a4」.c(注意結(jié)果范圍及數(shù)據(jù)類型)?!菊堅诖颂幘帉懗绦颉?)輸出1000以內(nèi)既能被5整除又能被7整除的數(shù),要求5個數(shù)一行。源程序命名為a4_2.Co【請在此處編寫程序】3)輸入兩個正整數(shù)a和b,求其最大公約數(shù)和最小公倍數(shù)。源程序命名為a4_3.c#include<stdio.h>main(){intp,r,a,b,t;printfif”請輸入兩個正整數(shù):");scanfiC,%d,%dH,&a,&b);/?/?交換a與b的值,保證a大于b*//?保存a與b的乘積到p中,后面a與b的值要發(fā)生改變ッ{t=a;a=b;b=t;}p=a*b;while(b!=0) /?該循環(huán)采用的算法稱為輾轉(zhuǎn)相除法,是由數(shù)學家推導出來的?/{r=a%b;a=b;b=r;}printf("最大公約數(shù)為:%d\n",a);printff最小公倍數(shù)為:%d\n",p/a);/?原來的a與b的乘積除以最大公約數(shù)(現(xiàn)在的a)即為最小公倍數(shù)?/|【如果不用輾轉(zhuǎn)相除法,請在下面編寫用另ー種方法求最大公約數(shù)的程序】【提示】用for循環(huán)從較小的數(shù)b開始倒推,測試b到2之間有沒有既能被a又能被b整除的數(shù),如果有,就終止循環(huán),輸出這個數(shù)(最大公約數(shù))。最小公倍數(shù)求法同前。【請在此處編寫程序】4)打印出所有的“水仙花數(shù)”。所謂“水仙花數(shù)”是指ー個3位數(shù),其各位數(shù)字的立方和等于該數(shù)本身。例如:153是一個“水仙花數(shù)”,因為153=13+53+33。源程序命名為a4_4.c?!菊堅诖颂幘帳瓿绦颉緽、選做題1)打印出以下圖案,源程序命名為b4」.c。*****【請在此***【請在此處編寫程序】2)求一元二次方程+シx+c=O的根,a、b、C由鍵盤輸入,若產(chǎn)生的方程無實根(即パ-4ac<0的情況),則反復輸入下ー組a、b、c直到構(gòu)成的新方程有實根,源程序命名為:b4_2.c.【請在此處編寫程序】3)用二分法求下面方程在(-10,10)之間的根。2x3-4x2+3x-6=0【提示】(1)取兩個不同點xl、x2,如果f(xl)和f(x2)符號相反,則(xl,x2)區(qū)間內(nèi)必有一個根(曲線與x軸的交點)。如果出xl)與f(x2)同符號,則應(yīng)改變xl、x2,直到Rxl)、f(x2)異號為止。注意xl、x2的值不應(yīng)相差太大,以保證(xl,x2)區(qū)間只有一個根。⑵xl和x2兩點之間的中點x=(xl+x2)/2,見圖4-1,再從x求出函數(shù)值Rx)。⑶若取)與f(xl洞符號,則根必在(x,x2)區(qū)間內(nèi),此時將x作為新的xl;如果f(x)與fi(x2)同符號,則表示根在(xl,x)區(qū)間內(nèi),將x作為新的x2。(4)重復步驟(2)和(3),直到|f(x)卜e為止,e為ー個很小的數(shù)。此時認為f(x)^0,x即為根。根據(jù)上述思路畫出N-S流程圖,如圖4-2所示。源程序命名為b4_3.c?!菊堅诖颂幘帉懗绦颉枯斎離l、x2,求Rxl)、f(x2)言到口xl)與1x2)異號求x=(xl+x2)/2y=f(x),yl=f(xl)ゝザ具 、11做xl=x x2=xyi=y y2=y直到|f(X)|<£輸出根X實驗5數(shù)組(一)(效組的定義和引用)ー、關(guān)鍵知識點:數(shù)組是有序數(shù)據(jù)的集合,數(shù)組中的每?個元素都屬于同一個數(shù)據(jù)類型。ー維數(shù)組的定義:類型說明符ー維數(shù)組元素的引用形式:二維數(shù)組的定義:類型說明符一?維數(shù)組元素的引用形式:數(shù)組名[常量表達式]數(shù)組名[下標]數(shù)組名[常量表達式][常量表達式]數(shù)組名[下標][下標]可類推至多維數(shù)組,是幾維數(shù)組,在數(shù)組名后就有相應(yīng)的幾對方括號。注意:數(shù)組名定名規(guī)則遵循標識符定名規(guī)則;每ー維數(shù)組元素的下標值都是從0到N-1(設(shè)該維長度為N);初始化時應(yīng)依次對相應(yīng)元素置初值;對全部數(shù)組元素賦值時可以不指定數(shù)組長度,但在對多維數(shù)組初始化時只可以省略第一維的長度值,其余各維的長度值均不得省略。二、實驗?zāi)康?掌握?維數(shù)組和二維數(shù)組的定義、初始化、賦值、數(shù)組元素的引用方法,掌握數(shù)組的輸入輸出方法,掌握與數(shù)組有關(guān)的數(shù)值計算方法,如查找、排序、矩陣、線性方程組求解等。三、實驗內(nèi)容:1、改錯題1)生成一個數(shù)列的前40項。該數(shù)列的第1、2項(對應(yīng)a數(shù)組的下標0、1)分別為2、3,以后每個數(shù)組下標奇數(shù)編號的項是前兩項之和,偶數(shù)編號的項是前兩項之差(前項減后項),要求每行輸出10個數(shù)。改正下面程序的錯誤,給源程序命名為g5_l.c。main(){inta[40]={2,3},i;fbr(i=3;i<40;i-H-)if(i%2!=0)a[i]=a[i-2]-a[i-l];elsea[i]=a[i-2]+a[i-l];fbr(i=0;i<=40;i-H-){iRi%10=0)printfTW");printfi("%5d”,a[iD;|}2)下面程序的功能是找出數(shù)組x中的最小值和次小值,并分別將其與x[〇]和xロ]進行交換。程序中的mini放當前最小值,min2放當前次小值。改正下面程序的錯誤,給源程序命名為g5_2.c?main(){intx[]={5,8,7,6,2,7,3,9,0,4);intj,t,ml=0,m2=0,minl=32767,min2=32767;fbr(j=0j<10j++)if(x[j]>minl){min2=min1;m2=m1;minl=x[j]^nl=3;)elseif(x[j]>min2){min2=x[j];m2弓;)t=x[O];x[m1]=x[O];x[m1]=t;t=x[l];x[m2]=x[l];x[m2]=t;fbr(j=00<10J++)printf「%3d”,x);}2、編程題A,基礎(chǔ)題1)下面程序用折半查找法査找key值。數(shù)組中元素值已遞增排序,若找到key,則打印對應(yīng)的下標,否則打印ー1,請將程序填寫完整。源程序命名為a5」.cmain(){intn=9,key=5;inta[]={1,2,3,45,6,7,8,9};intlow,high,mid,k; /*k為標志位,為1表示key值在數(shù)組中,為〇則不存在?/scanRRdl&key);k=O;low=0;high=n-l;【請在此處編寫程序】
2)某公司采用公用電話傳遞數(shù)據(jù),數(shù)據(jù)是四位的整數(shù),在傳遞過程中是加密的,加密規(guī)則為:每位數(shù)字都加上5,然后用除以10的余數(shù)代替該數(shù)字,再將第一位和第四位交換,第二位和第三位交換。請編程,鍵盤輸入一個四位數(shù),加密后輸出。源程序命名為a5_2.c?!菊堅诖颂幘帉懗绦颉?)下面程序的功能是將一個4X4的數(shù)組進行逆時針旋轉(zhuǎn)90度后輸出,要求原始數(shù)組的數(shù)據(jù)隨機輸入,新數(shù)組以4行4列的方式輸出,請在空白處完善程序。源程序命名為a5_3.c?main(){inta[4][4],b[4][4],ij; /*a存放原始數(shù)組數(shù)據(jù),b存放旋轉(zhuǎn)后數(shù)組數(shù)據(jù)?/printfif"input16numbers:n);【請在此處編寫程序】 /?輸入ー組數(shù)據(jù)存放到數(shù)組a中,然后旋轉(zhuǎn)存放到b數(shù)組中?/printfl^arrayb:\iT);【請在此處編寫程序】 /?輸出旋轉(zhuǎn)后b數(shù)組中內(nèi)容?/4)編程打印以下的楊輝三角形?!咎崾尽?)編程打印以下的楊輝三角形?!咎崾尽空页鲆?guī)律,通過上一行可以得到下一行的數(shù)據(jù)。【直角楊輝ー:角形編程,源程序命名為a5_41.c][等腰楊輝三角形編程,源程序命名為a5_3_2=]【提示】直角楊輝三角形輸出每行數(shù)據(jù)之前先輸出空格,每行上顯示的空格數(shù)量用小循環(huán)控制隨著行數(shù)的遞增逐漸減少,即為等腰楊輝二角形。B、選做題1)用篩選法求!00以內(nèi)的素數(shù)。算法為:用ー個ー維數(shù)組a,其初值為:2,3,4,5,…,99,100;對每一元素a[i](i=2,…,99),若a[i]不等于0,則從該元素的后ー個元素開始,凡是a[i]倍數(shù)的數(shù)組元素均不是素數(shù)(置為〇);數(shù)組a中不為〇的元素,均為素數(shù),要求每一行輸出5個素數(shù)。源程序命名為b5」.c。//include<stdio.h>//include<math.h>main(){intij,line,a[101];fdr(i=2;i<101;i++) a[i]=i; /*對數(shù)組進行初始化*/【請在此處編寫程序】2)通過鍵盤輸入3名學生4門課程的成績,分別求每個學生的平均成績和每門課程的平均成績。要求所有成績均放入ー個4行5列的數(shù)組中,其中最后一列和最后一行分別放每個學生的平均成績和每門課程的平均成績。源程序命名為b5_2.Co實驗6數(shù)組(二)(字符教組的定義和引用)ー、關(guān)鍵知識點:ー維字符型數(shù)組的定義:char 數(shù)組名[常量表達式]二維字符型數(shù)組的定義:char 數(shù)組名[常量表達式][常量表達式]C語言中沒有字符串變量,字符串只能存放在字符型數(shù)組中,ー個數(shù)組元素中放ー個字符。一個字符串可以放在ー維字符數(shù)組中,而多個字符串的處理就要用到二維字符數(shù)組。二、實驗?zāi)康模赫莆兆址麛?shù)組的定義、初始化、賦值、數(shù)組元素的引用方法,掌握對字符串進行插入刪除等處理的方法。三、實驗內(nèi)容:1、改錯題1)下面程序是判斷字符串sub是否是字符串st的子串。若是,則打印sub在st中首次出現(xiàn)的下標,否則打印」。改正下面程序的錯誤,給源程序命名為g6」.c。main(){charst[50],sub[30];inti
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025福建省建筑安全員C證考試題庫
- 南京師范大學《統(tǒng)計學專業(yè)前沿》2023-2024學年第二學期期末試卷
- 四川農(nóng)業(yè)大學《醫(yī)學論文寫作與學術(shù)誠信》2023-2024學年第二學期期末試卷
- 廣西體育高等??茖W校《地球物理學》2023-2024學年第二學期期末試卷
- 甘肅畜牧工程職業(yè)技術(shù)學院《研究型綜合》2023-2024學年第二學期期末試卷
- 哈爾濱工程大學《學前教育專業(yè)英語》2023-2024學年第二學期期末試卷
- 2024-2025學年山東省百師聯(lián)考高三上學期11月考試歷史試卷
- 上海民遠職業(yè)技術(shù)學院《服裝市場調(diào)研》2023-2024學年第二學期期末試卷
- 山西信息職業(yè)技術(shù)學院《秘書學》2023-2024學年第二學期期末試卷
- 貴州農(nóng)業(yè)職業(yè)學院《口腔探究性學習(1)》2023-2024學年第二學期期末試卷
- 術(shù)后鎮(zhèn)痛泵的使用與護理
- GB 19522-2024車輛駕駛?cè)藛T血液、呼氣酒精含量閾值與檢驗
- 2024年成都新都投資集團有限公司招聘筆試沖刺題(帶答案解析)
- 危險預(yù)知訓練表(KYT)
- 2024年湖南鐵路科技職業(yè)技術(shù)學院單招職業(yè)技能測試題庫及答案解析
- 《書籍裝幀設(shè)計》 課件 項目1 走進書籍裝幀設(shè)計
- ASTM標準全部目錄(中文版)
- 《汽車電氣設(shè)備構(gòu)造與維修》 第4版 課件 第3、4章 電源系統(tǒng)、發(fā)動機電器
- 遼海版小學美術(shù)六年級下冊全冊教案
- 2023年南京市鼓樓區(qū)建寧路街道安監(jiān)辦招聘專職安全員考試真題及答案
- 鄉(xiāng)鎮(zhèn)精神衛(wèi)生工作總結(jié)
評論
0/150
提交評論