版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第一部分C語言程序設(shè)計上機實驗指導(dǎo)實驗ーC程序開發(fā)環(huán)境ー、實驗?zāi)康呐c要求1、熟悉c程序編輯環(huán)境,掌握常用菜單的使用方法;2、掌握File菜單中的各命令使用,了解其它菜單各選項的作用。3、熟悉編寫ー個C程序并掌握上機調(diào)試過程(編輯、編譯、鏈接和運行)。二、實驗預(yù)備內(nèi)容1、熟悉TurboC2.0集成開發(fā)環(huán)境的使用TurboC是Borland公司開發(fā)的一個用于微型計算機上的C語言編譯系統(tǒng),它具有友好的用戶界面,提供了豐富的庫函數(shù),是目前流行的版本之一。TurboC是ー個集程序編輯、編譯、連接、調(diào)試及運行為一體的C程序開發(fā)軟件,為用戶提供了ー個方便的集成開發(fā)環(huán)境。程序設(shè)計人員可在TurboC環(huán)境ド進行全屏幕編輯,利用窗口功能進行編譯、連接、調(diào)試、運行、環(huán)境設(shè)置等工作。運行TurboC2.0時,只要在TC子目錄下鍵入TC并回車即可進入TurboC2.0集成開發(fā)環(huán)境。進入TurboC2.0集成開發(fā)環(huán)境中后,屏幕上顯示,如圖1-1所示:圖1-1TurboC2.0界面其中頂上一行為TurboC2.0主菜單,中間窗口為編輯區(qū),接下來是信息窗口,最底下一行為參考行。這四個部分構(gòu)成了TurboC2.0的主屏幕,以后的編程、編譯、調(diào)試以及運行都將在這個主屏幕中進行。下面詳細介紹主菜單的內(nèi)容。主菜單在TurboC2.0主屏幕頂上一行,顯示下列內(nèi)容:FileEditRunCompileProjectOptionsDebugBreak/watch除Editタト,其它各項均有子菜單,只要用Alt加上某項中第一個字母(即大寫字母),就可進入該項的子菜単中。2、掌握常用菜單的使用方法File(文件)菜單按Alt+F可進入File菜單,該菜單包括的子菜單見表!-1表1-1File菜單中的子菜單子菜單功能說明Load加載裝入一個文件,可用類似DOS的通配符(如?.C)來進行列表選擇。也可裝入其它擴展名的文件,只要給出文件名(或只給路徑)即可。該項的熱鍵為F3,即只要在主菜單中按F3即可進入該項,而不需要先進入File菜單再選此項。
Pick選擇將最近裝入編輯窗口的8個文件列成一個表讓用戶選擇,選擇后將該程序裝入編輯區(qū),并將光標置在上次修改過的地方。其熱健為Alt+F3oNew新建文件開始?個新文件,缺省文件名為NONAME.C,存盤時可改名。Save存盤將編輯區(qū)中的文件存盤,若文件名是NONAME.C時,將詢問是否更改文件名,其熱鍵為F2。Writeto存盤可由用戶給出文件名將編輯區(qū)中的文件存盤,若該文件已存在,則詢問要不要覆蓋。Directory目錄顯示目錄及目錄屮的文件,并可由用戶選擇.Changedir改變IL-A-顯示當前冃錄,用戶可以改變顯示的冃錄。OsshellDOS外殼由TurboC2.0切換到DOS提示符下,此時可以運行DOS命令,若想回到TurboC2.0中,只要在DOS狀態(tài)下鍵入EXIT即可。Quit退出退出TurboC2.0,返回到操作系統(tǒng)中,其熱鍵為Alt+X。說明:以上各項可用光標鍵移動色棒進行選擇,回車則執(zhí)行。也可用每ー項的第一個大寫字母直接選擇。若要退到主菜單或從它的下ー級菜單列表框退回均可用Esc鍵,TurboC2.0所有菜單均采用這種方法進行操作,以下不再說明。Edit(編輯)菜單按Alt+E可進入編輯菜單,若再回車,則光標出現(xiàn)在編輯窗口,此時用戶可以進行文本編輯。編輯方法基本與wordstar相同。常用編輯命令見表1-2〇表1-2常用編輯命令編輯鍵作用PageUp向前翻頁PageDn向后翻頁Home將光標移到所在行的開始End將光標移到所在行的結(jié)尾Ctrl+Y刪除光標所在的一行Ctrl+T刪除光標所在處的一個詞Ctrl+KB設(shè)置塊開始Ctrl+KK設(shè)置塊結(jié)尾Ctrl+KV塊移動Ctrl+KC塊拷貝Ctrl+KY塊刪除Ctrl+KR讀文件Ctrl+KW存文件Ctrl+KP塊文件打印Ctrl+Fl如果光標所在處為TurboC2.0庫函數(shù),則獲得有關(guān)該函數(shù)的幫助信息Ctrl+Q[查找TurboC2.0雙界符的后匹配符Ctrl+Q]査找TurboC2.0雙界符的前匹配符說明:TurboC2.0的雙界符包括以下幾種符號:花括符{) 尖括符0 圓括符()方括符U 注釋符/**/雙引號"" 單引號’TurboC2.0在編輯文件時還有一一種功能,就是能夠自動縮進,即光標定位和上一個非空字符對齊。在編輯窗口中,Ctrl+OL為自動縮進開關(guān)的控制鍵。
(3)Run(運行)菜單按Alt+R可進入Run菜單,該菜單包含的子菜單見表!-3表1-3Run菜單包含的子菜單子菜單功能說明Run運行程序運行由Project/Projectname項指定的文件名或當I前編輯區(qū)的文件。如果對上次編譯后的源代碼未做過修改,則直接運行到下ー個斷點(沒有斷點則運行到結(jié)束)。否則先進行編譯、連接后オ運行,其熱鍵為CE+F9。Programreset程序重啟中止當前的調(diào)試,釋放分給程序的空間,其熱鍵為Ctrl+F2。Gotocursor運行到光標處調(diào)試程序時使用,選擇該項可使程序運行到光標所在行。光標所在行必須為一條可執(zhí)行語句,否則提示錯誤。其熱鍵為F4。Traceinto跟蹤進入在執(zhí)行一條調(diào)用其它用戶定義的子函數(shù)時,若用Traceinto項,則執(zhí)行長條將跟蹤到該子函數(shù)內(nèi)部去執(zhí)行,其熱鍵為F7?Stepover單步執(zhí)行執(zhí)行當前函數(shù)的下一條語句,即使用戶函數(shù)調(diào)用,執(zhí)行長條也不會跟蹤進函數(shù)內(nèi)部,其熱鍵為F8。Userscreen用戶屏幕顯示程序運行時在屏幕上顯示的結(jié)果。其熱健為Alt+F5.(4)Compile(編譯)菜單按Alt+C可進入Compile菜單,該菜單包含的子菜單見表1-4。 套]4Compile菜單包含的子菜單子菜單功能說明CompiletoOBJ編譯生成目標碼將一個C源文件編譯生成.OBJ口標文件,同時顯示生成的文件名。其熱鍵為Alt+F9。MakeEXEfile生成執(zhí)行文件此命令生成一個.EXE的文件,并顯示生成的.EXE文件名.其中.EXE文件名是下面兒項之ー。a.由Project/Projectname說明的項目文件名。b.若沒有項目文件名,則由PrimaryCEle說明的源文件。C,若以上兩項都沒有文件名,則為當前窗口的文件名。LinkEXEfile連接生成執(zhí)行文件把當前.OBJ文件及庫文件連接在ー起生成.EXE文件。Buildall建立所有文件重新編譯項目里的所有文件,并進行裝配生成.EXE文件。該命令不作過時檢査(上面的幾條命令要作過時檢査,即如果目前項冃里源文件的日期和時間與目標文件相同或更早,則拒絕對源文件進行編譯)。PrimaryCfile主C文件當在該項中指定了主文件后,在以后的編譯中,如沒有項目文件名則編譯此項中規(guī)定的主C文件,如果編譯中有錯誤,則將此文件調(diào)入編輯窗口,不管冃前窗口中是不是主C文件。Getinfo獲得信息獲得有關(guān)當前路徑、源文件名、源文件字節(jié)大小、編譯中的錯誤數(shù)目、可用空間等信息。(5)Project(項目)菜單按Alt+P可進入Project菜單,該菜單包含的子菜單見表1-5。表1-5Project菜單包含的子菜單子菜單功能說明Projectname項目名項目名具有.PRJ的擴展名,其中包括將要編譯、連接的
文件名。Breakmakeon中止編譯由用戶選擇是否在有Warining(警告)、Errors(錯誤)、FatalErrors(致命錯誤)時或Link(連接)之前退出Make編譯。Autodependencies自動依賴當開關(guān)置為on,編譯時籽檢査源文件與對應(yīng)的.OBJ文件日期和時間,否則不進行檢查。Clearproject清除項目文件清除Project/Projectname中的項目文件名。Removemessages刪除信息把錯誤信息從信息窗口中清除掉。(6)Options(選擇)菜單按Alt+O可進入Options菜單,該菜單對初學(xué)者來說要謹慎使用。該菜單包含的子菜單見表1-6,表1-6Options菜單包含的子菜單子菜單功能說明Compiler編譯器本項選擇又有許多子菜單,可以讓用戶選擇硬件配置、存儲模型、調(diào)試技術(shù)、代碼優(yōu)化、對話信息控制和宏定義。Linker連接器本菜單設(shè)置有關(guān)連接的選擇項。Environment環(huán)境本菜單規(guī)定是否對某些文件自動存盤及制表鍵和屏幕大小的設(shè)置。Directories路徑規(guī)定編譯、連接所需文件的路徑。Saveoptions存儲配置保存所有選擇的編譯、連接、調(diào)試和項目到配置文件中,缺省的配置文件為TCCONFIGTC。(7)Debug(調(diào)試)菜單按Alt+D可選擇Debug菜單,該菜單主要用于查錯。子菜單略。(8)Break/watch(斷點及監(jiān)視表達式)按Alt+B可進入Break/watch菜單,該菜單包含的子菜単見表1-7,表1-7Break/watch菜單包含的子菜單子菜單功能Addwatch向監(jiān)視窗口插入ー監(jiān)視表達式。Deletewatch從監(jiān)視窗口中刪除當前的監(jiān)視表達式。Editwatch在監(jiān)視窗口中編輯ー個監(jiān)視表達式。Removeallwatches從監(jiān)視窗口中刪除所有的監(jiān)視表達式。Togglebreakpoint對光標所在的行設(shè)置或清除斷點。Clearallbreakpoints清除所有斷點。Viewnextbreakpoint將光標移動到下?個斷點處。三、實驗內(nèi)容1、進入TurboC在TC主目錄中存放了兩個可執(zhí)行文件:TC.EXE和TCC.EXE,其中TC.EXE是將編輯、編譯、鏈接、調(diào)試和運行集成為一體的基本模塊;TCC.EXE則提供了某些補充功能,例如可以在程序中嵌入?yún)R編代碼等,一般情況下只需要用到TC.EXE,由Windows平臺進入TurboC環(huán)境有下面三種方法:⑴通過“我的電腦”或“資源管理器”窗口找到TC文件夾,雙擊該文件夾中的TC.EXE文件,即可進入TurboC環(huán)境。
⑵從桌面上選擇“開始”f“程序”f“MS-DOS方式”選項,打開MS-DOS方式窗口,在該窗口中的DOS提示符后輸入以下DOS命令,進入TurboC環(huán)境。CDC:\TC<Enter> (將當前目錄改變?yōu)镃:\TC,如果TC主目錄放在其它磁盤上,將命令中的“C:”修改為相應(yīng)的盤符即可)TCvEnter>⑶如果在桌面上有TC.EXE的快捷方式,雙擊該圖標也可進入TuiboC環(huán)境。進入TurboC后可看到如圖1-1所示的TurboC編輯環(huán)境的初始屏幕。圖1-1TurboC初始屏幕在圖1-1的初始屏幕中,中間的小窗口顯示的是TurboC的版本信息,標明TurboC的版本號、生產(chǎn)日期和公司名稱。按下任一鍵時,該窗ロ就會消失,然后出現(xiàn)的就是TurboC的工作窗口。如圖1-2所示。圖1-2TurboC工作窗ロTurboC工作窗口主要分為以下幾個子窗口:⑴主菜單子窗口:位于工作窗口的頂部。主要包括8個菜單:File(文件)、Edit(編輯)、Run(運行)、Compile(編譯)、Project(項目)、Options(選項)、Debug(調(diào)試)、Break/watch(斷點/監(jiān)視),每一個主菜單還有下ー層子菜單,分別用來實現(xiàn)各種操作。⑵編輯子窗口:這是程序設(shè)計的主要區(qū)域,位于工作窗口的中部、主菜單下方,窗口正上方有“Ediビ字樣。編輯字窗口的作用是對TurboC源程序進行輸入和編輯。在編輯子窗口的上部有一行英文:Line1Col1InsertIndentTabFillUnindentC:NONAME.CLine1其中Line!和Col1表示當前光標的位置在第1行第1歹リ。當光標移動時,Line和Col后面的數(shù)字也將隨之改變,用于提示用戶當前光標所在的位置。Insert顯示時表示當前正處于插入狀態(tài),輸入的字符將插入到當前光標位置之前。如果沒有Insert,表示當前處于覆蓋狀態(tài),輸入的字符將替換當前光標處的字符。按“Insert”鍵或“Ins”鍵可在“插入”和“覆蓋”兩種狀態(tài)間切換。最右端顯示的是當前正在編輯的文件所在的磁盤和文件名,對新文件自動命名為NONAME.Co如果是ー個已經(jīng)存在的文件或新文件已經(jīng)存盤,則在該位置上顯示的不再是NONAME.C,而是該文件的名字。⑶信息子窗口:位于編輯子窗口下面,用于顯示編譯和鏈接時的有關(guān)信息,如錯誤提示信息。窗口正上方有“Message”字樣。⑷功能健提示行:位于屏幕最下方,用于顯示ー些功能鍵的作用。包括:①Fl-Help(幫助):任何時候按F1都會顯示幫助信息。②F5-Zoom(分區(qū)控制):如果當前在編輯窗口工作,也就是說編輯窗口處于激活狀態(tài),按F5鍵將關(guān)閉信息窗口(Message窗口),它的作用是擴大編輯窗口,以便容納和顯示較長的源程序;若再按一次F5鍵,就會重新顯示信息窗口。也就是說,反復(fù)不斷按F5鍵,將會使編輯窗口在原始大小和最大狀態(tài)卜切換。如果當前信息窗口是激活的,按F5鍵就不顯示編輯窗口,它的作用是擴大信息窗口,以便能顯示較多的信息,便于用戶查看。若再按一次F5鍵,信息窗ロ就會恢復(fù)原來大小。③F6-Switch(轉(zhuǎn)換):按F6鍵就激活信息窗口,此時信息窗口的標題Message以高亮顯示,編輯窗口不能工作;再按一次F6鍵,又將激活編輯窗口,此時可以在編輯窗口中編輯源程序。④F7-Trace(跟蹤):用于單步跟蹤程序的運行情況,每按一次F7鍵將執(zhí)行一條語句。⑤F8-Step(步進):用于單步執(zhí)行程序,每按一次F8鍵將執(zhí)行一條語句。⑥F9-Make(生成目標文件):進行編譯和鏈接,并生成.OBJ文件和.EXE文件,但不能運行程序。⑦FlO-Menu(菜單):打開主菜單,默認激活第一個菜單File(此時File以反相顯示),然后按回車鍵將打開File菜單。2、熟悉TurboC程序運行過程操作小提示:TurboC菜單命令的選擇有兩種方法:方法一:按功能鍵F10鍵,將光標移至主菜單名稱上(默認為File主菜單),然后可以通過左、右光標鍵來移動主菜單選項,最后敲入Enter鍵,拉下該主菜單?;蛘咴诰庉嫚顟B(tài)下直接按下“Alt鍵+菜單名稱中的第一個字母鍵”也可以拉下該項主菜単。拉下主菜單后,接著進入其下ー層菜單的選擇過程,此時可用上、下光標鍵將光標移至某個菜單命令上,然后敲入Enter鍵執(zhí)行菜單命令。方法二:對于常用功能,系統(tǒng)在菜單命令后面提示有快捷功能鍵,因此可直接在編輯狀態(tài)下按下功能鍵執(zhí)行菜単命令,如F2鍵為保存程序的命令,F9鍵為編譯程序的命令,Ctrl鍵+F9鍵為運行程序的命令,F(xiàn)5鍵為切換到用戶屏幕查看執(zhí)行結(jié)果的命令。(1)編輯ー個新文件如果要輸入和編輯一個新的C程序,需要先打開File菜單,選擇其中的New選項(簡記為FilelNew),然后按回車鍵,編輯窗口的內(nèi)容將會被清空,光標定位在編輯窗口的左上角(Linel,Col1),進入了編輯狀態(tài)。然后就可以將已經(jīng)編寫好的源程序輸入到編輯窗口,如發(fā)現(xiàn)錯誤可隨時修改。編輯過程中會用到前面介紹的編輯命令。如:Insert或Ins鍵用于切換輸入的字符處于’‘插入”或“覆蓋”狀態(tài),Delete或Del鍵用于刪除光標處的字符,Backspace用于刪除光標之前的字符,Ctrl+Y用于光標所在的行等。(2)保存一個新文件輸入程序的過程中,為防止斷電后程序丟失,應(yīng)及時將源程序保存起來,方法是:打開File菜單并選擇Save選項或直接按快捷鍵F2,TC就會彈出“RenameNONAME”對話框,如圖1.3所示,要求用戶指定保存位置和文件名。圖1-3RenameNONAME對話框在該對話框中,默認保存在用戶的工作目錄內(nèi),文件名為NONAME.C。如果是從Windows目錄調(diào)用TC.EXE進入TurboC環(huán)境的,則Windows目錄就是當前工作目錄,在圖1.3的對話框中將顯示為“D:\TC\NONAME.C"。也就是說,如果不特別指定,源程序?qū)⒆詣颖4嬖谟脩舻磨ㄗ髂夸泝?nèi)。默認的文件名是NONAME.C,“.C”是TC源程序文件的默認擴展名。一般情況下,用戶不希望以NONAME.C作為文件名,它不僅不便于辨別,而且每次都用NONAME.C作文件名,第一次保存文件的內(nèi)容就會被第二次保存的文件的內(nèi)容取代。當然,文件最好不保存在工作目錄內(nèi),而指定另外的路徑保存,如"D:\MYTC\TEX1.C"。如果不指定路徑而只輸入文件名,則文件將保存在當前盤當前目錄內(nèi)(一?般為工作目錄)。指定文件名保存了文件后,編輯窗口左上角的文件名就自動改為剛オ輸入的文件名了,如TEX1.C,表示當前正在編輯的文件已不再是NONAME.C了,而是TEX1.C,如圖1.4所示。圖1-4保存后的名為TEXLC的文件編輯窗口在編輯過程中可以隨時將修改過的源程序存盤,同樣是選擇FilelSave選項或者直接按F2,但不再彈出對話框,而是立即將源程序以上次指定的名字存盤。(3)打開一個已存在的文件如果要編輯一個已經(jīng)存在的文件,就需要把它從磁盤中調(diào)出來。方法是:打開File菜單,選擇Load,或直接按快捷鍵F3,彈出如圖1.5所示的“LoadFileName”對話框,要求用戶輸入裝入文件的路徑和文件名。
圖1-5打開文件的初始窗U輸入文件路徑和文件名后,按回車鍵,該文件就被調(diào)入內(nèi)存,并顯示在編輯窗口中。如圖1.6所示為打開上面建立的D:\MYTC\TEX1.C文件。圖!-6打開TEX1.C文件的輸入如果輸入的文件不存在,則屏幕上將顯示一片空白,表示文件無內(nèi)容,這相當于在指定位置建立了一個有名字的新文件,屏幕右上角將顯示新文件名。如果記不清裝輸入的源文件名,例如可以輸入“D:\MYTC\*.C",TurboC就會顯示指定目錄中所有擴展名為C的文件名,如圖1.7所示。然后利用光標移動鍵(一一tI)將亮條移到需要裝入的文件名處,按回車鍵。圖卜7顯示指定目錄下的所有C源程序編輯后可對文件存盤,如果不改變文件名,選擇File/Save或直接按F2即可。如果要以另ー個文件名存盤,則打開File菜單后,選擇Writeto選項,按回車鍵后彈出ー個“NewName”對話框,如圖1.8,輸入新文件的路徑及文件名(如TEX2.C)后按回車鍵,文件就會以新名存盤(原來的文件仍存在),編輯窗口左上角顯示的文件名也將自動改為7EX2.C。圖1-8NewName對話框需要注意的是,如果在“NewName”對話框中未指定路徑,TEX2.C將保存在用戶工作目錄下面。如需保存在其它位置,必須指定路徑。(4)編譯、鏈接及運行編輯好源程序并存盤后,應(yīng)當對源程序進行編譯、鏈接和運行。在TC集成環(huán)境下,對程序的編譯、鏈接和運行是很方便的。既可像傳統(tǒng)方法那樣把編譯、鏈接和運行分為三步完成;也可以把編譯和鏈接合為ー步,然后再運行;還可把三者合為ー步完成。TC既可以對單個模塊文件進行編譯、鏈接和運行;也可以對多個模塊文件進行以上處理。下面以處理單模塊文件為例舉例說明。例:設(shè)有一求兩整數(shù)最大數(shù)的程序為(文件名為SUM.C):#include<stdio.h>intmax(intx,inty);voidmain(){inta,b,c;scanf("%d%d",&a,&b);c=max(a,b);printf("max=%d\n",c);)intmax(intx,inty){intz;if(x>y)elsez=y;retum(z);)為了處理對它進行編譯、鏈接和運行,可采用下述三種方法之一。第一種方法:分別編譯、鏈接①編譯按下Alt+C鍵打開Compile菜單,選擇CompiletoOBJ選項,如圖1.9,此時系統(tǒng)顯示出默認的目標文件名,主文件名與當前編譯的源程序主文件名相同,擴展名為.OBJ,按回車鍵后就可進行編譯,并在當前工作目錄或OptionsIDirectories指定的OUTPUT目錄中產(chǎn)生目標文件SUM.OBJ,1CompiletoOBJC:SUM.OBJMakeEXEfileLinkEXEfileBuildallPrimaryCfile:GetinfoC:SUM.EXEileProjectOptionsDebu圖1-9Compile菜單②鏈接有了目標文件后,還不能直接運行,還要將目標文件與系統(tǒng)提供的庫函數(shù)和包含文件等鏈接成一個可執(zhí)行文件(擴展名為.EXE)。選擇Compile菜單中的LinkEXEfile選項,按回車鍵后就可進行鏈接,在當前工作目錄或OptionsIDirectories指定的OUTPUT目錄中產(chǎn)生可執(zhí)行文件SUM.EXE。需要注意的是,必須先進行編譯,得到.OBJ文件后才能進行鏈接,否則會出錯。③運行如果在TC環(huán)境下運行,可打開Run菜単后選擇Run選項或直接按快捷鍵Ctrl+F9,即可運行程序。運行完畢后可選擇RunlUserScreen或按Alt+F5打開用戶屏幕,查看運行結(jié)果。如果在DOSド運行,可返回DOS后,在DOS提示符后鍵入主文件名(如C:\TC\SUM<Enter>)即可運行。第二種方法:編譯、鏈接ー步法在圖1-9的Compile菜単中選擇MakeEXEfile選項,按回車鍵,就可一次完成編譯和鏈接,在當前工作目錄或OptionsIDirectories指定的OUTPUT目錄中生成一個目標文件SUM.OBJ和一個可執(zhí)行文件SUM.EXE。運行方法同上。第三種方法:編譯、鏈接、運行一步法這是ー種最簡單的方法。按Ctrl+F9鍵后,TurboC即按照編譯、鏈接的順序生成目標文件和可執(zhí)行文件,然后運行。3、簡單編程練習(1)輸入下面的程序,檢查錯誤,并對其進行編譯、鏈接和運行。#include<stdio.h>voidmian(){printf("ThisisaCprogram.\n');)(2)理解下面程序功能,并運行程序,輸入兩個操作數(shù)(注意輸入函數(shù)的格式),觀察程序運行結(jié)果。intsum(intx,inty)(intz;z=x+y;retum(z);)main()inta,b,c;scanf(H%d,%dn,&a,&b);c=sum(a,b);printf(,'sum=%d\n",c);)(3)編寫ー個程序,輸入一個天數(shù),求這個天數(shù)包含幾周零幾天。算法提示:①利用除法算術(shù)運算符“/"(整除運算,即商的整數(shù)部分)和“%”(取余除運算,即商的余數(shù)部分)。②本題的輸入數(shù)據(jù)有一個,輸出數(shù)據(jù)有兩個,因此需要定義3個變量來保存這些數(shù)據(jù),并且都應(yīng)定義為整數(shù)類型。(4)編寫一個程序,輸出以下圖形:$$$$$$$$$$算法提示:本題是反復(fù)利用輸出函數(shù)printf()來實現(xiàn)這些符號的輸出的。要注意的是printf()函數(shù)ー次可以輸出多個數(shù)據(jù)或字符。(5)編寫一個程序,輸出以下圖形:MMMMMMMMMMMMMMMMMM(6)參照上面的第3題,在程序中編寫一個函數(shù),用于計算兩個整數(shù)的積。實驗二、順序結(jié)構(gòu)程序設(shè)計ー、實驗?zāi)康囊?、熟悉c語言基本數(shù)據(jù)類型、變量、常量、運算符、表達式2、掌握整型、字符型、實型變量的使用3、掌握兒種常用運算符的運算規(guī)則4、掌握數(shù)據(jù)的輸入輸出方法,能正確使用各種格式類型轉(zhuǎn)換符5、掌握順序結(jié)構(gòu)程序設(shè)計思想二、實驗預(yù)備內(nèi)容1、C語言的基本數(shù)據(jù)類型,見表2-1。表2-LC語言的基本數(shù)據(jù)類型“類型,類型表雕「長度(位)?取值范圍和精度"字符型?[恭n線]でぬ38バ-128???+127バ通威?char。8バ0B??255戶整型”[甌段31-short[int]J⑹-32768?32767dsiflgnesl-short[int]^1⑹〇??65535ハ險由領(lǐng)}long[int]〇32バ-2147483648?+2147483647。就磔威longlint]。32/〇?4294967295バ實型「鹹Q32レ約士(3.4XI0ー"?3.4X10"),,6位精度,7位有效數(shù)字e499^64レ約士(1.7X10加?:L.lXld**),一16位精度,17位有效數(shù)字。2、各種常量的表示方式;整型常量十進制整型常量:一2、12、0ハ進制整型常量:03、012、076十六進制整型常量:0xa3、0x12、Oxffff實型常量-12.3、2e-3、3.45字符常量普通字符:‘a(chǎn)‘、’1‘、’A’轉(zhuǎn)義字符:見表2-2
表2-2-轉(zhuǎn)義字符?,字符形式,功,?一能バヽ換行?\W橫向跳格(即跳到下一個輸出區(qū))?\V。豎向跳格?退格”\"回車バ\(zhòng)0走紙繪更「ヽい底無字符“ヽ”~V"單引號(撤號)字符Q\dd必1到3位8進制數(shù)所代表的字符“\xhhバ1到2位16雌酶代表的字符。字符串常量“123"ヽ"abed"ヽ”howareyou!”ヽ“”3,各種數(shù)據(jù)類型變量的定義方式:charchi,ch2='a';inta,b=3;longm,n;floatfl,f2,f3:doubledl,d2=6.8:4、各運算符的功能、優(yōu)先級以及結(jié)合規(guī)則;除號運算符(ハ的運用:5/4與5.0/4的區(qū)別;自加(自減)運算符的運用:a=i++與a=++i的區(qū)別5、printf()函數(shù)的使用以及格式控制字符的運用;printf〇函數(shù)的格式:printf("格式控制",輸出表列)格式控制字符的使用,見表2-3。表2-3??printf函數(shù)中的格式控制字符b格式字符。含義。%d(或%i)。輸出帯符號的十進制整數(shù)。%(或/X)/輸出無符號十六進制整數(shù)(不輸出前導(dǎo)符Ox)。%〇バ輸出無符號八進制整數(shù)(不輸出前導(dǎo)符〇)。%城輸出無符號十進制整數(shù)“%出輸出十進制實數(shù)(隱含輸出6位小數(shù)?%e(或%E)。以指數(shù)形式輸出實數(shù)(隱含輸出6位小數(shù))。%貳或%G)。自動選用%f或%e格式中輸出寬度較短的ー種格式輸出實數(shù),不輸出無意義的〇。爾輸出單個字符。5$輸出字符串a(chǎn)%”輸出“。6、scanfO函數(shù)的使用以及格式控制字符的運用;scanf()函數(shù)的格式:scanf("格式控制",地址表列);格式控制字符的使用,見表2-4。表2-4-scanf函數(shù)中的格式控制字符2格式字符ハ含 義2%d(或%/用來輸入十進制整數(shù),%式或%X)2用來輸入無符號十六進制整數(shù)(大小寫作用相同)?%〇。用來輸入無符號八進制整數(shù)Q用來輸入無符號十進制整數(shù)Q%e,Z邑。ハも%G用來輸入實數(shù),可以用小數(shù)形式或指數(shù)形式輸入(作用相同?用來輸入單個字符?*用來輸入字符串,并將字符串送到ー個字符數(shù)組中?輸入時以非空白字符開始,以第一個空白字符結(jié)束,并在最后加一個W作為結(jié)束標志「7、getcharO函數(shù)和putchar。函數(shù)的使用:8、不同類型數(shù)據(jù)之間的轉(zhuǎn)換規(guī)則和方法。隱式轉(zhuǎn)換:算術(shù)轉(zhuǎn)換、賦值轉(zhuǎn)換、輸出轉(zhuǎn)換顯式轉(zhuǎn)換:強制類型運算符三、實驗內(nèi)容1、分析程序,并上機驗證運行結(jié)果。(1)分析自加自減運算main(){inti,j,m,n;i=8;j=10;m=++i;n=j++;Printf(“%d,%d,%d,%d",i,j,m,n);)分別作以下改動并運行:①將第4行改為:m-i++;n=++j;②程序改為main(){inti,j;i=8:j=10:printf(u%d%d”,i++,j++);)③在②的基礎(chǔ)上。將printf語句改為:printf(“%d%d”,++i,++j);④再將printf語句改為:printf(w%d,%d,%d,%dw,i,j,i++,j++);注意:此句的運算順序是先運算出i++(10,然后使i=ll),j++(12,然后使j=13)⑤程序改為:main(){inti,j,m=0,n=0;i=8;j=10;m+=i++;n-=-j;printf(wi=%d,j=%d,m=%d,n=%dw,i,j,m,n);)分析如下問題:①前綴自加(自減)和后綴自加(自減)在表達式中的實現(xiàn);②前綴自加(自減)和后綴自加(自減)在printf()函數(shù)中的實現(xiàn);③在printf。函數(shù)中出現(xiàn)多個自加或自減表達式時,其計算次序如何;(2)分析逗號運算①^include<stdio.h>main()(inta=4,b=7;printf(<<%d\nn,(a=a+l,b+a,b+1);}②^include<stdio.h>main(){inta=l,b=2;printf(w%d,\n",a=a+l,a+b,b+1);)分析如下問題:①逗號運算的實現(xiàn);②逗號運算符與賦值運算符的優(yōu)先級別。(3)分析關(guān)系運算和邏輯運算①^include<stdio.h>main(){inttrue,false;true=4>3;false=4<=3;printf("true二%d,false二%d\n",true,false);分析:在c語言中,真和假各用什么來表示?②^include<stdio.h>main(){inta,b,c=2;a二4>c〉l;b=c<4&&c>l;printf("a二%d,b二%d\n",a,b);)分析:表達式“4>c>l”與表達式"c<4&&c>lw的區(qū)別。③^include<stdio.h>main(){inta,b,c=2;a=!c>3;b=!(c>3);printf("a二%d,b二%d\n",a,b);1分析:運算符的優(yōu)先級別。(4)ttinclude<stdio.h>main(){inta,b,c=2,d=2;a二D3&&C++く2;b=K3&&d++<2;printf("a二%d,b二%d,c二%d,d二%d\n”,a,b);:?分析:對于“&&”運算,若其左邊第一個表達式的值為假,整個表達式的值為0,并且其后面的表達式不予計算;同樣,對于“〃”運算,若其左邊第一個表達式的值為真,整個表達式的值為1,并且其后面的表達式不予計算。⑤ttinclude<stdio.h>main(){inta,b,c=4;a二?4;b=c==4printf(aa=%d,b=%d\nw,a,b);分析:注意賦值運算符“『和關(guān)系運算符“二ゴ的區(qū)別。(6)ttinclude<stdio.h>#include<math.h>main(){floata,b;a=l.0/3*3==l.0;b=fabs(l.0/3*3-l)<l.Oe-6;printf("a=%d,b=%d\nw,a,b);)分析:實數(shù)表達式在判定時應(yīng)該注意什么,如何轉(zhuǎn)化?(4)分析混合類型運算的結(jié)果①^include<stdio.h>main(){intm=7,n二4;floata二38.4,b二6.4,x;x=m/2+n*a/b+l/2;printf("%f\n",x);)②將上程序第5行改為:x二m/2.0+n*a/b+L0/2;其結(jié)果為多少?分析如下問題:①混合運算中最終結(jié)果的類型是什么?②1.0/2和1/2有什么區(qū)別?printf。函數(shù)的使用①^include<stdio.h>main(){inta,b,suml,sum2,sum3,sum4;a=8;b=4;suml=a+b;sum2=a-b;sum3=a*b;sum4=a/b;printf("%d%d%d%d\n”,suml,sum2,sum3,sum4);)②將上程序中第10行改為:printf(a%d\t%d\t%d\t%d\n,>,suml,sum2,sum3,sum4);③再改為:printf(a%d\n%d\n%d\n%d\nn,suml,sum2,sum3,sum4);@再改為:printf("%d,%d,%d,%d\nJ,,suml,sum2,sum3,sum4);⑤再改為:printf(asuml=%d,sum2=%d,sum3=%d,sum4=%d\n,>,suml,sum2,sum3,sum4);⑥再改為:printf(asuml=%d+%d=%d, sum2=%d-%d=%d , sum3=%d*%d=%dsum4=%d/%d二%d\n”,a,b,suml,a,b,sum2,a,b,sum3,a,b,sum4);分析如下問題:①在printf()函數(shù)中普通字符的作用?②在printf()函數(shù)中轉(zhuǎn)義字符如ヘビ、,\if的作用?③如何靈活運用printf。函數(shù)中的格式控制字符串來增強結(jié)果的可讀性以及美觀?printf〇函數(shù)中格式轉(zhuǎn)換符的使用#include<stdio.h>main(){inta,b;floatd,e;CharC1,C2;doublef,g;longm,n;unsignedintp,q;a=61;b=62;cl='a';c2='b';d=3.56;e二一6.87;f=3157.890121;g=0.123456789;m=50000;n=-60000;p=32768;q=40000;printf("a二%d,b=%d\ncl=%c,c2=%c\nd=%6.2f,e=%6.2f\n",a,b,cl,c2,d,e);printf("f二%15.6f,g=%15.12f\nm=%ld,\n%ld\np=%u,q=%u\nw,f,g,m,n,p,q);)在此基礎(chǔ)上,做以下改動:①將程序第8-13行改為a=61;b=62;Cl=a;C2=b;f=3157.890121;g=0.123456789;d=f;e=g;p=a=m=50000;q二b二n二一60000;運行程序,分析結(jié)果。②在①的基礎(chǔ)上將printfO語句改為:printf("a=%d,b=%d\ncl=%c,c2=%c\nd=%15.6f,e=%15.12f\n”,a,b,cl,c2,d,e);printf(wf=%f,g=%f\nm=%d\np=%d,q=%d\n”,f,g,m,n,p,q);運行程序。③將P,q改用%。格式符輸出。④將f,g改為刎或%Id的方式輸出。分析如下問題:①各格式控制字符與輸出量之間的對應(yīng)關(guān)系?②哪些類型的數(shù)據(jù)之間可以實現(xiàn)輸出轉(zhuǎn)換,實現(xiàn)轉(zhuǎn)換時,輸出結(jié)果有沒有變化?③哪些類型的數(shù)據(jù)之間完全不可以實現(xiàn)輸出轉(zhuǎn)換?scanf()函數(shù)的使用①^include<stdio.h>mainO{inta,b,sum;charch;floatf;scanf(<*%d%d),,&a,&b)sum=a+b;printf(wsum=%d\nM,sum);)分析:如何輸入數(shù)據(jù)?②將第5行改為:scanf(“刎,紀”,&a,&b);分析:如何輸入數(shù)據(jù)?③再改為:scanf("a=%d,b或d",&a,&b);分析:如何輸入數(shù)據(jù)?④再改為:scanf(,,%d%c%d%fM,&a,&ch,&b,&f);分析:如何輸入數(shù)據(jù)?分析目的:如何在輸入時靈活運用各種分隔符達到分隔數(shù)據(jù)的作用。同時要注意輸入多個數(shù)據(jù)時所使用的分隔符一定要和scanf()函數(shù)中格式控制字符串中的規(guī)定一致,否則會出錯。⑤再改為:scanf(“%d\n%d",&a,&b);分析:運行情況如何?⑥再改為:scanf("刎、t%d”,&a,&b);分析:運行情況如何?⑦再改為:scanf(u%d%dw,a,b);分析:運行情況如何?分析目的:scanf()函數(shù)使用不當,經(jīng)常會導(dǎo)致程序運行結(jié)果出錯。上述三種輸入在編譯時均不會提示錯誤,但運行結(jié)果出錯,這種錯誤很隱蔽,初學(xué)者尤其要注意,并要多嘗試scanf()函數(shù)的各種使用情況,積累scanf()函數(shù)的使用經(jīng)驗。提示:為了方便數(shù)據(jù)的輸入,可在scanf()函數(shù)前面加些printf()函數(shù),以便在輸入時可提醒自己應(yīng)該用什么作分隔符以及應(yīng)該輸入幾個數(shù)據(jù)。如上程序可改為:#include<stdio.h>main(){inta,b,sum;charch;floatf;printf(^Pleaseinputa,b:w);scanf("%d,%d”,&a,&b)sum=a+b;printf("sum二%d\n”,sum);}getchar。函數(shù)和putchar。函數(shù)的使用#include<stdio.h>main(){charchi,ch2,ch3;chl=getchar();ch2=getchar();ch3=getchar();putchar(chi);putchar(ch2);putchar(ch3);)分析:①若輸入:boy/,運行結(jié)果為多少?②若輸入:b〇y/,運行結(jié)果為多少?③若輸入:b/oZy/,運行結(jié)果為多少?由上面的運行結(jié)果分析在使用getchar()函數(shù)時,在輸入字符時應(yīng)注意什么?2、程序改錯#include<math>main(){longd;doublex;Scanf("%dM,d);x=l/2*SIN(d*pi/180.0);printf("x二%f\n”,x);)#include<stdio.h>main(){doubleF,c;Scanf("%f”,F(xiàn));c=5/9(F-32);printf('F=%2.2f\n',F,'c=%2.2\n',C);)#include<stdio.h>#definePRICE=30main(){intx=5;PRICE=PRICE*x;printf(“%d%d",x,PRICE);}3、程序填空對兩個數(shù)進行對調(diào)。(1)使用中間變量實現(xiàn)兩數(shù)的對調(diào)#include<stdio.h>main(){inta,b,temp;scanf("%d,%d",&a,&b);printf("a=%d,b=%d\n”,a,b);temp=① ;a=②;b=③ ;printf("a=%d,b=%d\nM,a,b);)(2)不使用中間變量實現(xiàn)兩數(shù)的對調(diào)#include<stdio.h>main(){inta,b;scanf(“%d,%d”,&a,&b);printf("a=%d,b=%d\nn,a,b);a=① ;b=② ;a=③ ;printf(wa=%d,b=%d\n”,a,b);4、編程(1)編寫程序,從鍵盤輸入一個大寫字符,將它轉(zhuǎn)換為對應(yīng)的小寫字母后輸出。算法提示:根據(jù)大小寫字母的ASCII碼值相差32來進行轉(zhuǎn)換。(2)編寫程序,輸入圓半徑r,求圓周長、圓面積、圓球表面積、圓球體積。要求:為加強界面的友好,輸入數(shù)據(jù)與輸出結(jié)果都應(yīng)有相應(yīng)的提示信息。且輸出數(shù)據(jù)取小數(shù)點后兩位數(shù)字顯示。(3)有三個電阻rl、r2、r3并聯(lián),編寫程序計算并輸出并聯(lián)后的電阻r。已知電阻并聯(lián)公式為:(4)編寫程序,輸入三角形的三條邊,計算并輸出三角形的面積。(注意輸入的三條邊必須要能構(gòu)成一個三角形)求三角形的面枳公式為:area=y]s[s- -b\s-c)其中s=(a+b+c)/2o算法提示:本題需要用到求平方根的數(shù)學(xué)函數(shù)sqrt(),應(yīng)在文件開始部分寫下如下文件包含預(yù)處理命令:#include<math.h>實驗三、選擇結(jié)構(gòu)程序設(shè)計ー、實驗?zāi)康呐c要求1、掌握關(guān)系運算和邏輯運算2、理解邏輯值的表示方法3、熟練掌握if語句和switch語句的使用4、掌握選擇結(jié)構(gòu)程序設(shè)計思想二、實驗預(yù)備知識1、關(guān)系運算a》b、bWc、x=yヽxWz、xキy和xtz這幾種數(shù)學(xué)關(guān)系式子如何在C程序中表示?C程序中,關(guān)系表達式的值是多少,如5>3、1>3、3>=3分別值為多少?C程序中關(guān)系運算符的優(yōu)先級是怎樣的,如1+1>3、1+3>3、1==1〉〇、1+3<2+4、5>4>2這幾種表達式運算后值是多少?2、邏輯運算(1)如何表示數(shù)學(xué)關(guān)系a》bNc、a>b并且x>y、x>0或者y<l等?C程序中,邏輯表達式的值是多少,如3>1&&1>0、3>1||0>1?3、if語句的三種形式及if語句嵌套(1)三種形式的執(zhí)行流程①單分支選擇if語句一般形式為:if(表達式) 語句圖3-1單分支選擇結(jié)構(gòu)流程圖②雙分支選擇if語句一般形式為:if(表達式)語句1else語句2圖3-2雙分支選擇結(jié)構(gòu)流程圖③多分支選擇if語句一般形式為:if俵達式1)語句1elseif(表達式2)語句2elseif(表達式3)語句3elseif(表達式n)語句nelse語句n+1圖3-3多分支選擇結(jié)構(gòu)流程圖(2)嵌套if語句中else與if配對規(guī)則C語言規(guī)定,else總是與它前面最近的if配對(被花括號“什”括起來的除外)。if語句執(zhí)行部分使用復(fù)合語句的方法當需要在if語句的語句1、語句2…語句n等處執(zhí)行多條語句時,可以利用“{『’將它們括起來組成一條復(fù)合語句。4、switch語句其一般形式為:switch(表達式){case常量表達式1:語句1case常量表達式2:語句2case常量表達式n:語句ndefault :語句n+1)switch語句的執(zhí)行規(guī)則及執(zhí)行流程先計算表達式的值;再分別與case后的常量表達式1、常量表達式2、…、常量表達式n的值相比較,當表達式的值與某個常量表達式i(i=l,2,…,n)的值相等時,即執(zhí)行其后的語句i,此后不再進行表達式與常量表達式之間值的比較判斷,繼續(xù)執(zhí)行后面所有的語句。如果表達式的值與所有的常量表達式的值均不相同時,則執(zhí)行default后的語句n+10switch語句形成多分支選擇結(jié)構(gòu)的方法switch(表達式){case常量表達式1:語句1break;case常量表達式2:語句2break;case常量表達式n:語句nbreak;default :語句n+1)其執(zhí)行流程:先計算表達式的值:再分別與case后的常量表達式1、常量表達式2、…、常量表達式n的值相比較,當表達式的值與某個常量表達式i(i=l,2,…,n)的值相等時,即執(zhí)行其后的語句i,繼續(xù)執(zhí)行后面的語句(break),則終止執(zhí)行后面的語句,跳出switch整個語句。如果表達式的值與所有的常量表達式的值均不相同時,則執(zhí)行default后的語句n+1。switch語句中case部分的使用方法case與其后的常量表達式必須用空格分隔,常量表達式與其后的第一個語句之間用冒號“:”分隔;case后面可以有多條語句,并且可以不用"{『'括起來;case后面也可以沒有語句,多個case共用ー組執(zhí)行語句:各個case和default的出現(xiàn)次序可以隨意變動。三、實驗內(nèi)容1、程序閱讀分析main(){inta,b,x;scanf("a=%d,b=%d,x=%d”,&a,&b,&x);if(a>l&&b==0)x=x/a;if(a==2||x>l)x=x+l;printf("a二%d,b=%d,x=%d\nw,a,b,x);)分別使用下列各組數(shù)據(jù)執(zhí)行該程序,分析其執(zhí)行流程,其執(zhí)行結(jié)果分別是多少:a二1,b=l,x二1a=l,b=l,x=2a=3,b二〇,x=la=2,b=l,x=4a二2,b二1,x二1a=l,b=0,x=2a二2,b二1,x二1a=3,b二〇,x=2分析總結(jié):①用哪ー組數(shù)據(jù)可使程序中的每個處理語句都執(zhí)行一次?為了找出程序中各條處理語句中的錯誤,應(yīng)該使用什么樣的數(shù)據(jù)對程序進行測試?②用哪兩組數(shù)據(jù)可以使程序段中的每個分支都運行一次?這種情形與(1)有何不同?如果為了找出程序中積壓分支中的錯誤,應(yīng)該使用什么樣的數(shù)據(jù)對程序進行測試?③用哪兩組數(shù)據(jù)可以把程序中的每個條件運算都進行一次?如果為了測試出判定條件中的錯誤,應(yīng)使用哪些數(shù)據(jù)對程序進行測試?④用哪四組數(shù)據(jù)オ可以把各種條件的組合都檢測?遍?如果為了測試各種條件的組合的情形,應(yīng)該使用什么樣的測試數(shù)據(jù)?⑤用哪四組數(shù)據(jù)オ可以把起始到終止的各條路徑都覆蓋一次?如果為了測試出程序在不同路徑下的錯誤,應(yīng)該使用什么樣的測試數(shù)據(jù)?#include<stdio.h>main(){floatx,y;printf(winputdatax:w);scanf(“%f",&x);if(x<l)y=x;elseif(x>=l&&x<=10)y=2*xT;elsey=3*xTl;printf("y二%6.2f”,y);}分別輸入小于1、1、大于1且小于10、10、大于10的數(shù),(1)分析其執(zhí)行流程,每個數(shù)經(jīng)歷了幾次判斷。(2)指出else與哪個if配對main(){inta,b,c,x=10;scanf("%d,%d,%d”,&a,&b,&c);if(a++>l&&b++>0&&++c>4)x=x+a+b+c;printf("%d,%d,%d,%d\nw,x,a,b,c);}分別輸入下列各組數(shù)據(jù),分析其執(zhí)行流程,其執(zhí)行結(jié)果分別是多少:1,0,42,0,42,1,4如果將if中判斷表達式a++>l&&b++>0&&++c>4換成表達式a++>l||b++>0&&++c>4,分別輸入下列各組數(shù)據(jù),其運行過程又是怎樣的:1,0,31,0,42,0,41,1,4(4)分析程序執(zhí)行過程及執(zhí)行結(jié)果①main(){inti=10;switch(i){case9:i+=l;case10:i+=l;case11:i+=1;default:i+=l;}printf("%d\n",i);)②main(){inta=l,b=0;switch(a){case1:switch(b){case〇:printf("**0**");break;printf(zz**l**z/);break;}printf("**2*?〃);break;))③#include"stdio.h"main(){intx,y,z;scanf("%d,%d,%d",&x,&y,&z);switch(x){case0:switch(y==0){case1:printf("*");break;case0:printf("+);break;}switch(z){case1:printf("$");break;printf("*");break;default:printf("#");)default:printf("!!!、ペ);))運行時分別輸入0,2,3和3,2,0觀察其結(jié)果(5)分析程序執(zhí)行過程及執(zhí)行結(jié)果①main(){intx=0,y=2,z-2;if(x=y-z)printf("yes\n");elseprintf("no\n");)②main(){inta=5,b=3,c=l;if(a>b>c)printf("yes\n");elseprintf(ano\nw);)2、程序改錯(1)輸入三個數(shù),找出其中最大的數(shù)并輸出main(){intx,y,z;scanf("%d,%d,%d",&a,&b,&c);/********found********/if(a>b>c)printf(a%d\nw,a);/********f()und********/if(b>a>c)printf("d\n”,b);/********found********/if(c>a>b)printf(“紀、n”,c);}(2)輸入ー個整數(shù),輸出其對應(yīng)的星期幾main(){intday;scanf("%d”,&day);switch(day){/********found********/case?:printf("Sunday'n");break;/********found********/case6:printf("Saturday\n,J);break;/********found********/case5:printf("Friday'n");break;/********found********/case4:printf("Thursday\n");break;/********found********/case3:printf("Wednesday'n");break;/********found********/case2:printf("Tuesday\nw);break;/********found********/easel:printf("Monday'n");break;})(3)輸入3個數(shù),按從小到大輸出main(){intx,y,z,t;scanf("%d,%d,%d”,&x,&y,&z);/********founcl********/if(x>y)t=x;x=y;y=t;/********fourid********/if(x>z)t=x;x=z;z=t;/********founcl********/if(y>z)t=y;y=z;z=t;printf(afromsmalltobig:%d%d%dw,x,y,z);}(4)輸入一個成績,要求輸出成績等級’A‘、は‘、"C‘、?‘、笛’。90分以上為“',80、89分為‘B',70,9分為‘C',60~69分為‘D',60分以下為‘E'。main()(floatscore;chargrade;scanf(4<%f",&score);switch(score/10){/********fc)und********/case10,9:grade='A';break;case8:grade='B';break;case7:grade='C;break;case5+1:grade='D';break;/********found********/case>=0:grade='E';)printf(4<%5.If,%c.\n",score,grade);}(5)編程計算f2x+l 3<x<5y=Ix+10 其他main(){floatx,y;scanf(u%f",&x);/********found********/if(x>3)if(x<5)y=2*x+l;elsey=x+10;/********found********/printf(“y二%f",y);3、程序填空(1)圖3-4為某廣場的平面圖,四個圓為廣場中的四個圓柱,半徑為1,高度為10米,其余為平地,高度為。米?,F(xiàn)從鍵盤輸入x,y坐標值,給出該坐標處建筑物的高度。圖3-4廣場平面圖main(){inth=0;scanf〈 ,&x,&y);if((x-2)*(x-2)+(y-2)*(y-2)<l)h=10;if()h=10;if()h=10;if()h=10;printf("觀",h);(2)輸入一個年份,判斷該年是否為閏年main(){intyear,flag=O;scanf(,&year);if(year%4==0)if()flag=l;if()flag=l;if()printf("%disaleap.\nw,year);elseprintf(u%disnotaleap.\nff,year);(3)輸入一個字符,判斷其是字母字符、數(shù)字字符還是其他字符main(){charch;scanf("%c",&ch);if()printf("Itisaalpheticcharacter!\n");elseprintf("Itisadigitalcharacter!\nw);elseprintf("Itistheothercharacter!\nw);)(4)運輸公司對用戶計算運費。距離(s)越遠,每公里運費越低。具體標準如下:s<250(km)沒有折扣250<=s<500(km)2%折扣500<=s<1000(km)5%折扣1000<=s<2000(km)8%折扣2000<=s<3000(km)10%折扣3000<=s(km)15%折扣ー設(shè)每公里每噸貨物的基本運費為P,貨物重為w,距離為s,折扣為d?則總運費計算公式為:-f=p*w*s*(l-d)①main()(intd,c;floatp,w,s;d=0;scanf("%f,%f,%kn,&p,&w,&s);if(s>=3000) c=12;else;switch(c){case12:;case11:case10:case9:case8:d+=2;case7:case6:case5:case4:;case3:case2:d+=3;case1:d+=2;case0:)f=p*w*s*(l-d/100.0);printf("freight=%15.4fw,f);②main()intd,c;floatp,w,s;d二〇;scanf(w%f,%f,%kw,&p,&w,&s);if(s>=3000) c=12;else;switch(c){case0:d=0;break;case1:d=2;break;:d=5;break;case4:case5:case6:case>7:d=8;break;case8:case9:case10:case11:d=10;break;case12:;)f=p*w*s*(l-d/100.0);printf("freight=%15.4f”,f);4、編程題(1)從鍵盤輸入三個數(shù),代表三條線段的長度,編寫ー個判斷由這三條線段所組成的三角形屬于什么類型(不等邊,等腰,等邊或不構(gòu)成三角形)的C程序,并設(shè)計各種數(shù)據(jù),測試程序。(2)輸出四個整數(shù),要求按從大到小順序輸出。(3)給ー個不多余5位的正整數(shù),要求:(1)求出它是幾位數(shù);(2)分別打印出每一位數(shù)字;(3)按逆序打印出各位數(shù)字,例如原數(shù)為321,應(yīng)輸出123。(4)編寫程序,求解下列分段函數(shù):x(-10<x<0)y;x-1 (x=0)ゝx+1(0<x<10)5 其他(5)輸入2個數(shù)和1個運算符號('+‘、‘一‘、‘*’、'/'),對輸入的數(shù)按照輸入的運算符進行運算,輸出計算結(jié)果(6)編寫程序,加密數(shù)據(jù)。方法:對給定數(shù)值,每一位數(shù)字均加2,且在[0,9]范圍內(nèi),若加密后某位數(shù)字大于9,則取其被!0除的余數(shù)。如:6987加密后為8109。實驗四、循環(huán)結(jié)構(gòu)程序設(shè)計ー、實驗?zāi)康囊?、熟悉while語句、do-while語句和for語句的使用方法2、理解循環(huán)結(jié)構(gòu)程序段中語句的執(zhí)行過程3、掌握在程序設(shè)計中用循環(huán)的方法實現(xiàn)各種算法(如窮舉、迭代、遞推等)4、學(xué)會TurboC程序跟蹤調(diào)試技術(shù)5、掌握循環(huán)結(jié)構(gòu)程序設(shè)計思想二、實驗預(yù)備知識1、while語句、do-while語句和for語句三種循環(huán)語句的執(zhí)行流程(1)while語句一般形式:while(表達式)do語句while(表達式);圖42dowhile循環(huán)語句執(zhí)行過程(3)for語句ー般形式是:for(表達式1;表達式2;表達式3)語句圖4-3for語句執(zhí)行過程2、while語句和do-while語句的異同do-while循環(huán)語句總是先執(zhí)行ー次循環(huán)體,然后判斷表達式,因此,無論表達式是否為“真”,循環(huán)體至少執(zhí)行ー次。而while循環(huán)語句總是先判斷循環(huán)條件再執(zhí)行循環(huán)體,循環(huán)體可能一次也不執(zhí)行。當?shù)谝淮窝h(huán)條件為“真”時,do-while循環(huán)語句和while循環(huán)語句執(zhí)行結(jié)果相同;如果第一次循環(huán)條件為“假”,則不同。3、for語句中表達式省略執(zhí)行規(guī)則(Dfor語句中的表達式1,表達式2,表達式3都可以省略,甚至三個表達式都可以同時省略,但“ゴ’?個也不能省略。①如果省略表達式1,此時,應(yīng)在for語句前給循環(huán)變量賦初值。②如果省略表達式2,此時認為表達式2始終為“真”,不再判斷循環(huán)條件,循環(huán)語句將無終止地進行。如果要保證程序正常結(jié)束,需要在循環(huán)體語句部分增加退出循環(huán)的機制。③如果省略表達式3,即不在此位置進行修改循環(huán)變量的值,為保證程序正常運行,應(yīng)在其它位置修改循環(huán)變量的值。(2)表達式1可以是設(shè)置循環(huán)變量初值的表達式,也可以是與循環(huán)變量無關(guān)的其它表達式;表達式1、表達式3可以是簡單表達式,也可以是逗號表達式。(3)表達式2一般為關(guān)系表達式或邏輯表達式,也可以是數(shù)值表達式或字符表達式,只要其值非零,就執(zhí)行循環(huán)體。4、循環(huán)嵌套語句的執(zhí)行流程循環(huán)嵌套即在一個循環(huán)語句的循環(huán)體語句部分又包含有另ー個完整的循環(huán)語句。我們把當前循環(huán)稱為外層循環(huán),循環(huán)體內(nèi)循環(huán)稱為內(nèi)層循環(huán)。整個循環(huán)嵌套語句的執(zhí)行流程為:當外層循環(huán)執(zhí)行一次循環(huán)體時,內(nèi)層循環(huán)將要執(zhí)行完整個循環(huán)語句。即內(nèi)層循環(huán)要從表達式1初始值開始執(zhí)行,直到內(nèi)層循環(huán)的表達式2不成立,內(nèi)層循環(huán)才執(zhí)行結(jié)束。5、break語句和continue語句的執(zhí)行方法(1)通常break語句總是與if語句聯(lián)在ー起,即滿足條件時便跳出循環(huán)。但注意;①break語句不是跳出if-else語句,而是跳出循環(huán)語句或switch語句。②在多層循環(huán)中,break語句只能向外跳出ー層,而不能跳出整個嵌套循環(huán)。(2)continue語句是結(jié)束本次循環(huán),即跳過本層循環(huán)體中后面尚未執(zhí)行的語句,接著再一次進行循環(huán)條件的判斷。6、實數(shù)相等判斷問題,如有定義floata;要進行變量a等于0。由于實數(shù)為非精確數(shù),要表示a等于。的意思,-一般通過近似值形式表示;只要a的絕対值在0000001以內(nèi)可以認為a是等于〇,1E-6即1X10:三、實驗內(nèi)容1、程序閱讀分析(1)分析下列程序的執(zhí)行過程,給出執(zhí)行結(jié)果①main(){intk=l;while(kく=20)if(++k%4!=2)continue;elseprintf("%d,”,k);printf('\n");)②main(){intn=4;while(n-)printfC/%dニーn);)③main(){intx=3;do{printf("%d",x-=2);)while(!(一一x));}④main(){inti;for(i=l;iく6;i++){if(i%2)printf("*");elsecontinue;printf("&");})⑤main(){inta,b;for(a二0,b二10;a<b;a+=2)b=b-l;printf("a二%d,b=%d\n*,a,b);)?main(){inti=0,j=0,k=0,m;for(m=0;m<4;m++)switch(m){caseO:i-m++;case1:j=m++;case2:k=m++;case3:m++;printf(*%d,%d,%d,%d\n*,i,j,k,m);}(2)輸入一個數(shù)n,計算1〇?n之和①#include<stdio.h>main()(inti=10,sum=O,n;scanf("%d",&n);while(i<=n){sum=sum+i;i++;)printf("%d\n",sum);}②main()(inti=10,sum二〇,n;scanf("%d",&n);do(sum=sum+i;i++;)while(i<=n)printf("%d\n,sum);)分別輸入小于10、10和大于10的數(shù),觀察2個程序的結(jié)果,分析它們的異同(3)分析下列for語句的執(zhí)行過程①main(){intxl=10,x2=5,x3=5,x4=5;intx=0,y=0,z=0;for(;xl>x2;++x2)x++;while(xl>++x3)y++;doz++;while(xl>x4++);printf("x=%d,y=%d,z=%d\n",x,y,z);)②main(){inti,j;for(i=0,j=10;i<j;i+=2,j—);printf("%d,%d\n/z,i,j);}③main(){chari,j;for(i=‘0',j二’9';i<j;i++,j—)printf(*%c%c*,i,j);printf('\n");)(4)分析下列嵌套循環(huán)的執(zhí)行過程①main(){inti,j;floats;for(i=7;i>4;i—){s=0;for(j=i;j>3;j)s=s+i*j;}printf("%f\n",s);}②#include"math,h”main(){intm,i,k,h=0,1eap=1;printf("\n");for(m=!01;m<=200;m++){k=sqrt(m+1);while(i<=k){if(m%i==0){leap=0;break;}i++;}if(leap){printf("%-4d",m);h++;if(h%10==0)printf("\n");}leap=l;)printf("\nThetotalis%d",h);③main。{inti,j,k;printf("\n");for(i=l;iく5;i++) /?以下為三重循環(huán)?/for(j=l;j<5;j++)for(k=1;kく5;k++)if(i!=k&&i!=j&&j!=k) /?確保i、j、k三位互不相同?/printf("%d,%d,%d\n,z,i,j,k);}I2、程序改錯(1)編程實現(xiàn)1+2+…+100main(){intsum=0,i=l;/********founcl********/whilei<=100/********f()und********/sum=sum+i;i++;/********found********/printf(“紀、n",sum)}(2)計算如下公式的值y=l/100*100+l/(200*200)+1/(300*300)+-+1/(m*m)main(){intm,i;doubley二0,t;clrscr();scanf("%dw,&m);/********found********/for(i=100,iく=m;i+二100){t=(double)i*(double)i;y+=1.0/t;}/********found********/printf("%lf\n”,y);)(3)輸入整數(shù)n,計算如下公式的值 y=l+l/2*2+l/3*3+l/4*4+…+l/n*nmain(){intn,i;doubley=1.0;clrscr();scanf("%dw,&n);/********found********/for(i=2;i<n;i++)y+=l/(i*i);/********found********/printf("Theresultis%lf\nw,y);(4)輸入2個正整數(shù),求出它們的最大公約數(shù)main(){inta,b,r,
溫馨提示
- 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年度新能源充電樁建設(shè)合同范本3篇
- 2025年度足浴行業(yè)承包經(jīng)營合同范本下載4篇
- 2025年車輛過戶轉(zhuǎn)讓及售后服務(wù)保障合同4篇
- 2025年中國觸摸一體機行業(yè)市場深度研究及投資戰(zhàn)略規(guī)劃報告
- 二零二五版運輸許可代辦服務(wù)收費標準協(xié)議2篇
- 2025年中國船用止裂鋼板市場深度分析及投資戰(zhàn)略咨詢報告
- 2025年中國醋酐市場發(fā)展現(xiàn)狀調(diào)研及投資趨勢前景分析報告
- 2025年度財務(wù)信息保密正規(guī)范本:財務(wù)信息解除保密協(xié)議3篇
- 2025版家政保潔服務(wù)及家務(wù)處理合同2篇
- 2025年中國負壓救護車市場供需現(xiàn)狀及投資戰(zhàn)略研究報告
- GB/T 45107-2024表土剝離及其再利用技術(shù)要求
- 2024-2025學(xué)年八年級上學(xué)期1月期末物理試題(含答案)
- 商場電氣設(shè)備維護勞務(wù)合同
- 2023年國家公務(wù)員錄用考試《行測》真題(行政執(zhí)法)及答案解析
- 2024智慧醫(yī)療數(shù)據(jù)字典標準值域代碼
- 年產(chǎn)12萬噸裝配式智能鋼結(jié)構(gòu)項目可行性研究報告模板-立項備案
- 【獨家揭秘】2024年企業(yè)微信年費全解析:9大行業(yè)收費標準一覽
- 醫(yī)療器械經(jīng)銷商會議
- 《±1100kV特高壓直流換流變壓器使用技術(shù)條件》
- 《風電場項目經(jīng)濟評價規(guī)范》(NB-T 31085-2016)
- 五年級上冊脫式計算100題及答案
評論
0/150
提交評論