版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
前言本指導書是針對數(shù)學類專業(yè)和非數(shù)學類專業(yè)學生的需要提供的C語言上機指導教材。前面十個實驗涉及的是C語言的基礎內(nèi)容,要求學生必須熟練掌握。后面十個綜合性實驗能提高學生對較復雜問題的分析及程序設計能力。另外每個實驗后面都有習題,主要目的是進ー步鞏固所學的知識。在本指導教材的第三、四部分給出了turboC的常用函數(shù)表和錯誤信息表,目的是方便學生編程并查閱所需要函數(shù)并盡快找出錯誤的根源。實驗內(nèi)容中有的給出了參考程序(主要是前面幾個實驗),更多的需要學生自己編寫程序,所以要求學生必須在每次實驗前認真預習本次實驗內(nèi)容,編寫好程序方能參加實驗。編者2011.2.
第一部分TurboC集成編譯環(huán)境4頁第二部分C語言實驗實驗ー熟悉C語言運行環(huán)境(預備實驗)17頁實驗ニ數(shù)據(jù)描述與基本操作2I頁實驗三程序分支26頁實驗四循環(huán)控制實驗五數(shù)組的使用實驗六函數(shù)的使用實驗七指針(一)實驗ハ指針(二)實驗九指針(二)實驗十結(jié)構(gòu)體與共同體實驗H一位運算實驗十二文件實驗綜合十三綜合實驗十四統(tǒng)計學生成績綜合實驗十五求矩陣鞍點綜合實驗十六文件應用綜合實驗十七分類與索引綜合實驗十八對分法求非線性方程的根綜合實驗十九求解雅瑟夫問題綜合實驗二十求皇后問題第三部分常用函數(shù)表第四部分錯誤信息第一部分TurboC集成編譯環(huán)境TurboC集成編譯環(huán)境是ー個集程序編輯、編譯、連接、調(diào)試為一體的C程序開發(fā)軟件,它具有速度快、效率高、功能強、使用方便等優(yōu)點。用戶在這個集成環(huán)境下,可以利用內(nèi)部的編輯器進行全屏幕編輯,利用窗口功能進行編譯、連接、調(diào)試、運行、環(huán)境設置等エ作。如果你的計算機系統(tǒng)已經(jīng)安裝了TurboC編譯系統(tǒng),則在DOS命令狀態(tài)下鍵入命令TCTCfilename其中filename是用戶需要進行編輯、編譯、連接、運行的C程序的文件名。在前者情況下,該文件名可以在進入集成環(huán)境后再指定。如果TurboC編譯系統(tǒng)不是安裝在當前目錄下,而是安裝在別的目錄下,并且該目錄路徑?jīng)]有打通,則應在TC前面加上“路徑”,以指出TurboC編譯系統(tǒng)所在的位置。但軍種情況一般是很少出現(xiàn)的。這是因為,DOS系統(tǒng)啟動時要執(zhí)行一個自動批處理文件AUTOEXEC-BAT,在該文件中一般都包含有常用外部命令文件(TC也屬于外部命令)所在的目錄路徑打通的命令,因此,DOS系統(tǒng)啟動后,在任何目錄下都可以很方便地使用外部命令,即在外部命令前不必再加上該外部命令文件所在的目錄路徑。進入TurboC集成環(huán)境后,首先在屏幕上顯示TurboC主菜單窗口,如圖3.1所示。FileEditRunCompileProjectOptionsDebugBreak/Watch圖1由圖1可以看出,在該菜單下,有八個菜單條目,即提供了ハ種選擇。每ー個條目的意義如下:File處理文件(包括裝入、存盤、選擇、建立、換名寫盤),目錄操作(包括列表、改變工作目錄),退出系統(tǒng)及調(diào)用DOS。Edit建立、編輯源文件Run 控制運行程序。如果程序已經(jīng)編輯連接好,且Debug/SourceDebugging以及Option/Compiler/Codegeneration/OBJDebugInformation開關置為ON,則可以用此菜初始化調(diào)試階段。Compile 編譯并生成目標程序與可執(zhí)行文件。Project 允許說明程序中包含哪些文件的管理條目(Project)。Options可以選擇集成環(huán)境任選項(如存儲模式、編譯時的任選項、診斷及連接任選項)及定義宏;也可以記錄Include、Output及Library文件目錄,保存編譯任選項和從配置文件加載任選。Debug檢查、改變變量的值,查找函數(shù)程序運行時查看調(diào)用棧。選擇程序編譯時是否在執(zhí)行行代碼中插入插入調(diào)試試信息。Break/Watch增加、刪除、編輯監(jiān)視表達式,及設置、清除、執(zhí)行至斷點。特別要指出的是,除了EDIT項外,每ー個菜單項以對應ー個子菜單。而選擇EDIT項目后,只是進入編輯器。為了從主菜單中選擇所需要的功能,可以用以下兩種方式之一:(1)按F10鍵后,可以年到屏幕上部主菜單中的某個條目處出現(xiàn)亮塊,此時,利用左、右光標移動鍵(一與一)將此亮塊移到所要選擇的條目位置處,然后按回車(ENTER)鍵,即出現(xiàn)相應的子菜單。(2)直接按ALT+主菜單條目中的首字母(分別為F,E,R,C,P,〇,D,B)此時就會出現(xiàn)相應的子菜單。例如,按AUT+F表示選擇文件子菜單(FILE)〇當出現(xiàn)子菜單時,其中某個條目是高亮度的,此時可以利用上、下光標移動鍵(t與I)來移動該高亮度線,從而選擇所需要的功能。在主菜單或通過主菜單調(diào)用的任意ー個子菜單中,按ESC鍵后將直接返回到活動窗口。下面簡要介紹各子菜單的功能。.文件子菜單(FILE)當選中FILE子菜單后,在‘'FILE”下方將出現(xiàn)ー個子窗口,如圖3.2所示。在邊個子窗口中,有的條目右邊還標出了實現(xiàn)該功能的熱鍵。所謂“熱鍵”,是指為執(zhí)行菜單中某ー固定功能而設置的鍵。通過熱鍵來實現(xiàn)某種功能,一般要比通過菜單選擇更簡單直接,但要求用戶熟記這些熱鍵。例如,為了選擇“文件了菜單(FILE)”,除了通過主菜單選擇以外,還可以直接用熱鍵AじT+F來選擇。FileEdit RunCompileProjectLoadF3PickAlt+F3NewSaveF2WritetoDirectoryChangedirOSShellQuitAlt+X下面簡要說明各項的功能:Load(加載)裝入一個文件。當給定的文件名中有文件名通配符(?或?)時,將進行列表選擇。Pick(選擇)將最近裝入進編輯窗口的8個文件列成表,供用戶選擇,選擇后又裝入編輯器,光標置在上次修改過的地方。若選了“…LOADFILE…”,屏幕上將出現(xiàn)“LOADFILENAME"提示框。New(新文件)說明文件是新的,裝入編輯器的缺省文件名為NONAME。CoSave(存盤)將編輯器中的內(nèi)容存盤。若文件名為NONAME。C,而又要存盤,編輯器會詢問是否要改名。Writeto(存盤)把編輯器中的內(nèi)容寫入指定的文件中。若該文件已經(jīng)存在,則導致重寫。Directory顯示目錄與所需文件列表(右按回車鍵則選擇當前上當)。熱鍵F4改變匹配符,選擇文件名后,將該文件裝入編輯器。Changedir(改變驅(qū)動器)顯示當前上當,改變構(gòu)驅(qū)動器與目錄。OSShell(暫時退出)暫時退出TurboC,轉(zhuǎn)至リDOS狀態(tài),在DOS狀態(tài)下用EXIT命令又可返回TurboC。此功能對于在想運行DOS命令但又不想退出TurboC時非常有用。Quit(退出)退出TurboC,返回到DOS狀態(tài)。.編輯命令(EDIT)調(diào)用內(nèi)部編輯器。在編輯器中按F10可返回主菜單(或用AじT加所需主菜單命令的
首字母),但此時編輯器中的內(nèi)容仍保持在屏幕上。在主菜單中按ESC或E鍵即可回到編輯器(按ALT+E也可,且在任何時候都起作用)。.運行子菜單(RUN)當選中RUN子菜單后,在“RUN”下方將出現(xiàn)ー個子窗口,如圖3所示,其中也列出了對應的熱鍵。EditRunCompileProjectOptionsRunCtrl+F9ProgramresetCtrl+F2GotocursorF4TraceintoF7StepoverF8UserscreenAlt+F5圖3下面簡要說明各項的功能:Run(運行)運行當前程序。Programreset(程序重啟動)中止當前調(diào)試,釋放分配給程序的空間,關閉已打開的文件Gotocursor(執(zhí)行到)使程序從執(zhí)行長條運行到編輯窗口中光標所在行。若光標所在行不含可執(zhí)行代碼語句,則顯示ー"ESC框作警告。Traceinto(跟蹤進入)運行當前函數(shù)中的下ー個語句。若此語句不含調(diào)試器可訪問的函數(shù)調(diào)用,則停在下一條可執(zhí)行語句上;但若此語句含有調(diào)試器可訪問的函數(shù)調(diào)用,則停在函數(shù)定義的開始。Stepover(單步執(zhí)行)執(zhí)行當前函數(shù)的下ー語句,即使遇到調(diào)試語句可訪問的函數(shù)調(diào)用也不會跟蹤進入下ー級函數(shù)中。Userscreen(用戶屏幕)切換到用戶屏幕。4、編譯子菜單(Compile)當選中Compile子菜單后,在"Compile”下方將出現(xiàn)ー個子窗口,如圖4所示。RunCompileProjectOptionDebugCompiletoOBJC:NONNAME.OBJMakeEXEfileC:NONNAME.EXELinkEXEfileBuildallPrimaryCfileGetinfo圖4下面簡要說明各項的功能:compiletoobj(編譯生成目標碼)本命令將一個.C源文件編譯成.OBJ文件,同時顯示生成的文件名。.OBJ文件由源.C文件名產(chǎn)生;或在沒有指定文件名時,由上次裝入編輯器的文件名產(chǎn)生。TurboC在編譯時彈出ー個窗口,用于顯示編譯結(jié)果。在編譯/組裝(MAKE)完后,按任ー鍵將清除編譯窗口。此時若發(fā)現(xiàn)有錯誤,則轉(zhuǎn)到消息窗口的的第一個錯誤處(有亮度標志)。本命令的熱鍵為ALT+F9oMakeEXEfile(生成執(zhí)行文件)本命令調(diào)用來生成.EXE文件,并顯示所生成的.EXE文件名。.EXE文件名是依次由下列文件名產(chǎn)生的:Project/ProjectName說明的文件名;或ProjectCFile說明的文件名;或上次裝入窗口的文件名。本命令的熱鍵為F9。linkEXEfile(連接執(zhí)行文件)把當前文件與庫文件(既可以是缺省的,也可以是定義在當前項目文件中的)連接在一起,生成EXE文件BuiltAll(建立所有文件)重建項目中的所有文件。本命令類似Compile/makeEXEFile,只是它是無條件執(zhí)行的,而Compile/makeEXEFile只重建那些非過時的文件。本命令首先將所有的Project文件中的.obj的日期與時間置為0,然后再組裝(make)。這樣,若用戶因Ctrl+Break鍵中斷了BuildAl!命令,只要用Compile/makeEXEFile即可恢復。PrimaryCfile(主C文件)當編譯多個.H頭文件單個.C文件時,PrimaryCFile命令是很有用的(但并非必要的)。若在編譯過程中發(fā)現(xiàn)錯誤,包含錯誤的文件(.C或.H)將被自動裝入編輯器,可對其修改。但必須注意’.H文件只有在已將。ption/Environment/MessageTracking缺省設置改為AllFile時才能自動裝入,而原缺省設置不會自動加載.H文件。即使.C文件不在編輯器,但只要一按Alt+F9,.C主文件即被重新編譯。GetInfo(獲得信息)Compile/GetInfo開辟ー窗口,給出如下信息:源文件;與當前文件相聯(lián)系的目標文件名;當前源文件名;當前源文件字節(jié)數(shù);程序退出碼;可用空間。Project子菜單當選中Project子菜單后,在“Projecい下方將出現(xiàn)ー個子窗口,如圖5所示。CompileProjectOptionsDebugBreak/WatchProjectnameBreakmakeon errorsAutodependencies offClearprojectRemovemessagesGetinfo圖5下面簡要說明各項功能:(l)Projectname選擇ー個包含將要編譯連接的文件名的Project文件,項目名也將是以后要建立的。EXE或MAP文件名。典型的項目文件具有.PRJ擴展名。(2)Breakmakeon提供用戶說明中止make的缺省條件,如警告(Warnings)>錯誤(Errors)、致命錯誤(FatalError)〇(3)Autodependencies(自動依賴)這是ー個開關。當置On為時,項目組裝(Project.Make)自動檢查每個項目表中在磁盤上有相應C文件的那些.OBJ文件的源文件的日期/時間信息與.OBJ文件的依賴關系。所謂自動依賴關系檢查,是指:項目組裝打開.OBJ文件,尋找包含在源代碼的那些文件的有關信息。這種信息總是在編譯源模塊時即被TC或TCC放進.OBJ文件了。此時,把每個組成.OBJ文件的日期/時間信息與?OBJ中的進行比較,若不同,則重新編譯.C源文件。若Autodependencies開關置為off,則不進行這種檢查。Clearproject(清除project)改命令清除項目文件名,重置消息窗口(MessageWindow)。Removemessage(刪除信息)該命令把錯誤信息從消息窗口中清除掉。6.Option子菜單當選中Option子菜單后,在“Option”下方將出現(xiàn)ー個子窗口,如圖6所示。ProjectOptionDebugBreak/WatchCompileLinkEnvironmentDirectoriesArgumentsSaveoptionsRetrieveoption圖6下面簡要說明各項的功能:(1)Compile(編譯器)本命令將產(chǎn)生一個子菜單,為用戶提供說明硬件配置、存儲模式、調(diào)試技術(shù)、代碼優(yōu)化、診斷消息控制以及宏定義等。各菜單條目如下:Model(選擇存儲模型)Define(打開一個宏定義框)Codegeneration(代碼生成)Optimization(優(yōu)化用戶代碼)Source(處理源代碼)Errors(處理和響應診斷信息)Names(改變代碼、數(shù)據(jù)等)其中每一個條目又對應ー個子菜單,供用戶選擇各種功能。詳細介紹請參看TurboC的用戶手冊。(2)Linker(連接器)本命令將產(chǎn)生有關連接器的設置。它包括以下內(nèi)容:Mapfile(選擇映射文件的類型On/Off,缺升值為Off)Initializesegments(段初始化On/Off,缺升值為Off)Defaultlibraries(缺省庫On/Off,缺升值為On)Graphicslibrary(圖形庫On/Off,缺升值為On)Warnduplicatesymbals(警告重復字符On/Off,缺升值為On)Stackwarning(堆棧警告On/Off,缺升值為On)Case-sensitivelink(大小寫區(qū)別連接On/Off,缺升值為On)(3)Environment(環(huán)境設置)本命令將產(chǎn)生編譯環(huán)境的設置。它包括以下內(nèi)容:Messagetracking(消息跟蹤CurrentFile/AllFiles/Off,缺升值為CurrentFile)Keepingmessage(保存消息Yes/No,缺升值為No)Configautosave(配置自動保存On/Off,缺升值為On)Editautosave(編輯自動保存On/Off,缺升值為Off)Backupfiles(備份文件On/Off,缺升值為On)Tabsize(制表健大小,缺升值為8)Zoomedwindow(放大窗口On/Off,缺升值為Off)Screensize(選擇屏幕顯示行數(shù))(4)Directories(目錄)本命令告訴TurboC到那里去尋找編譯連接所需的文件,生成的可執(zhí)行文件放到何處,在哪里查找配置文件。具體內(nèi)容如下:Includedirectories(包含目錄):C:\TURBOC\INCLUDE;C:\TURBOC\INLibrarydirectories(庫目錄):C:\TURBOC\LIBOutputdirectory(輸出目錄):TurboCdirectory(TurboC目錄)Pickfilename(pick文件名)Currentpickfile(當前pick文件)Argument(參數(shù))本設置允許用戶給出運行程序命令行。Saveoption(保存任意項)將選擇的編輯器、連接器環(huán)境、調(diào)試和project任選項保存到ー個配置文件中(缺省文件名為TCCONFIG.TC)。啟動時,TurboC再到TURBOC目錄中去尋找同樣的文件。Retrieveoption(恢復任選項)加載以前用Option/Saveoptions命令保存的配置文件。Debug子菜單當選中Debug子菜單后,在“Debug”下方將出現(xiàn)ー個子窗口,如圖7所示OptionsDebugBreak/WatchEvaluate Ctrl+FlCallstack Ctrl+F3FindfunctionRefreshdisplayDisplayswappingsmartSourcedebuggingon圖7下面簡要說明各項功能:Evaluate(計算)計算變量或表達式值,并顯示其結(jié)果。Callstack(調(diào)用棧)本命令顯示ー個調(diào)用棧的彈出窗口。調(diào)用棧顯示程序運行到正在運行的函數(shù)時調(diào)用的函數(shù)序列。其中主函數(shù)main在棧底,正在運行的函數(shù)在棧頂。調(diào)用函數(shù)的每ー項顯示了函數(shù)名義擊穿第給它的參數(shù)值。FindFunction(查找函數(shù)定義)顯示編輯窗口每ー函數(shù)的定義。只有在調(diào)試階段才能使用本命令。Rfreshdisplay(刷新顯示器)萬一編輯屏幕被重寫,使用本命令可以恢復當前屏幕的內(nèi)容。Displayswapping(顯示轉(zhuǎn)換)本命令提供三種選擇:On(缺?。lways和None。Soursedebugging(源代碼調(diào)試)本命令提供三種選擇On(缺?。tandalone和None〇Break/Watch子菜單當選中Break/Watch子菜單后,在"Break/Watch”下方將出現(xiàn)ー個子窗口,如圖3.8所示。使用本命令可以控制斷點和監(jiān)視表達式。下面簡要說明各項的功能:Addwatch(增加監(jiān)視表達式)向監(jiān)視窗口插入ー個監(jiān)視表達式。DebugBreak/WatchAddwatchCtrl+F7DeletewatchEditwatchRemoveallwatchsTogglebreakpointCtrl+F8ClearallbreakpointViewnextbreakpoint圖8Deletewatch(冊!!除監(jiān)視表達式)從監(jiān)視窗口中刪除當前監(jiān)視表達式。Editwatch(編輯監(jiān)視表達式)選擇本命令后,調(diào)試器彈出ー個含有當前監(jiān)視表達式拷貝的窗口。Removeallwatch(刪除所有監(jiān)視表達式)將所有監(jiān)視表達式從監(jiān)視窗口中刪除。Togglebreakpoint(打開或關閉斷點)設置或除去去光標所在斷點。Clearallbreakpoint(清除所有斷點)從程序中刪除所有斷點。Viewnextbreakpoint(顯示下ー個斷點)將光標移到程序中的下ー個斷點。第二部分C語言實驗在學習c語言程序設計的過程中,上機實驗是十分重要的環(huán)節(jié),通過實驗,可以加深對c語言功能特征、語法規(guī)則、程序編譯與運行等基本概念和基本方法的理解和運用。通過上機調(diào)試程序,使學生能及時發(fā)現(xiàn)程序編制中出現(xiàn)的錯誤并找到修改正方法,提高學生的獨立編程能力和編程技巧,為c語言在后續(xù)課程中的應用打下堅實的基礎。實驗報告要求!每次實驗前,認真預習本次實驗內(nèi)容,按實驗指導書的要求,需編寫的程序,應書寫整齊,經(jīng)檢查無誤后方能上機。2上機輸入和調(diào)試程序,調(diào)試通過后,打印出程序清單并把運行結(jié)果記錄下來(在條件允許下)。3上機結(jié)束后,按照實驗指導書的具體要求,整理出實驗報告(字跡エ整),下次上機交給指導教師。4實驗報告應包括以下內(nèi)容:(1)實驗題目;(3)算法說明(復雜的可用流程圖表示);(4)程序清單(有條件用打印機打印出來);(5)運行結(jié)果;(6)對運行情況作分析,以及本次實驗所取得的經(jīng)驗。如程序未能通過,應分析錯誤原因。在實驗內(nèi)容里有“*”的部分為選做題,有時間或有能力的學生可做這部分。云南大學數(shù)學與統(tǒng)計學實驗教學中心
實驗報告課程名稱:程序設計和算法語言學期:2016學年上學期成績:指導教師:趙越學生姓名:劉淵學生學號:20151910012實驗名稱:簡單程序設計調(diào)試實驗編號:一實驗日期:3月13日實驗學時:2學院:數(shù)學與統(tǒng)計學院專業(yè):數(shù)學與應用數(shù)學年級:2015級ー、實驗目的.熟悉TC或BorlandC++的運行環(huán)境。.了解在TC或BorlandC++上如何編輯、編譯、連接和運行一個C程序。.熟練使用各種C語言的數(shù)據(jù)類型、運算符與表達式。.熟練掌握格式輸入與格式輸出函數(shù)的使用。.通過運行簡單的C程序,初步了解C源程序的特點,初步掌握查錯和排錯的技能..學會TurboC2.0的安裝方法(參看本書第一部分),熟悉C語言程序的運行環(huán)境,了解所用計算機系統(tǒng)軟、硬配置。.初步了解在該集成環(huán)境下如何編輯、編譯、連接和運行一個C程序,即運行ー個C程序的全過程。.通過運行簡單的C程序,初步了解C程序的基本結(jié)構(gòu)及特性。二、實驗內(nèi)容實驗內(nèi)容和步驟1從開機開始進行操作,熟悉ー些常用的DOS命令,包括如何建立子目錄,文件拷貝,刪除文件等。2建立自己的子目錄,以備存放文件。3進入TurboC集成環(huán)境,熟悉TurboC主菜單下各選擇項的功能及功能鍵的使用。4輸入ー簡單C程序(可用教科書上的例題),了解C程序運行的全過程。5編寫用printf語句將3個字符串:goodmorning,floppydisk,harddisk在同一行顯示的程序。程序例mainO{printf(''goodmorning");/?顯示不換行?/printf(''floppydisk");printf(''harddisk\n");J6運行結(jié)果:goodmorningfloppydiskharddisk7把上面的程序改為每行顯示一個字串,應如何修改程序,并運行之。8編寫ー程序,用鍵盤輸入語句輸入三個數(shù),然后分別求它們的和、積及求余?!旧蠙C實習指導】1.通過以下程序來掌握上機操作的全過程。計算函數(shù)y=3x2+2x-4(假設x=2)=程序如下:#include''stdio.h"voidmain()intx-2,y;y=3*x*x+2*x-4;printf(''\ny=%dw,y);)①啟動TC集成環(huán)境②編輯ー個新文件按F10將亮條移到File處按回車鍵,再選New后按回車鍵(為簡化起見,以后用File-New的形式表示上述操作),出現(xiàn)子窗ロ,在其中輸入要創(chuàng)建的文件名,輸入文件名后按回車鍵,出現(xiàn)編輯窗口,即可在此窗口中輸入和修改源程序。③保存文件按F10,選擇菜單File-Save,即可以保存當前文件到外存。④編譯文件按F10.選擇菜單Compile-Compiletoobj,就可以對程序進行編譯。在此過程中可能會出現(xiàn)錯誤信息,并進行修改,修改完后存盤再進行編譯,直至成功。⑤運行文件按F10,選擇Run—Run命令運行文件。⑥查看運行結(jié)果按F10,選擇菜單Run-Userscreen即可以查看程序運行結(jié)果。注意:若編譯沒有成功,則程序不能運行:若編譯成功,則可以運行程序,但若運行結(jié)果不正確,則表明程序有邏輯錯誤,需要對程序進行調(diào)試和修改,直至程序運行結(jié)果正確。你以后每次上機運行ー個C程序都要經(jīng)過上述操作步驟②■⑥因此,你需要深刻理解和熟練掌握這些步驟。.學會調(diào)入ー個已存在的C源文件按F10,選擇菜單File-Load,出現(xiàn)子窗ロ,在其中輸入已存在的文件名,按回車鍵后即可以調(diào)入ー個已存在的文件。.學會退出TurboC暫時退出:按F10,選擇菜單File—OSshell?此時按Exit即可以返回主菜單。永久退出:按F10,選擇菜單File—Quit。.輸入p4-p5例1.2-1.3,并進行調(diào)試和運行?!咀跃幊绦蛏蠙C】.設ー個正圓臺的上底半徑rl=2.5cm,下底半徑r2=3.7cm,高h=3.5cm。分別計算并輸出該圓臺的上底面積si下底面積s2,側(cè)面積s3,圓臺的體積V。具體要求如下:①rl,r2,h用scanf函數(shù)輸入,且在輸入前要有提示;②在輸出結(jié)果時要有文字說明,每個輸出值占一行,且小數(shù)點后取4位數(shù)字。③所有變量均定義為單精度類型。.編程實現(xiàn):用1分、5分、10分、25分的硬幣湊成任何給定的錢數(shù)x,要求硬幣的數(shù)目最少。習題!以下各標識符中,哪些是合法的用戶標識符?(1)main合法⑵MAIN合法⑶a205合法⑷_exp合法⑸a_b合法(6)3.5不合法⑺A[10J合法⑻A.name不合法⑼%d不合法 ⑩float合法(11)$100不合法?1am不合法?max合法(5)(14)begin合法(15)#define不合法(10N0NAME00合法(17)proc合法(18)and合法?not合法?While合法注:字母或下劃開始的后跟若于字母或下劃線或數(shù)字組成的序列;不能和保留字相同;避免和系統(tǒng)函數(shù)名相同;大小寫字母有別!2選擇(1)18/4*sqrt(4.0)/8的值的類型? BAintBfloatCcharD不確定
(2)在C中,ー個unsinedint型數(shù)據(jù)的表示范圍是 DA0-127B0-225C0-32767D0-65535⑶(-15)%(-8)的值是 AA-7B7C1.875D非法(5)組合法(-079不合法)('ABC,,oxabc不合法)(5)組合法(-079不合法)('ABC,,oxabc不合法)⑶e-3不合法)(069不合法)(2)組非法288,-079,3.4e",,A,,10111-0,lel4,.5678,'ABC',oxabc+1,3.eJ,'4',ox5a,.015,16.8e069,101,oxabcd2L,345e8,'\n','\\','\101'4下列常量中哪ー組都是非法的?(1)0a,el.5,ox7,'.',158⑵088,ox9afg,65538,3E24,,\089'⑶32768,1.oe584,3.5e-476,"A”,9FBA-32769,45678L,12e-2.1,0X9ab,,\063,9abH,177Q,07777,-9999.999ハt,5計算下列表達式⑴15+30M 等于17⑵1.5+15/2等于9.0(3)10==9+1等于1⑷x=10,3+8,y=20⑸x=y=500 (6)設x=l,y=2,求x++等于2 y++等于3⑺5>3等于1⑻10V500 等于1(9)5>3&&5>8等于〇⑩10>5||5<10等于1三、實驗環(huán)境DOS或Windows操作系統(tǒng):TC或BorlandC++編譯系統(tǒng)。四、實驗過程1實驗步驟【上機實習指導】Sl=rl*rl*nS2=r2*r2*nL=Vh*h+(r2-rl)+(r2-rl)S3=l*n*(r2+rl)S=Vsl*s2V=l/3*h*(s+sl+s2)2題:對〃ル,れ5同樣操作2關鍵代碼及其解釋【上機實習指導】#include"stdio.hvoidmain()intx=2,y;y=3*x*x+2*x-4;printf("\ny二%d”,y);)【自編程序上機】1題:#definepai3.1415#include<math.h>voidmain()(floatrl,r2,h,s,si,s2,s3,v,1;printf(,zpleaseinputrl,r2,h\n");scanfC%f,%f,%f*,&rl,&r2,&h);sl=rl*rl*pai;s2=pai*r2*r2;l=sqrt(h*h+(r2-rl)*(r2-r1));s3=pai*l*(rl+r2);s=sqrt(sl*s2);v=h*(sl+s2+s)/3;4f\n",si,s2,s3,v);printf("sl=%.4f\ns2=%.4f\ns3=%.4f\n4f\n",si,s2,s3,v);2題:#include<stdio.h>voidmain()(intx,ml二〇,m5=0,ml0=0,m25=0;scanf("%d",&x);while(x>=25)(x=x-25;m25++;}while(x>=10)(x=x-10;mlO++;}while(x>=5)(x=x-5;m5++;)while(x>=l)(x二xT;ml++;)printf(*m25=%d\n*,m25);printf("mlO二%d\n”,mlO);printf(〃n)5二%d\n,m5);printf("ml二%d\n”,ml);3調(diào)試過程【上機實習指導】!題:開始運行directories環(huán)境出現(xiàn)錯誤【自編程序上機】1題:圓臺表面積的開根號計算出現(xiàn)問題,計算結(jié)果有問題2題:不知道如何設計算法,通過找人詢問和上網(wǎng)查詢得出結(jié)果。五、實驗總結(jié).遇到的問題及解決過程出現(xiàn)運行環(huán)境錯誤,算出的結(jié)果有時是負數(shù),有時不正確,忘記打分號,忘記打結(jié)尾的花括號等問題.產(chǎn)生的錯誤及原因分析因為directories目錄不對,出現(xiàn)運行環(huán)境錯誤,未申明引用#include<math.h>,導致開根號失敗,算出的結(jié)果是負數(shù),將浮點型ー開始寫成整型導致算出的結(jié)果不正確。.體會和收獲。第一次學習如何使用C語言有一些困難,不過通過ー些練習與老師的指導,基本能夠編ー些簡單的程序,也學會了自己學著解決自己在編程過程中遇到的問題。六、參考文獻[1]譚浩強,C程序設計[M](第四版).北京:清華大學出版社,2010年6月(中國高等院校計算機基礎教育課程體系規(guī)劃教材)[2]譚浩強,C程序設計題解與上機指導(第三版),北京:清華大學出版社,2005年7月(新世紀計算機教育叢書)七、教師評語云南大學數(shù)學與統(tǒng)計學實驗教學中心實驗報告課程名稱:程序設計和算法語言學期:2015?2016學年下學期成績:指導教師:趙越學生姓名:劉淵學生學號:20151910012實驗名稱:選擇結(jié)構(gòu)程序設計實驗編號:二實驗日期:4月10日實驗學時:2學院:數(shù)學與統(tǒng)計學院專業(yè):數(shù)學與應用數(shù)學年級:2015級ー、實驗目的!進ー步掌握運行一個C語言程序的方法和步驟。2分清C語言的符號、標識符、保留字的區(qū)別。3掌握C語言的數(shù)據(jù)類型,會定義整型、實型、字符型變量以及對它們的賦值方法。4學會數(shù)據(jù)輸入方式和數(shù)據(jù)輸出格式及各種格式轉(zhuǎn)意符。5學會使用C的運算符以及用這些運算符組成的表達式,特別是自加(++)和自減(——)運算符的使用。二、實驗內(nèi)容【上機實習指導】1輸入并運行下面程序,分析其運行結(jié)果。main(){charcl,c2;cl=46;c2=47;printf(''%3c%3cz,,cl,c2);printf(、ヽ%3d%3d〃,cl,c2);)將程序第二行改為:intcl,c2;再運行,分析其結(jié)果。注:實際本例體現(xiàn)出C語言的ー種特性(靈活),整型變量與字符型變量可以相互轉(zhuǎn)換。2輸入并運行下面程序main(){inta,b;floatc,d;longe,f;unsignedintu,v;charcl,c2;scanf(''%d,%d",&a,&b);scanf(、ヽ%f,%f",&c,&d);scanf(、、%Id,%ld",&e,&f);scanf(%o,%〇〃,&u,&v);scanf(、、%c,%c”,&cl,&c2);printf(、、、n〃);printf(''a=%4d,b=%4d\n”,a,b);printf(、、c二%8.2f,d二%8.2f\n〃,c,d);
printf(''e=%161d,f=%161d\nK,e,f);printf(''u=%o,v=%o\n,/,u,v);printf(''cl或c,c2=%c\n",cl,c2);)運行上面程序,分析結(jié)果,特別注意輸出Cl,C2的值是什么?什么原因?⑴將輸入e和f、u和v的語句分別改為:scanf(''%d,%d",&e,&f);scanf(%d,%d",&u,&v);運行并分析結(jié)果。⑵將程序的第一行加命令行:^include<math.h>運行并分析結(jié)果。3編寫一個程序,求表達式x-z%2*(x+y)%2/2的值。設x=8.5,y=2.5,z=44先分析下面程序的結(jié)果,然后再上機運行,看結(jié)果上否一致。main(){intx,y,z;x=y=z=3;y=x++-1;printf(''%4d%4d”,x,y);y=++x-1;printf(%4d%4dw,x,y);y=z +1;printf(''%4d%4d”,z,y);y=--z+1;printf(''%4d%4d,,1z,y);}注:本例學生注意,自增自減運算符,先賦值后自增(自減)和先自增(自減)后賦值的問題。*5編寫ー個程序,將輸入的小寫字母改寫成大寫字母并輸出。提示:可采用getchar()函數(shù)輸入字符,并利用for()循環(huán)語句。當然也可用其它方法,只要能實現(xiàn)其功能即可。下面給出ー個語句段,學生補充一個完整的程序后,上機進行調(diào)試。for(i=l;i<=10;i++){cl=getchar();c2=cl-32;printf(''string%c\n”,c2);)【自編程序上機】1(判錯)下述論斷哪些是不對的?確誤誤誤誤確誤確喉誤
正錯錯錯錯正錯正錯錯①每個C語言程序有且僅有一個主函數(shù)main()〇確誤誤誤誤確誤確喉誤
正錯錯錯錯正錯正錯錯②C語言程序的每一行都用分號結(jié)尾。③C程序的執(zhí)行從第一行開始到最后一行結(jié)束。④C程序的每一行只能寫一條語句。⑤C程序的一條語句可以占多行。⑥ー個C程序可有一個或多個函數(shù)組成。⑦在C程序中,注釋說明只能寫在一條語句的末尾。⑧在ー個C程序中,主函數(shù)必須放在程序的首部。⑨在ー個C程序中,主函數(shù)main??梢苑旁诔绦虻娜魏挝恢蒙稀"庠贑程序中,注釋部分是用花括號括起來的。2下列程序錯誤在哪里?①main() /?給定半徑r,求園的面積s*/{floatr,s;s=n*r*r;printf("s=%f\n”,s)②main()②main()/?給定長和寬Lw,求矩形面積s*/{int1,w,s;scanf(、ヽ%d%d〃,1,w);s=l*w;printf(1,w,s);}③main(){inti,j,k;floatx,y,z;scanf(''%d%f%^,&i,&j,&k);scanf(、、%d%f%f”,x,y,z);i=i+x;y=y+j;z=i+j;k=x%y;printf(''%d%f%f\n",i,j,k);printf(''%f%d%d\nz,x,y,z);}運行看看結(jié)果如何?為什么?④main(){inti;floatx;longy;i=100;x=200;y=300;printf(、、i二%d,x=%d,y=%d\n",i,x,y);printf(、、i=%f,x=%f,y=%f\n",i,x,y);printf(、、i二%Id,x=%ld,y=%ld\n",i,x,y);)運行試試看,結(jié)果如何?為什么?3參考下面程序,如何改寫輸入函數(shù),并配合正確的鍵盤輸入方法才能使x,y和ch分別獲得值10,100和‘A'?main(){intx,y;charch;scanf(、、x二%d,y二%d,ch二%c“,&x,&y,&ch);printf(、、x二%d,y二%d,ch二"c\n〃,x,y,ch);}若將輸入函數(shù)改為scanf(、嘅d,%d,%c〃,&x,&y,&ch);或者scanf(、、%d,%c,%d",&x,&ch,&y);或者scanf(、,%c,%d,%d",&ch,&x,&y);結(jié)果將會如何?4下面程序?qū)斎胗泻我?利用它可以作什么?main(){intx,y,z;longm;scanf(、、%d%〇%x〃,&x,&y,&z);scanf(、、%x%ld〃,&m);printf(、、x二%d,%o;%x\n",x,x,x);printf(、、y二%d,%o;%x\n",y,y,y);printf(''z=%d,%o;%x\n",z,z,z);printf(、、小=%Id,%lo;%lx\n",m,m,m);}5main(){intx;longy;x=-500;y=-500;printf(、、x二%d,%u;y=%ld,%u\n",x,x,y,y);}你記得補碼是何意義嗎?上述程序說明了什么?如果將x,y各賦值為ー10或者各賦值為ー32768和一2147483648,輸出結(jié)果如何?為什么?
6輸出寬度及控制main(){inti,j;floatx,y;longintm;i=688;j=-32765;x=12345.678;y二一48765.432;m=1234567890;printf(%d,%8d,%08d,%-8d\n〃,i,i,j,j);printf(%f,%12.2f,%12.2f,%-12.2f\n〃,x,x,y,y);printf(%ld,%lu,%121d,%T2d\n〃,m,m,m,m);}三、實驗環(huán)境DOS或Windows操作系統(tǒng);TC或BorlandC++編譯系統(tǒng)。四、實驗過程1實驗步驟【上機實習指導】!題:!題:2題:3題:a=x-(int)z%2*(int)(x+y)%2/2結(jié)束4題:y=x++T,y=++x-1,y=z-+1,y-——z+1【自編程序上機】1題:無框圖2題:(1)結(jié)束(2)S=l*wi=i+x,y=y+j3題:4題:5題:輸出x,x,y,y結(jié)束2關鍵代碼及其解釋【上機實習指導】!題:main()(intcl,c2;cl=46,c2=47;printf(*%3c%3c*,cl,c2);printfC%3d%3d*,cl,c2);)2題:main(){inta,b;floatc,d;longe,f;unsignedintu,v;charcl,c2;scanf("%d,%d",&a,&b);scanfC%f,%f*,&c,&d);scanf("%ld,%ld”,&e,&f);scanf("%〇,%〇”,&u,&v);scanf("%c,%c",&cl,&c2);printf("\n");printf("a=%4d,b=%4d\n",a,b);printf("c=%8.2f,d二%8.2f\n",c,d);printf("e=%161d,f=%161d\n",e,f);printf(〃u=%〇,v二%o\n”,u,v);printf("cl二%c,c2二%c\n”,cl,c2);}3題:main()(floatx,y,a;intz;x二8.5,y二2.5,z二4;a=x-z%2*(int)(x+y)%2/2;printf("a二%.2f\n",a);}4題:main(){intx,y,z;x=y=z=3;y二x++-1;printf("%4d%4d",x,y);y=++x-1;printf("%4d%4d",x,y);y=z—+1;printf("%4d%4d",x,y);y=--z+1;printf(飛4d%4d\n”,x,y);【自編程序上機】1題:無代碼。2題:ttdefinePai3.14159#include<stdio.h>main()(floatr,s;scanf&r);s=Pai*r*r;printf("s=%f\n”,s);)main()(int1,w,s;scanf&1,&w);s=l*w;printf("s二%d",s);)main()(inti,j,k;floatx,y,z;scanf(〃%d%d%d”,&i,&j,&k);scanf("%f%f%f",&x,&y,&z);i=i+x;y=y+j;z=i+j;k=(int)x%(int)y;printf(z,%d%d%d\n/\i,j,k);printf("%f%f%f\n”,x,y,z);}main()(inti;floatx;longy;i=100;x=200;y=300;printf("i=%d,x=%d,y=%d\n*,i,x,y);printfCi=%d,x=%d,y=%ld\n”,i,x,y);printf(〃i二%Id,x=%Id,y=%ld\n”,i,x,y);printf("\n");3題:main()intx,y;charch;scanf(、、%d,%d,%c",&x,&y,&ch);printf(''x=%d,y=%d,ch=%c\n,z,x,y,ch);)4題:main(){intx,y,z;longm;scanf("%d%0%x",&x,&y,&z);scanf&m);printf("x二%d,%o,%x\n”,x,x,x);printf(*y=%d,%o,%x\n”,y,y,y);printf(*z=%d,%o,%x\n*,z,z,z);printf("m二%Id,%lo,%lx\n*,m,m,m);}5題:main()(intx;longy;x=-500;y=-500;printf(Mx=%d,%u;y二%Id,%u\n”,x,x,y,y);}6題:main()(inti,j;floatx,y;longm;i=688;j=-32765;x=12345.678;y=-48765.432;m=1234567890;printfぐ%d,%8d,%08d,%-8d\n”,i,i,j,j);printf("%f,%12.2f,%12.2f,%-12.2f\n〃,x,x,y,y);printf("%ld,%lu,%121d,%T21d\n”,m,m,m,m);3調(diào)試過程【上機實習指導】1題:將char改為int后輸出的結(jié)果還是相同,說明字符型數(shù)據(jù)和整型數(shù)據(jù)是通用的,是可以互換的。2題:ー開始輸出的cl,c2不是我想要輸出的東西,因為在輸完8進制后回車了,后來在改成接著在8進制后輸入就正確了,如下:ー開始是1,2a,b改正后1,2a,b(1)更改以后就變成都以整形數(shù)據(jù)輸入了,在輸出時,u,v是以8進制輸出,而e,f顯示中只有e顯示正確,f是亂碼。(2)加了頭標include<math.h>后原程序未出現(xiàn)錯誤。3題:原程序錯誤,因為其中的常量都為浮點型而取余(%)運算的兩邊都必須為整形,所以要將x+y變?yōu)?int)(x+y),最終運算結(jié)果為a=8.504題:y=x++為先運算y=x,再運算x++,y=++x為先運算++x,再運算y=x輸出結(jié)果為42545452【自編程序上機】1題:答案已寫到題目后面。2題:c程序中打不出口這個符號,可通過符號常量進行運算,還有在程序中r未輸入數(shù)值l,w未用地址運算(&)符號,導致l,w值未存儲,為亂碼。且輸出時未用%,因此只能輸出l,w,s而不是1,w,S對應的值。(3)輸入函數(shù)中只輸入了兩個,而地址取了三個,導致k未取值,且下面運算k=x%y中x,y為浮點型,不能進行求余運算,且輸出也不正確。x,y,z,為浮點型i,j,k為整型。(4)輸出時只有第一行和第三行的i值是正確的,其他的都是錯誤的,原因是一行中有一個亂碼后面的都是錯誤的。3題:輸入函數(shù)scanf中%前不能加其他的東西,輸出時如果是ch=c.那顯示的也是ch=c",要改為ch=%c,才能將ch對應的數(shù)據(jù)輸出。4題:輸入的數(shù)要分別為10進制,8進制,16進制,且原程序要將%x%ld兩個去掉ー個,因為m只取ー個地址。此程序可以實現(xiàn)將輸入的4個數(shù)分別以10,8,16進制顯示出來。5題:補碼是為了解決數(shù)的符號問題的,當為ー500時以%d輸出為ー500,以%u輸出為2進制無符號型,-1和一32768也是ー樣,-2147483648在機下顯示不出因為其位數(shù)不夠,要用Mu6題:數(shù)據(jù)輸出均正確,只是用%后的數(shù)字來控制了顯示的位數(shù)。五、實驗總結(jié).遇到的問題及解決過程有許多問題,這里無法ーー列舉,有的通過查書解決了,有的問同學解決了,還有的沒解決,準備向老師請教。.產(chǎn)生的錯誤及原因分析錯誤與分析都在上面的調(diào)試過程中闡述了。.體會和收獲最主要的是學會了讀程序和發(fā)現(xiàn)程序存在的錯誤,并能積極地翻書查找了。六、參考文獻[1]譚浩強,C程序設計國](第四版).北京:清華大學出版社,2010年6月(中國高等院校計算機基礎教育課程體系規(guī)劃教材)[2]譚浩強,C程序設計(第四版)學習輔導,北京:清華大學出版社,2010年7月(中國高等院校計算機基礎教育課程體系規(guī)劃教材)七、教師評語云南大學數(shù)學與統(tǒng)計學實驗教學中心實驗報告課程名稱:程序設計和算法語言學期:2015?2016學年下學期成績:指導教師:趙越學生姓名:劉淵學生學號:20151910012實驗名稱:選擇結(jié)構(gòu)程序設計實驗編號:三實驗日期:5月8日實驗學時:2學院:數(shù)學與統(tǒng)計學院專業(yè):數(shù)學與應用數(shù)學年級:2015級ー、實驗目的.熟練掌握上機運行一個c程序的操作過程。.學會正確使用邏輯運算符和邏輯表達式,進ー步掌握各種表達式的使用。.利用if語句實現(xiàn)選擇結(jié)構(gòu)。.利用switch語句實現(xiàn)多分支選擇結(jié)構(gòu)。.熟悉關系表達式和邏輯表達式的使用。.掌握break和continue語句的使用,以及它們之間的區(qū)別。.進一步練習調(diào)試與修改程序。二、實驗內(nèi)容實驗內(nèi)容和步驟1三個整數(shù)a,b,c,由鍵盤輸入這三個數(shù),求三個數(shù)中最大的值。main(){inta,b,c;printf(''inputa,b,c:,f);scanf(''%d;%d;%d,z,&a,&b,&c);if(a<b)if(b<c)printf(''maxKd'n”,c);elseprintf(''max=%d\nzz,b);elseif(a<c)printf(''max=%d\n,z,c);elseprintf(''max=%d\n",a);}運行下面程序,分析if和else是哪兩個相互“配對”,在書寫程序時,分出層次,這樣有利于程序的可讀性,容易查找出錯誤。此程序還有更加簡明的方法實現(xiàn),就是利用條件表達式。main(){inta,b,c,max,t;printf(''inputa,b,c:");scanf(''%d,%d,%d〃,&a,&b,&c);t=(a>b)?a:b;max=(t>c)?t:c;printf(,'max=%d,,>max);)學生可利用此程序,考慮怎樣修改求出三個數(shù)中的最小值。2先讀下面程序,分析出程序的執(zhí)行結(jié)果,然后再上機運行,結(jié)果是否一致。main(){intx,y=l,z;if(y!=0)x=5;printf(、、x=%d\t”,x);if(y==0)x=3;elsex=5;printf(、、x=%d\t\n",x);x=l;if(z<0)if(y>0)x=3;elsex=5;printf(''x=%d\t\n/,,x);if(z=y<0)x=3elseif(y==0)x=5;elsex=7;printf(、、x=%d\t”,x);printf(、、z=%d\t\n",z);if(x=z=y)x=3;printf(''x=%d\t",x);printf(、、z=%d\t\n",z);)3有一函數(shù):〃x (x<10)y=3x -2 (10^x<50)I4x+l (50^x<100)ゝ5x (x^lOO)輸入x的值,求y的值。程序如下:main(){intx,y,t;printf(''inputx=:");scanf(%dz,,&x);if(x<10)t=0;if(x>=100)t=10;elset=x/10;switch(t){case0:y=x;break;y=3*x-2;break;y=4*x+l;break;y二5*x;)printf(、、y=%d”,y);)運行程序,寫出執(zhí)行結(jié)果。本題還可以單獨用if語句實現(xiàn),方法簡單,程序可讀性好,學生自己編程,上機運行。4從數(shù)字1開始到200之間,求能被3整除的數(shù),然后求這些數(shù)的累加和,直到和的值不大于100為止。輸出這些數(shù)及累加和。參考程序如下:main(){inti,sum=0;for(i=l:i<=200;i++){if(i%3!-0)continue;sum=sum+i;printf(i=%6d”,i);)printf(''sum=%6d",sum);]此程序的目的在于理解continue語句的用法。學生可以自己選做ー些題目理解break和continue語句之間的區(qū)別,以免混淆。注:break語句可以從循環(huán)體內(nèi)跳出循環(huán)體外,提前結(jié)束循環(huán),接著循環(huán)著下面的語句(從第三題可看出)。Continue語句是結(jié)束本次循環(huán),即跳過循環(huán)體中下面尚未招待的語句,接著進行下一次執(zhí)行循環(huán)的判定。*5學生自己編程,上機調(diào)試,并記錄下運行的結(jié)果。由鍵盤輸入三個數(shù),計算以這三個數(shù)為邊長的三角形面積。提示:編程時要考慮到能構(gòu)成三角形的條件為:兩邊之和大于第三邊。求三角形面積公式為s=戶チ(s-a)*(s-0)*(s-c).參考程序如下:#include''math,h”main(){floata,b,c,s,si;printf(''Pleaseenter3reals:\nZf);scanf(、、%f%f%f”,&a,&b,&c);if((a+b)>c&&(a+c)>b&&(b+c)>a){s=(a+b+c)*0.5;sl=s*(s-a)*(s-b)*(s-c);s=sqrt(si);printf(''Areaofthetriangleis%f\n",s);)elseprintf(''Itisnottriangle!\n);}【上機實習指導】.輸入并運行習題3.10。即:#include''stdio.h〃voidmain(){inti,j,n,m;i=8;j=10;m=++i;n=j++;printf(''%d,%d,%d,%d”,i,j,m,n);}分別作以下改變并運行:①將程序第四行改為:m=i++;n=++j;②程序改為:main(){inti,j;i=8;j=10;printf(''%d,%d〃,i++,j++);}③在②的基礎上,將語句改為:printf(''%d,%d〃,i++,j++);④再將語句改為:printf(''%d,%d,%d,%d〃,i,j,i++,j++);⑤程序改為:#include''stdio.h〃voidmain(){inti,j,n=0,m=0;i=8;j=10;m+=i++;n-=--j;printf(''%d,%d,%d,%d”,i,j,m,n);}.計算下列分段函數(shù)值:ズ+x—6, xVO且xW—3f(x)=Xズー5x+6,0<x<10且xX2及x#3パーX-1. 其它具體要求如下:①用if語句實現(xiàn)分支。自變量X與函數(shù)值均用單精度類型。
②自變量X用scanf函數(shù)輸入,且輸入前要有提示。結(jié)果的輸出采用以下形式:x=具體值,f(x)=具體值③分別輸入X=-5.O,-3.0,1.0,2.0,2.5,3.0,5.0,運行該程序。.先靜態(tài)分析以下程序的運行結(jié)果,然后上機驗證。#include''stdio.h"voidmain(){inta=3,b=4,c=5,x,y,z;x=c>b>a;y=!a+b+<c&&(b!=c);z=c/b+((float)a/b&&(float)(a/c));printf(''\nx=%d,y=%d,z=%d”,x,y,z);x=a||b-;y=a-3&&b;printf(、、\n%d,%d,%d,%d,%d,%d”,a,b,c,x,y,z):)上機運行的結(jié)果與你分析的結(jié)果是否一致?不一致的原因何在?請在程序的最后ー個花括號前加上語句:getcharO;后重新運行程序,注意事項加上這ー語句后,程序的運行進程有何不同?getcharO是ー個函數(shù)調(diào)用,其作用是等待接收你從鍵盤輸入的ー個字符,在你未按鍵之前一直處于等待狀態(tài)。在這里可以起到暫停的作用。當你看清結(jié)果并按任意鍵后,立即退出程序并切換回TC主屏幕。用這一方法可以減少屏幕切換操作。l/(x4-2)? 一54xV0且xr-2l/(x-f-5). 0&xV51/(x4-12),1/(x4-12),〇,5&xV10其它.下列C程序的功能是:計算并輸出分段函數(shù)值。根據(jù)程序?qū)懗龇侄魏瘮?shù)。其中x由鍵盤輸入。請通過調(diào)試修改程序中的錯誤(包括語法錯誤和邏輯錯誤)。^include"stdio.h"main(){floatx,y;printf("inputx=");scanf("%f",&x);if((-5.0<=x<0.〇)&&(x!=-2.〇))y=l.0/(x+2.0);elseif(x<5.0)y=l.0/(x+5.0);elseif(x<10.0)y=l.0/(x+12.0);elsey=0.0;printf("x=%e\ny或e\n”,x,y);)具體要求如下:①不允許改變計算的精度。②不允許改變原來程序的結(jié)構(gòu),只能在語句或表達式內(nèi)部進行修改。③調(diào)試正確后,用x=-7.0,-2.0,-1.0,0.0,2.0,5.0,8.0,10.0,11.0運行這個程序。④畫出與調(diào)試正確后的程序?qū)牧鞒虉D?!咀跃幊绦蛏蠙C】.用scanf函數(shù)輸入ー個百分制成績(整型量),要求輸出成績等級A,B,C,D,E?其中90T00分為A,80-89分為B,70-79分為C,60-69分為D,60分以下為E。具體要求如下:①用if語句實現(xiàn)分支。②在輸入百分制成績前要有提示。③在輸入百分制成績后,要判斷該成績的合理性,對于不合理的成績(即大于100分或小于〇分)應輸出出錯信息。④在輸出結(jié)果中應包括百分制成績與成績等級,并要有文字說明。⑤分別輸入百分制成績:-90,100,90,85,70,60,45,101,運行該程序。.將第4題中的(1)改為“用switch語句實現(xiàn)”,其余不變,重復實現(xiàn)第3題中的各功能。.編程找出5個整數(shù)中的最大數(shù)和最小數(shù),并輸出找到的最大數(shù)和最小數(shù)。習題!以下if語句的形式哪些是錯誤的?if(x!=y)if(x==y)if(x>y)thenz=x;elsez=y;if(x>y)if(x>z)if(x>m)max二x;if(a=b)printf(''Yes");elseprintf(''No");if(5)x=5;elsey=5;if(x-y)z=0;elsez=l;if(x〉〇)y=O;elsey=l;elsey="l;2下面是計算函數(shù)TOC\o"1-5"\h\z廠1 x>0y=イ0 x=0し1 x<0幾個程序段:①y=0;if(x<=0)if(x<0)y=-l;elsey=l;②if(x<=0)if(x<0)y=-l;elsey=0;elsey=l;③y=l;if(x<=0)if(x=O)y=0;elsey=T;④y=T;if(x>=0)if(x>0)y=l;elsey=0;其中是否存在錯誤?若有,如何糾正?3從鍵盤輸入任意整數(shù),按小到大的順序輸出。4輸入一個字符,如果是大寫字母改變?yōu)樾懽帜?如果是小寫字母,則把它變?yōu)榇髮懽帜?若是其它字符則不變。5輸入兩個數(shù)x和y,以及一個符號c,若為,'-', ,'/',則輸出x+y,x-y,x*y,x/y,若c是其它符號,則輸出錯誤信息。6計算函數(shù)值:rt3-l 0Wt<1.5J2t-t+l 1.5<t<2. 5y=d-t3+2t2+5 2.5くt<3.5I5ピ+2t 3. 5Wt<6三、實驗環(huán)境DOS或Windows操作系統(tǒng);TC或BorlandC++編譯系統(tǒng)。四、實驗過程1實驗步驟[ヒ機實習指導】1題:2題:3題:4題:【自編程序上機】1題:main()inta,b,c;printft,inputa,b,c:');scanf(*%d,%d,%d",&a,&b,&c);if(a<b){if(b<c)printf("max=%d\n,c);elseprintf("max=%d\n”,b);)elseif(a<c)printf("max=%d\n,c);elseprintf("max=%d\n”,a);)2題:3題:2關鍵代碼及其解釋【上機實習指導】!題:2題:3題:4題:【自編程序上機】1題:2題:3題:3調(diào)試過程【上機實習指導】1題:2題:3題:4題:【自編程序上機】1題:2題:3題:五、實驗總結(jié).遇到的問題及解決過程.產(chǎn)生的錯誤及原因分析.體會和收獲。六、參考文獻[1]譚浩強,C程序設計國](第四版).北京:清華大學出版社,2010年6月(中國高等院校計算機基礎教育課程體系規(guī)劃教材)[2]譚浩強,C程序設計(第四版)學習輔導,北京:清華大學出版社,2010年7月(中國高等院校計算機基礎教育課程體系規(guī)劃教材)七、教師評語云南大學數(shù)學與統(tǒng)計學實驗教學中心
實驗報告課程名稱:程序設計和算法語言學期:2015?2016學年下學期成績:指導教師:趙越學生姓名:劉淵學生學號:20151910012實驗名稱:循環(huán)結(jié)構(gòu)程序設計實驗編號:四實驗日期:5月22日實驗學時:3學院:數(shù)學與統(tǒng)計學院專業(yè):數(shù)學與應用數(shù)學年級:2015級ー、實驗目的.進一步練習選擇結(jié)構(gòu)的程序設計。.練習并掌握實現(xiàn)循環(huán)結(jié)構(gòu)的三種方法。.練習并掌握選擇結(jié)構(gòu)與循環(huán)結(jié)構(gòu)的嵌套。.掌握多重循環(huán)的應用。.學會單步跟蹤的操作方法。二、實驗內(nèi)容實驗內(nèi)容和步驟1分別用三種循環(huán)語句(while語句、do-while語句、for語句),實現(xiàn)求1?100的累加和。編程上機調(diào)試,總結(jié)出三種循環(huán)語句哪種實現(xiàn)起來方便、靈活。252求工n!(1!+2!+3!+—+25!)?n=l程序如下:mainO{floatn,s=0,t=l;for(n=l;n<=25;n++){t=t*n;s=s+t;)printf(vl!+2!+3!+…+25!=%e\n”,s);}上機運行,并記錄下結(jié)果。然后用另外兩種循環(huán)語句實現(xiàn)上述功能。3指出下面三個程序的功能,當輸入“quit?”時,它們的執(zhí)行結(jié)果是什么?#include<stdio.h>mainO{charc;c=getchar();while(c!=f?z){putchar(c);c=getchar(): 當輸入非〃?,時,執(zhí)行循環(huán)#include<stdio.h>main(){charc;while((c二getchar())!='?')putchar(++c);}當輸入非問號時,輸出下ー個字符,知道輸入問號オ終止循環(huán)#include<stdio.h>main(){while(putchar(getchar())!=,?,);}當輸入為非問號時,原樣輸出字符,當輸入為問號時結(jié)束循環(huán)。分析輸出的三種不同結(jié)果,在實驗報告中寫出為什么。*4換零錢。把一元錢全兌換成硬幣,有多少種兌換方法?參考程序如下:main(){inti,j,k,n;n=100,k=0;for(i=0;i<=n/5;i++)for(尸〇;jく=(n-i*5)/2;j++){printf(ヽ、5cent=%d\t2cent二%d\t1cent二%d\n”,i,j.n-i*5-j*2);k++;}printf(''totaltimes=%d\n",k);)*5穿越沙漠。用ー輛吉普車穿越1000公里的沙漠。吉普車的總裝油量為500加侖,耗油量為1加侖/公里。由于沙漠中沒有油庫,必須先用車在沙漠中建立臨時加油站,該吉普車要以最少的油耗穿越沙漠,應在什么地方建立臨時油庫,以及在什么地方安放多少油最好?參考程序如下:main(){intk=l;floatstation,distation,total;station=distation=total=500.0;while(distation<1000.0){printf(''station(%d)=%9.4foiPstotal(%d)=%10.4f\nz,,k,station,k,total);total=500.〇?++k;station=500.0/(2*kT);diststion+=station;distation-=station;station=1000.O-distation;printf(''station(%d)=%9.4foiPstotal(%d)=%10.4f\n/r,k,station,k,(kT)*50〇.0+(2*kT)*station);}【上機實習指導】1.輸入例6.2.①上機運行程序,分析運行結(jié)果。②用單步跟蹤觀察while語句的執(zhí)行過程:連續(xù)按三次F8鍵,再用兩次Ctrl-F7操作分別將i和sum的值顯示出來,然后不按斷F8鍵,每次按F8后,觀察綠條的變化和變量值的變化情況,以此來分析并弄清while語句的執(zhí)行過程。③修改程序,實現(xiàn)s=l+l/2+l/3+…+1/10。【自編程序上機】.計算下列級數(shù)和s==l-(2/3)+(3/5)-(4/7)+???+(-1)n((n+l)/(2n+D)直到最后ー項的絕對值小于10-4為止(注意:是l/2n+l)〇具體要求如下:①畫出流程圖。②除了要輸出級數(shù)和sタト,同時要求輸出總的項數(shù)n。輸出形式為:n=具體值,s=具體值.如果一個數(shù)恰好等于它的所有因子(包括1但不包括自身)之和,例如:6的因子為1,2,3, 1+24-3=6,因此6是一個“完數(shù)”。計算并輸出1000以內(nèi)的所有“完數(shù)”之和。具體要求如下:①所有循環(huán)均用for循環(huán)。②輸出要有文字說明,并同時輸出各“完數(shù)”。輸出形式為:完數(shù)1+完數(shù)2+…=和值.P121 6.14?要求用循環(huán)結(jié)構(gòu)實現(xiàn)。.百錢買百雞問題。已知公雞每只5元,母雞每只3元,小雞1元3只,要求100元錢正好買!00只雞,則應買公雞、母雞的小雞各多少只?.某班有學生n人,從終端讀入n及n個人學生的成績,試編程實現(xiàn)以下功能:①印出前3個最好成績及取得每個最好成績的人數(shù);②若90分以上計為優(yōu),75-89分計為良,60-74分計為中,60分以下計為不及格,試統(tǒng)計各檔成績所占百分率。習題1下列論題哪些是錯誤的?①C語言沒有g(shù)oto語句。 錯誤②While《表達式》語句的作用是:當表達式的值為0時重復執(zhí)行循環(huán)體語句。 錯誤,當表達式值為非0時オ循環(huán),即滿足條件繼續(xù)循環(huán)③do(語句)whil(表達式)的作用是:重復執(zhí)行循環(huán)體(“語句”),直到表達式成立(其值為真)。 錯誤,是先執(zhí)行指定的循環(huán)體,然后判斷表達式,當為非〇時循環(huán)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年環(huán)保型電動汽車制造與銷售合同
- 典型制造企業(yè)的成本核算現(xiàn)狀
- 產(chǎn)業(yè)融合發(fā)展現(xiàn)狀分析
- 制造業(yè)生產(chǎn)成本核算精細化策略及實施路徑
- 2024年簡約建筑施工合同
- 2024年度文化旅游攤位租賃及宣傳推廣協(xié)議3篇
- 2024年度農(nóng)村人居環(huán)境整治土方工程運輸合同模板2篇
- 商丘醫(yī)學高等專科學?!毒W(wǎng)絡視頻文化研究》2023-2024學年第一學期期末試卷
- 電力線路安裝合同范例
- 工廠造價合同范例
- 人教版四年級上冊數(shù)學【選擇題】專項練習100題附答案
- 鄉(xiāng)村振興背景下農(nóng)村電商發(fā)展策略研究
- 瓦斯隧道瓦斯監(jiān)測及檢測專業(yè)方案
- 最優(yōu)化計算智慧樹知到答案2024年華南理工大學
- 力的合成與分解 說課課件-2024-2025學年高一上學期物理人教版(2019)必修第一冊
- 建筑施工安全生產(chǎn)治本攻堅三年行動方案(2024-2026年)
- 瀝青路面養(yǎng)護銑刨施工技術(shù)規(guī)范.文檔
- 油浸式電力變壓器(電抗器)現(xiàn)場低頻加熱試驗導則
- 橋式、門式起重機安裝竣工試驗報告書
- 大學生助農(nóng)直播創(chuàng)業(yè)計劃書
- DL-T 1476-2023 電力安全工器具預防性試驗規(guī)程
評論
0/150
提交評論