計(jì)算機(jī)C實(shí)驗(yàn)指導(dǎo)書_第1頁(yè)
計(jì)算機(jī)C實(shí)驗(yàn)指導(dǎo)書_第2頁(yè)
計(jì)算機(jī)C實(shí)驗(yàn)指導(dǎo)書_第3頁(yè)
計(jì)算機(jī)C實(shí)驗(yàn)指導(dǎo)書_第4頁(yè)
計(jì)算機(jī)C實(shí)驗(yàn)指導(dǎo)書_第5頁(yè)
已閱讀5頁(yè),還剩83頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第一部分上機(jī)實(shí)驗(yàn)總的目的和要求一、上機(jī)實(shí)驗(yàn)?zāi)康膶W(xué)習(xí)C語(yǔ)言程序設(shè)計(jì)課程必須重視實(shí)踐環(huán)節(jié)。即獨(dú)立編寫出程序,獨(dú)立上機(jī)調(diào)試程序。必須保證有足夠的上機(jī)實(shí)驗(yàn)時(shí)間。上機(jī)實(shí)驗(yàn)的目的,絕不僅是為了驗(yàn)證教材和講課的內(nèi)容或者驗(yàn)證自己所編的程序正確與否。學(xué)習(xí)程序設(shè)計(jì),上機(jī)實(shí)驗(yàn)的目的:1、加深對(duì)講授內(nèi)容的理解,尤其是一些語(yǔ)法規(guī)定,光靠課堂講授,既枯燥無(wú)味又難以記住,但它們都很重要。通過(guò)多次上機(jī),就能自然地、熟練地掌握。通過(guò)上機(jī)來(lái)掌握語(yǔ)法規(guī)則是行之有效的方法。2、熟悉所用的計(jì)算機(jī)系統(tǒng)的操作方法,也就是了解和熟悉C語(yǔ)言程序開(kāi)發(fā)的環(huán)境。一個(gè)程序必須在一定的外部環(huán)境下才能運(yùn)行,所謂"環(huán)境",就是指所用的計(jì)算機(jī)系統(tǒng)的硬件和軟件條件。使用者應(yīng)該了解為了運(yùn)行一個(gè)C程序,需要哪些必要的外部條件(例如硬件配置、軟件配置),可以利用哪些系統(tǒng)的功能來(lái)幫助自己開(kāi)發(fā)程序。每一種計(jì)算機(jī)系統(tǒng)的功能和操作方法不完全相同,但只要熟練掌握一、二種計(jì)算機(jī)系統(tǒng)的使用,再遇到其它的系統(tǒng)時(shí)便會(huì)觸類旁通,很快地學(xué)會(huì)。3、學(xué)會(huì)上機(jī)調(diào)試程序。也就是善于發(fā)現(xiàn)程序中的錯(cuò)誤,并且能很快地排除這些錯(cuò)誤,使程序能正確運(yùn)行。經(jīng)驗(yàn)豐富的人,當(dāng)編譯時(shí)出現(xiàn)"出錯(cuò)信息"時(shí),能很快地判斷出錯(cuò)誤所在,并改正之。而缺乏經(jīng)驗(yàn)的人即使在明確的出錯(cuò)提示下也往往找不出錯(cuò)誤而求救于別人。計(jì)算機(jī)技術(shù)是實(shí)踐性很強(qiáng)的技術(shù),要求從事這一領(lǐng)域的人不僅能了解和熟悉有關(guān)理論和方法,還要求自己動(dòng)手實(shí)現(xiàn)。對(duì)程序設(shè)計(jì)來(lái)說(shuō),要求會(huì)編程序并上機(jī)調(diào)試通過(guò)。因此調(diào)試程序本身是程序設(shè)計(jì)課程的一個(gè)重要的內(nèi)容和基本要求,應(yīng)給予充分的重視。調(diào)試程序的經(jīng)驗(yàn)固然可以借鑒他人的現(xiàn)成經(jīng)驗(yàn),但更重要的是通過(guò)自己的直接實(shí)踐來(lái)累積,而且有些經(jīng)驗(yàn)是只能"會(huì)意"難以"言傳"。別人的經(jīng)驗(yàn)不能代替自己的經(jīng)驗(yàn),調(diào)試程序的能力是每個(gè)程序設(shè)計(jì)人員應(yīng)當(dāng)掌握的一項(xiàng)基本功。因此,在實(shí)驗(yàn)時(shí)千萬(wàn)不要在程序通過(guò)后就認(rèn)為萬(wàn)事大吉、完成任務(wù)了,而應(yīng)當(dāng)在已通過(guò)的程序基礎(chǔ)上作一些改動(dòng)(例如修改一些參數(shù)、增加程序一些功能、改變輸入數(shù)據(jù)的方法等卜再進(jìn)行編譯、連接和運(yùn)行。甚至于"自設(shè)障礙”,即把正確的程序改為有錯(cuò)的(例如用scanf函數(shù)輸入變量時(shí),漏寫符號(hào):使數(shù)組下標(biāo)出界;使整數(shù)溢出等),觀察和分析所出現(xiàn)的情況。這樣的學(xué)習(xí)才會(huì)有真正的收獲,是靈活主動(dòng)地學(xué)習(xí)而不是固板被動(dòng)的學(xué)習(xí)。二、上機(jī)實(shí)驗(yàn)前的準(zhǔn)備工作在上機(jī)實(shí)驗(yàn)前應(yīng)事先做好準(zhǔn)備工作,以提高上機(jī)實(shí)驗(yàn)的效率,準(zhǔn)備工作至少應(yīng)包括如下五個(gè)方面:4了解所用的計(jì)算機(jī)系統(tǒng)的性能和使用方法(包括C編譯系統(tǒng))上復(fù)習(xí)和掌握與本實(shí)驗(yàn)有關(guān)的教學(xué)內(nèi)容」準(zhǔn)備好上機(jī)所需的程序。程序應(yīng)書寫整齊,并經(jīng)人工檢查無(wú)誤后才能上機(jī),以提高上機(jī)效率。初學(xué)者切忌不編程序或抄別人程序去上機(jī),應(yīng)從一開(kāi)始就養(yǎng)成嚴(yán)謹(jǐn)?shù)目茖W(xué)作風(fēng)。口對(duì)運(yùn)行中可能出現(xiàn)的問(wèn)題應(yīng)事先作出估計(jì);對(duì)程序中自己有疑問(wèn)的地方,應(yīng)作上記號(hào),以便上機(jī)時(shí)給予注意?!鴾?zhǔn)備好調(diào)試和運(yùn)行時(shí)所需的數(shù)據(jù)。三、上機(jī)實(shí)驗(yàn)的步驟一個(gè)C源程序編寫完成后,就可以進(jìn)入輸入、編譯連接與運(yùn)行的過(guò)程。.源程序的輸入用戶編寫好的C源程序只有輸入進(jìn)行計(jì)算機(jī)經(jīng)處理后才能運(yùn)行。因此,上機(jī)運(yùn)行程序的第一步是輸入源程序、建立源文件。.編譯編譯通過(guò)后,即生成相應(yīng)的目標(biāo)程序,它是由計(jì)算機(jī)能識(shí)別的機(jī)器代碼所組成的。.連接所謂連接,是指將編譯生成的目標(biāo)程序文件與被調(diào)用函數(shù)的目標(biāo)模塊進(jìn)行連接,最后生成一個(gè)計(jì)算機(jī)真正能執(zhí)行的可執(zhí)行文件。在連接的過(guò)程中,也要進(jìn)行查錯(cuò),主要是檢查調(diào)用、各模塊之間的聯(lián)系以及存儲(chǔ)空間等方面的錯(cuò)誤。如果發(fā)現(xiàn)有連接錯(cuò)誤,則要對(duì)源程序進(jìn)行編輯修改,然后重新進(jìn)行編譯和連接。.運(yùn)行源程序經(jīng)過(guò)文件的編輯、編譯和連接過(guò)程,并且無(wú)錯(cuò)誤發(fā)生,最后生成可執(zhí)行文件后,就可以運(yùn)行該可執(zhí)行文件,得到所需要的結(jié)果。必須指出,編譯連接過(guò)程雖然能發(fā)現(xiàn)源程序中的大部分語(yǔ)法等錯(cuò)誤,但不能發(fā)現(xiàn)程序中的全部錯(cuò)誤,特別是不能發(fā)現(xiàn)邏輯錯(cuò)誤(應(yīng)該實(shí)現(xiàn)的功能未實(shí)現(xiàn))。在這種情況下,還需要對(duì)源程序進(jìn)行編輯修改,然后再進(jìn)行編譯連接,直到運(yùn)行結(jié)果正確為止。上機(jī)過(guò)程出現(xiàn)的問(wèn)題,除了系統(tǒng)的問(wèn)題外,一般應(yīng)自己獨(dú)立處理,不要輕易舉手問(wèn)老師,尤其對(duì)“出錯(cuò)信息“,應(yīng)善于自己分析判斷。這是學(xué)習(xí)調(diào)試程序的良好機(jī)會(huì),上機(jī)實(shí)驗(yàn)一般應(yīng)包括以下幾個(gè)步驟:調(diào)出C編譯系統(tǒng),進(jìn)入C工作環(huán)境(如TurboC集成環(huán)境,VC++6.0集成環(huán)境)輸入自己編好的程序(默認(rèn)擴(kuò)展名.3應(yīng)采用正確的指法擊鍵)檢查一遍已輸入的程序是否有錯(cuò)(包括輸入時(shí)打錯(cuò)的和編程中的錯(cuò)誤),如發(fā)現(xiàn)有錯(cuò),則及時(shí)改正。進(jìn)行編譯,生成目標(biāo)文件(擴(kuò)展名為.OBJ)與可執(zhí)行文件(擴(kuò)展名為.EXE)。若在編譯和連接過(guò)程中發(fā)現(xiàn)錯(cuò)誤,屏幕上會(huì)出現(xiàn)“出錯(cuò)信息“,根據(jù)提示找到出錯(cuò)位置和原因,加以改正,再進(jìn)行編譯……直到順利通過(guò)編譯和連接為止。運(yùn)行程序,并分析運(yùn)行結(jié)果是否合理和正確。如果在這一步中發(fā)現(xiàn)有錯(cuò)誤,則要重新調(diào)用編輯程序?qū)υ闯绦蜻M(jìn)行編輯修改,再進(jìn)行編譯、連接與運(yùn)行,直到?jīng)]有錯(cuò)誤為止。輸出程序清單和運(yùn)行結(jié)果四、實(shí)驗(yàn)后應(yīng)完成實(shí)驗(yàn)報(bào)告的填寫實(shí)驗(yàn)結(jié)束后,要整理實(shí)驗(yàn)結(jié)果并認(rèn)真分析和總結(jié),根據(jù)教師要求寫出實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)報(bào)告一般包括如下內(nèi)容:>實(shí)驗(yàn)內(nèi)容: 實(shí)驗(yàn)題目與要求.>算法說(shuō)明:用文字或流程圖說(shuō)明.>程序清單:>運(yùn)行結(jié)果:原始數(shù)據(jù),相應(yīng)的運(yùn)行結(jié)果和必要的說(shuō)明.A分析與思考:調(diào)試過(guò)程及調(diào)試中遇到的問(wèn)題及解決辦法;調(diào)試程序的心得與體會(huì);其他算法的存在與實(shí)踐等.若最終未完成調(diào)試,要認(rèn)真找出錯(cuò)誤并分析原因等.五、程序錯(cuò)誤類型及測(cè)試1程序錯(cuò)誤的類型為幫助同學(xué)調(diào)試程序和分析程序,下面簡(jiǎn)單介紹程序出錯(cuò)的種類1、語(yǔ)法錯(cuò)誤:不符合C語(yǔ)言的語(yǔ)法規(guī)定。1)函數(shù)、語(yǔ)句拼寫錯(cuò)誤(printf寫為pintf)2)括弧不匹配3)語(yǔ)句最后漏了分號(hào)2、邏輯錯(cuò)誤:程序無(wú)語(yǔ)法錯(cuò)誤,也能正常運(yùn)行,但結(jié)果不對(duì)。這類錯(cuò)誤可能是設(shè)計(jì)算法時(shí)的錯(cuò)誤,也可能是算法正確而在編寫程序時(shí)出現(xiàn),一般較難發(fā)現(xiàn),必須認(rèn)真檢查。3、運(yùn)行錯(cuò)誤:有時(shí)程序既無(wú)語(yǔ)法錯(cuò)誤,又無(wú)邏輯錯(cuò)誤,但不能正常運(yùn)行或結(jié)果不對(duì)。多數(shù)情況是數(shù)據(jù)不對(duì),包括數(shù)據(jù)本身不合適以及數(shù)據(jù)類型不匹配。2程序的調(diào)試(debugging)1、程序調(diào)試的任務(wù):是排除程序中的錯(cuò)誤,使程序能順利地運(yùn)行并得到預(yù)期的效果。程序的調(diào)試階段不僅要發(fā)現(xiàn)和消除語(yǔ)法上的錯(cuò)誤,還要發(fā)現(xiàn)和消除邏輯錯(cuò)誤和運(yùn)行錯(cuò)誤。2,程序測(cè)試的任務(wù):是盡力尋找程序中可能存在的錯(cuò)誤。在測(cè)試時(shí)要設(shè)想到程序運(yùn)行時(shí)的各種情況,測(cè)試在各種情況下的運(yùn)行結(jié)果是否正確。程序測(cè)試是程序調(diào)試的一個(gè)組成部分3.VisualC++調(diào)試功能:VisualC++內(nèi)置了強(qiáng)大的調(diào)試功能。調(diào)試發(fā)生在你已經(jīng)成功地進(jìn)行了編譯、連接,得到了可執(zhí)行程序,但是程序執(zhí)行的結(jié)果不正確的情況下。調(diào)試是修改你的代碼以便它能夠正確工作的過(guò)程。DeveloperStudio提供了許多工具幫助你跟蹤和定位錯(cuò)誤。調(diào)試系統(tǒng)提供特殊的菜單、窗口、對(duì)話框等來(lái)為開(kāi)發(fā)者提供幫助。A調(diào)試命令:有關(guān)調(diào)試的命令分散在加"令口61>118、\^6??和££|代菜單中。BuiId菜單包含一個(gè)StartDebug子菜單,其中的命令是Debug菜單命令的子集,包括:?jiǎn)?dòng)調(diào)試過(guò)程(Go)、單步跟蹤(StepInto)和運(yùn)行到光標(biāo)處(RunToCursor).當(dāng)啟動(dòng)調(diào)試進(jìn)程后,BuiId菜單會(huì)被Debug菜單代替,Debug菜單包含各種控制程序執(zhí)行的命令,如單步執(zhí)行、進(jìn)入函數(shù)體、從函數(shù)體中出來(lái)、運(yùn)行到光標(biāo)所在位置等。View菜單包含一些命令,可以控制顯示各種與調(diào)試有關(guān)的窗口,如變量窗口(Variableswindow)、調(diào)用棧窗口(CallStackwindow)等。Edit菜單下的Breakpoints命令可以打開(kāi)一個(gè)對(duì)話框,在其中可以插入、刪除、啟動(dòng)、停止各個(gè)斷點(diǎn)。A設(shè)置斷點(diǎn):你可以控制程序直接運(yùn)行到指定地點(diǎn),然后查看運(yùn)行到這個(gè)地方時(shí)程序的狀態(tài),如變量的值、調(diào)用棧的情況等。你可以通過(guò)設(shè)置斷點(diǎn)來(lái)達(dá)到這一目的。設(shè)置斷點(diǎn)的方式是:將光標(biāo)移到要設(shè)置斷點(diǎn)的地方,按F9,這時(shí)會(huì)有一個(gè)紅的圓點(diǎn)出現(xiàn)在代碼行的左邊。如果你想取消斷點(diǎn),將光標(biāo)移動(dòng)到設(shè)置斷點(diǎn)的代碼行,按F9。A啟動(dòng)調(diào)試:按F5或者在BuiId菜單中,選擇StartDebug然后選擇G。,就可以啟動(dòng)調(diào)試程序。程序會(huì)一直運(yùn)行到需要用戶輸入或者有斷點(diǎn)的代碼處。A查看變量值:查看變量值有多種方式,你可以選擇你喜歡的方式進(jìn)行。1)你可以將鼠標(biāo)移動(dòng)到程序的變量名處,系統(tǒng)會(huì)自動(dòng)為你顯示變量的值;2)復(fù)雜變量(如對(duì)象)可以通過(guò)QuickWatch查看,方法是:將光標(biāo)定位到所要查看值的變量處,按鼠標(biāo)右鍵,選擇QuickWatch菜單,就可以看到變量值。3)啟動(dòng)調(diào)試程序后,屏幕下方將會(huì)出現(xiàn)兩個(gè)輸出窗口,一個(gè)是Watch,另一個(gè)是Variable。Watch窗口顯示變量名和變量值,你可以在Watch窗口中加上你想觀察值的變量名,也可以直接從源代碼中選擇變量名,并把它拖動(dòng)到Watch窗口中。Variable窗口顯示程序當(dāng)前運(yùn)行上下文涉及的變量的值。?控制程序執(zhí)行:你可以控制程序單步執(zhí)行(F10),跟蹤到一個(gè)函數(shù)內(nèi)部(F11),從一個(gè)函數(shù)運(yùn)行出來(lái)(shift+F11),運(yùn)行到光標(biāo)所在位置(Ctrl+F10),以便方便地調(diào)試程序。這些命令用于在某個(gè)局部范圍詳細(xì)地調(diào)試程序。你也可以通過(guò)設(shè)置斷點(diǎn)(F9)然后用直接運(yùn)行(GO或者F5)來(lái)控制程序直接運(yùn)行到斷點(diǎn)位置。如果你設(shè)置了多個(gè)斷點(diǎn),程序?qū)?huì)在遇到的第一個(gè)斷點(diǎn)處停下來(lái)。要從斷點(diǎn)處繼續(xù)運(yùn)行,可以用上面所說(shuō)的各種命令(F5,F10,F11,Shift+FH,Ctrl+F1O),A結(jié)束調(diào)試:要結(jié)束調(diào)試,可以按shift+F5或者選擇菜單Debug|StopDebugging。當(dāng)結(jié)束調(diào)試后,所有調(diào)試窗口會(huì)自動(dòng)關(guān)閉,Debug菜單也會(huì)自動(dòng)還原為BuiId菜單。第二部分實(shí)驗(yàn)環(huán)境介紹一、TurboC的使用.編輯一個(gè)新文件D按〈F10〉鍵激活【File】主菜單,按回車鍵彈出子菜單(或者按〈Alt〉+(F)組合鍵),選擇子菜單【New],(見(jiàn)圖1),回車后進(jìn)入編輯狀態(tài)。光標(biāo)定位在左上角(第一行、第一列)。圖1文件菜單2)編輯過(guò)程中,可用〈Ins〉鍵轉(zhuǎn)換插入/改寫狀態(tài)和〈Del〉鍵刪除字符。3)按(Ctel)+<Y>組合鍵可刪除光標(biāo)所在一行。4)按〈Ctel〉+(N)組合鍵可插入一行。.保存文件按〈F10〉鍵并按回車(或者按〈Alt〉+〈F〉組合鍵),選擇子菜單【Save】,按回車鍵后,Tc會(huì)彈出一個(gè)對(duì)話框。用戶可按自己的習(xí)慣指定文件名,然后,此源文件就以此文件名存在用戶工作目錄中。如果用戶指定目錄路徑,則文件存入用戶指定的目錄中。用戶可設(shè)置改變用戶工作目錄,方法是按〈Alt〉+〈F〉組合鍵,選擇【Changedir],回車后,就會(huì)彈出新目錄輸入框,提示用戶輸入自己選擇的(或建立的)工作目錄名,如圖2。但應(yīng)注意,輸入的目錄必須已存在,否則,系統(tǒng)會(huì)報(bào)錯(cuò)。

圖2改變用戶工作目錄.打開(kāi)一個(gè)已存在的文件按〈Alt〉+〈F>組合鍵,選擇【Load】,這時(shí)屏幕上會(huì)出現(xiàn)一個(gè)*.c的“裝入文件”對(duì)話框,用戶可以在此處輸入要打開(kāi)的文件名,或者直接按回車,則TurboC會(huì)顯示當(dāng)前工作目錄下所有后綴為.c的文件名,可以通過(guò)光標(biāo)移動(dòng)鍵移到要打開(kāi)的文件上”表示到上級(jí)目錄),按回車鍵就可進(jìn)入編輯窗口,對(duì)此文件進(jìn)行編輯。文件修改完后,若要另外保存文件(原文件還將保存),可在【File】菜單下選擇【W(wǎng)riteto](相當(dāng)于“另存為”),回車后,顯示的窗口,輸入要保存的文件名即可。.編譯和連接編輯好源程序后,應(yīng)對(duì)源程序進(jìn)行編譯、連接。可用以下方法中的任一種。1)按〈F10〉鍵,將亮條移到【Compile】處后按回車鍵(或按〈Alt〉+(C)組合鍵),選擇[ComplietoOBJ],按回車鍵就可進(jìn)行編譯。編譯完成后,選擇[Compile]中的【LinkEXEfile],然后按回車鍵,就可以執(zhí)行連接,見(jiàn)圖3。圖3對(duì)源程序進(jìn)行編譯2)按〈Alt〉+〈C〉組合鍵選中編譯菜單,從中選擇【MakeEXEfile]項(xiàng),按回車鍵后一次完成編譯和連接。3)按(F9)鍵可一次完成編譯和連接。X注意:生成的中間文件札obj和最終文件札exe保存在當(dāng)前工作目錄和配置文件TC-CONFIG(TC的工作環(huán)境配置文件)指定的目錄中。.運(yùn)行DDOS環(huán)境下運(yùn)行。在DOS窗口下,輸入所生成的最終輸出文件名即可運(yùn)行(注意路徑要正確)。2)TC集成環(huán)境下運(yùn)行。按〈F10〉鍵,選擇【Run】(或者直接按〈Alt〉+〈R〉組合鍵),按回車鍵后,在彈出的子菜單上選擇【Run】并按回車鍵即可運(yùn)行。3)直接按(Ctrl)+<F9)組合鍵即可運(yùn)行。實(shí)際上此方法是將編譯、連接和運(yùn)行一起完成。X注意:此時(shí)按〈Alt〉+<F5>組合鍵可觀看運(yùn)行結(jié)果,按任一鍵可返回編輯狀態(tài)。.確立TC工作環(huán)境按〈F10〉鍵,選擇【Options】主菜單后按回車鍵,在彈出的窗口選擇【Directories】項(xiàng),按回車鍵后又彈出的窗口。其中:>Includedirectories:C:\TC\INCLDE表示頭文件的默認(rèn)目錄。>Librarydirectories:C:\TC\LIB表示TC的庫(kù)文件默認(rèn)目錄。>0utputdirectory:C:\TC\Liq.OUT表示用戶可指定自己存放禮exe和*.obj文件的目錄。>TurboCdirectory:C:\TC表示Install建立的默認(rèn)目錄。這個(gè)用戶無(wú)需改。用戶設(shè)置完成后,還應(yīng)當(dāng)把這些信息保存下來(lái)。方法是選擇【Options】主菜單,并按回車鍵后選擇【Saveoptions】子菜單,再按回車鍵后,系統(tǒng)提示輸入配置文件名,直接按回車鍵使用系統(tǒng)默認(rèn)即可。二、VisualC++6.0的使用.VisualC++簡(jiǎn)介VisualC++是Microsoft公司的VisualStudio開(kāi)發(fā)工具箱中的一個(gè)C++程序開(kāi)發(fā)包。VisualStudio提供了一整套開(kāi)發(fā)Internet和Windows應(yīng)用程序的工具,包括VisualC++,VisualBasic,VisualFoxpro,VisualInterDev,VisualJ++以及其他輔助工具,如代碼管理工具VisualSourceSafe和聯(lián)機(jī)幫助系統(tǒng)MSDN。VisualC++包中除包括C++編譯器外,還包括所有的庫(kù)、例子和為創(chuàng)建Windows應(yīng)用程序所需要的文檔。從最早期的L0版本,發(fā)展到最新的6.0版本,VisualC++已經(jīng)有了很大的變化,在界面、功能、庫(kù)支持方面都有許多的增強(qiáng)。最新的6.0版本在編譯器、MFC類庫(kù)、編輯器以及聯(lián)機(jī)幫助系統(tǒng)等方面都比以前的版本做了較大改進(jìn)。VisualC++一般分為三個(gè)版本:學(xué)習(xí)版、專業(yè)版和企業(yè)版,不同的版本適合于不同類型的應(yīng)用開(kāi)發(fā)。實(shí)驗(yàn)中可以使用這三個(gè)版本的任意一種。VisualC++集成開(kāi)發(fā)環(huán)境(IDE)集成開(kāi)發(fā)環(huán)境(IDE)是一個(gè)將程序編輯器、編譯器、調(diào)試工具和其他建立應(yīng)用程序的工具集成在一起的用于開(kāi)發(fā)應(yīng)用程序的軟件系統(tǒng)。VisualC++軟件包中的DeveloperStudio就是一個(gè)集成開(kāi)發(fā)環(huán)境,它集成了各種開(kāi)發(fā)工具和VC編譯器。程序員可以在不離開(kāi)該環(huán)境的情況下編輯、編譯、調(diào)試和運(yùn)行一個(gè)應(yīng)用程序。IDE中還提供大量在線幫助信息協(xié)助程序員做好開(kāi)發(fā)工作。DeveloperStudio中除了程序編輯器、資源編輯器、編譯器、調(diào)試器外,還有各種工具和向?qū)Вㄈ鏏ppWizard和ClassWizard),以及MFC類庫(kù),這些都可以幫助程序員快速而正確地開(kāi)發(fā)出應(yīng)用程序。

向?qū)В╓izard)向?qū)且弧鰝€(gè)通過(guò)一■步步的幫助引導(dǎo)你工作的工具。DeveloperStudio中包含三個(gè)向?qū)В脕?lái)幫助程序員開(kāi)發(fā)簡(jiǎn)單的Windows程序,它們是:AppWizard:用來(lái)創(chuàng)建一個(gè)Windows程序的基本框架結(jié)構(gòu)。AppWizard向?qū)?huì)一步步向程序員提出問(wèn)題,詢問(wèn)他所創(chuàng)建的項(xiàng)目的特征,然后AppWizard會(huì)根據(jù)這些特征自動(dòng)生成一個(gè)可以執(zhí)行的程序框架,程序員然后可以在這個(gè)框架下進(jìn)一步填充內(nèi)容。AppWizard支持三類程序:基于視圖/文檔結(jié)構(gòu)的單文檔應(yīng)用、基于視圖/文檔結(jié)構(gòu)的多文檔應(yīng)用程序和基于對(duì)話框的應(yīng)用程序。也可以利用AppWizard生成最簡(jiǎn)單的控制臺(tái)應(yīng)用程序(類似于DOS下用字符輸入輸出的程序)。ClassWizard:用來(lái)定義AppWizard所創(chuàng)建的程序中的類??梢岳肅lassWizard在項(xiàng)目中增加類、為類增加處理消息的函數(shù)等。ClassWizard也可以管理包含在對(duì)話框中的控件,它可以將MFC對(duì)象或者類的成員變量與對(duì)話框中的控件聯(lián)系起來(lái)。ActiveXControlWizard:用于創(chuàng)建一個(gè)ActiveX控件的基本框架結(jié)構(gòu)。ActiveX控件是用戶自定義的控件,它支持一系列定義的接口,可以作為一個(gè)可再利用的組件。MFC庫(kù)庫(kù)(library)是可以重復(fù)使用的源代碼和目標(biāo)代碼的集合。MFC(MicrosoftFundamentalCasses)是VisualC++開(kāi)發(fā)環(huán)境所帶的類庫(kù),在該類庫(kù)中提供了大量的類,可以幫助開(kāi)發(fā)人員快速建立應(yīng)用程序。這些類可以提供程序框架、進(jìn)行文件和數(shù)據(jù)庫(kù)操作、建立網(wǎng)絡(luò)連接、進(jìn)行繪圖和打印等各種通用的應(yīng)用程序操作。使用MFC庫(kù)開(kāi)發(fā)應(yīng)用程序可以減少很多工作量。.項(xiàng)目開(kāi)發(fā)過(guò)程在一個(gè)集成的開(kāi)發(fā)環(huán)境中開(kāi)發(fā)項(xiàng)目非常容易。Compilerhello.exe hello.exe一個(gè)用C++開(kāi)發(fā)的項(xiàng)目的通用開(kāi)發(fā)過(guò)程可以用左圖表在一個(gè)集成的開(kāi)發(fā)環(huán)境中開(kāi)發(fā)項(xiàng)目非常容易。Compilerhello.exe hello.exeZj,xo建立一個(gè)項(xiàng)目的第一步是利用編輯器建立程序代碼文件,包括頭文件、代碼文件、資源文件等。然后,啟動(dòng)編譯程序,編譯程序首先調(diào)用預(yù)處理程序處理程序中的預(yù)處理命令(如#include,#define等),經(jīng)過(guò)預(yù)處理程序處理的代碼將作為編譯程序的輸入。編譯對(duì)用戶程序進(jìn)行詞法和語(yǔ)法分析,建立目標(biāo)文件,文件中包括機(jī)器代碼、連接指令、外部引用以及從該源文件中產(chǎn)生的函數(shù)和數(shù)據(jù)名。此后,連接程序?qū)⑺械哪繕?biāo)代碼和用到的靜態(tài)連接庫(kù)的代碼連接起來(lái),為所有的外部變量和函數(shù)找到其提供地點(diǎn),最后產(chǎn)生一個(gè)可執(zhí)行文件。一般有一個(gè)makefile文件來(lái)協(xié)調(diào)各個(gè)部分產(chǎn)生可執(zhí)行文件。可執(zhí)行文件分為兩種版本:Debug和Release。Debug版本用于程序的開(kāi)發(fā)過(guò)程,該版本產(chǎn)生的可執(zhí)行程序帶有大量的調(diào)試信息,可以供調(diào)試程序使用,而Release版本作為最終的發(fā)行版本,沒(méi)有調(diào)試信息,并且?guī)в心撤N形式的優(yōu)化。學(xué)員在上機(jī)實(shí)習(xí)過(guò)程中可以采用Debug版本,這樣便于調(diào)試。選擇是產(chǎn)生Debug版本還是Release版本的方法是:在DeveloperStudio中選擇菜單Build|SetActiveConfiguration,在彈出的對(duì)話框中,選擇所要的類型,然后選擇0K關(guān)閉對(duì)話框。VisualC++集成開(kāi)發(fā)環(huán)境中集成了編輯器、編譯器、連接器以及調(diào)試程序,覆蓋了的開(kāi)發(fā)應(yīng)用程序的整個(gè)過(guò)程,程序員不需要脫離這個(gè)開(kāi)發(fā)環(huán)境就可以開(kāi)發(fā)出完整的應(yīng)用程序。.運(yùn)行方法將C程序分為單文件程序和多文件程序。下面分別介紹在VisualC++6.0系統(tǒng)中運(yùn)行這兩類程序的方法。1.運(yùn)行單文件程序所謂單文件程序是指一個(gè)程序只由一個(gè)源文件組成,在初學(xué)C語(yǔ)言時(shí),大多數(shù)情況下編寫的程序都是這類程序。編輯運(yùn)行單文件程序的步驟如下:【第1步】雙擊桌面上的“MicrosoftVisualC++6.0”圖標(biāo),出現(xiàn)如圖1所示的VisualC++6.0系統(tǒng)界面。圖1"Micros。代VisualC++6.0”系統(tǒng)界面【第2步】從File菜單中選擇“New”命令,出現(xiàn)“New”對(duì)話框,從中選擇“Files”選項(xiàng)卡,選擇“C++SourceFile”選項(xiàng),如圖2所示。圖2“New”對(duì)話框

【第3步】單擊右側(cè)的“…”命令按鈕(用于設(shè)置存放C程序文件的文件夾),出現(xiàn)如圖3所示的“ChooseDirectory”對(duì)話框。選取d:盤中的“C實(shí)驗(yàn)教程”文件夾,單擊“0K”命令按鈕返回。Files|Projects|ChooseDirectoryc1—舊ActiveServerPa(豆BinaryFilef^BitmapFileDC/C?<HeaderHlPlC?-?SourceFile汾CursorFileHTMLPageJlconFileX^MacroFile^ResourceScript而ResourceTemph國(guó)SQLScriptFile國(guó)TextFileDirectoryname:D:\UN\06計(jì)算機(jī)CQKCancelNetwork...lln?06Hmeo普建文件夾drives:dSettings\Adm[■d:圖3 MChooseDirectoryM對(duì)話框【第4步】在"File”文本框中輸入“charpl」”(表示以cl.cpp文件存放當(dāng)前程序),如圖4所示,單擊“0K”命令按鈕返回。NewFiles|Projects|Workspaces|OtherDocuments|VAddtoproject:File|chaq)VAddtoproject:File|chaq)1_1Location:|D:\UN\06計(jì)算機(jī)c0BinaryFile8BitmapFile□C/C**HeaderFile(?)C++SourceFile汾CursorFile9HTMLPageJlconFile.:MacroFile^ResourceScript理ResourceTemplate國(guó)SQLScriptFileIBTextFile圖4“New”對(duì)話框【第5步】在出現(xiàn)的charpl_l.cpp編輯框中輸入程序,如圖5所示。注意在輸入程序時(shí)要隨時(shí)保存程序文件(使用“Files”菜單中的“Save”命令,或單擊左上方的保存圖標(biāo)),以免出現(xiàn)意外導(dǎo)致程序丟失。charpl_l.exe_0error(s),0warning(s)|?|\Bui1d/DebugXFindinFiles1\FindinFiles\■||rc上機(jī)...圖5"charpl」.cpp”編輯框

【第6步】在程序輸入完畢,選擇“Build”菜單中的“Compilecl.cpp”命令,在出現(xiàn)的所示提示框中選擇“Yes”。這樣產(chǎn)生了charpl_l.exe可執(zhí)行文件?!镜?步】選擇"Build”菜單中的“Executecl.exe”命令,執(zhí)行該程序?!镜?步】在執(zhí)行程序中輸入:25/執(zhí)行結(jié)果為:最大值:5o最后用戶按任一鍵返回。2運(yùn)行多文件程序所謂多文件程序是指一個(gè)程序中至少包含兩個(gè)文件,可以是兩個(gè)以上文件組成的一個(gè)程序。下面以舉例來(lái)說(shuō)明編譯連接和運(yùn)行這種程序的方法。該程序由三個(gè)文件組成:filel.cpp文件:filel.cpp文件:#include<stdio.h>externvoidf1(),voidf2();main(){fl();f2();filel.cpp文件:#include<stdio.h>staticvoidf3(){printf(nfile2:f3()\nn);)voidfl()(printf("file2:f1()\n");f3();file3.cpp文件:#include<stdio.h>staticvoidf3()(printf("file3:f3()\nn);}voidf2()(printf(nfile3:f2()\n");f3();|運(yùn)行上述程序的步驟如下:【第1步】在某個(gè)指定的目錄下創(chuàng)建好C++的源文件(采用1節(jié)的步驟)。例如,在d:\CBook\student1文件夾中建立好C++的源文件filel.cpp、flle2.cpp和file3.cpp。【第2步】創(chuàng)建一個(gè)新的項(xiàng)目文件。方法是先選擇主菜單中的“File”,在它的下拉菜單中選擇"New”命令,屏幕上出現(xiàn)"New”對(duì)話框,選擇"Projects”選項(xiàng)卡,在"Projectname”選框中輸入所指定項(xiàng)目名字,如“stu”。在“Location”選框中,輸入你要建立項(xiàng)目文件所需的源文件所在的路徑,如"D:\C\stu",如圖9所示。選中“Win32ConsoleApplication”選項(xiàng)(一定要選中此選項(xiàng),表示建立控制臺(tái)應(yīng)用程序,即建立和TurboC運(yùn)行環(huán)境相似的C程序),單擊“OK”命令按鈕。

圖6“New”對(duì)話框的“Projects”選項(xiàng)卡頁(yè)面【第3步】在出現(xiàn)的如圖10所示"Win32ConsoleApplication對(duì)話框中單擊uAnemptyproject”選項(xiàng)(默認(rèn)值),再單擊“Finish”命令按鈕。圖7 °Win32ConsoleApplicationsw對(duì)話框【第4步】在出現(xiàn)如圖11所示的“NewProjectInformation"對(duì)話框中單擊“OK”命令按鈕。圖8"NewProjectInformation”對(duì)話框【第5步】在出現(xiàn)如圖12所示的“stu”項(xiàng)目界面中,選擇Project菜單中“AddToProject”命令,再在出現(xiàn)的子菜單中選擇"Files”命令,出現(xiàn)打開(kāi)文件對(duì)話框,把filel.cpp、file2.cpp和file3.cpp依次添加到該項(xiàng)目中。

圖9"Excise”項(xiàng)目界面【第6步】選擇"Build”菜單中的“BuildExcise.exe”命令進(jìn)行編連,結(jié)果如圖13所示,表示編連正確。圖10圖10stu項(xiàng)目編連結(jié)果【第7步】選擇"Build”菜單中的"ExecuteExcise.exe”命令運(yùn)行程序,即運(yùn)行輸出如下:file2:fl()file2:f3()file3:f2()file3:f3()第三部分上機(jī)實(shí)驗(yàn)內(nèi)容實(shí)驗(yàn)一基礎(chǔ)實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康?ffl熟悉C語(yǔ)言的集成編譯環(huán)境;掌握C程序的編輯、編譯、鏈接以及運(yùn)行等步驟;熟悉常用的調(diào)試信息并根據(jù)系統(tǒng)提示的信息進(jìn)行C程序的修改;掌握查看程序運(yùn)行結(jié)果的方法。Ga熟練掌握c語(yǔ)言中數(shù)據(jù)類型的概念和定義、聲明變量的方式及對(duì)變量賦值的方法。ffl熟練掌握C程序各種運(yùn)算符及其運(yùn)算符的優(yōu)先級(jí)和結(jié)合性、運(yùn)算規(guī)則、運(yùn)算對(duì)象、表達(dá)式(特別是關(guān)系表達(dá)式與邏輯表達(dá)式的使用方法)以及表達(dá)式運(yùn)算過(guò)程中的類型轉(zhuǎn)換。Q熟練掌握scanf(getchar)/printf(putchar)庫(kù)函數(shù)的調(diào)用格式及其使用,能夠正確使用各種格式轉(zhuǎn)換控制符?掌握各種類型數(shù)據(jù)的輸入/輸出的方法。£□體會(huì)編程的方法。Q進(jìn)一步訓(xùn)練C程序的編輯、編譯、鏈接和運(yùn)行的過(guò)程并體會(huì)輸出函數(shù)。二、實(shí)驗(yàn)內(nèi)容.下面C程序的功能是:通過(guò)鍵盤輸入數(shù)據(jù),計(jì)算并輸出這些數(shù)據(jù)的和。(該程序有部分錯(cuò)誤)Sinclude<stdio.h>voidmain(){inta,b,c,suml;floatx,y,z;sum2=0.0;printf(aInputintdata:\nn);scanf(u%d%d%d,>,&a,&b,&c);Sumi=a+b+cprintf(aOutputsuml=%d\nw,suml);printf(uInputfloatdata:\n);scanf("%f,%f,%f”,&x,&y,&z);SUM2+=suml;printf(Outputsum2=%d\n,sum2);)要求:(1)輸入該程序,進(jìn)行編譯、鏈接,在編譯的過(guò)程發(fā)現(xiàn)錯(cuò)誤,根據(jù)信息窗口的提示檢查源程序并進(jìn)行修改,然后再進(jìn)行編譯鏈接,直到成功通過(guò)為止。并解釋錯(cuò)誤的原因。(2)運(yùn)行該程序、察看運(yùn)行結(jié)果并體會(huì)輸入格式。2.計(jì)算三角形面積的程序源代碼:程序有錯(cuò)請(qǐng)檢查錯(cuò)誤。include<math.h>include<stdio.h>voidmain()(floata,b,c,s,area;scanf("%f,%f,%f”,&a,&b,&c);s=(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c));printf("area二%d\n”,area);)將上述文件保存到syl_2.c。這個(gè)源程序沒(méi)有任何語(yǔ)法錯(cuò)誤,能順利通過(guò)編譯和連接。在運(yùn)行時(shí)輸入:2.5,3.6,4.7/輸出結(jié)果為:area=0,為什么?4.輸入下列程序:voidmain()inta,b;floatx,y;charcl,c2;scanf("a=%d,b=%dw,&a,&b);scanf("x=%f,y=%f",&x,&y);scanf(wcl=%cc2=%c”,&cl,&c2);printf("a=%d,b=%d,x=%f,y=%f,cl=%c,c2=%c\n”,a,b,x,y,cl,c2);)'要求:1)為了使變量的值為:a=10,b=255,x=123.456,y=-l.9,cl=a',c2='A',則正確的數(shù)據(jù)輸入形式是什么?體會(huì)輸入格式串,說(shuō)明為什么?2)什么樣的輸入格式最容易發(fā)現(xiàn)存在的錯(cuò)誤?假定仍要得到上面的結(jié)果,你還可以將輸入語(yǔ)句怎樣改寫?.按上面“輸入、調(diào)試、編譯、鏈接、執(zhí)行”程序的步驟,完成下面程序的輸入、編譯、執(zhí)行。voidmain(){intx,y;x=32767;y=x+l;printf(“x=%d,y=%d\n",x,y);}分析上面程序的運(yùn)行結(jié)果(分別在turboc2下及VC++6.0下執(zhí)行),寫出不同環(huán)境下的運(yùn)行結(jié)果;并給出運(yùn)行結(jié)果的說(shuō)明。.編程,實(shí)現(xiàn)取一個(gè)整數(shù)a從右端開(kāi)始的4?7位。[問(wèn)題討論].小結(jié)上機(jī)各個(gè)環(huán)節(jié)所出現(xiàn)的錯(cuò)誤及解決的辦法。.記下在調(diào)試過(guò)程中所發(fā)現(xiàn)的錯(cuò)誤、系統(tǒng)給出的出錯(cuò)信息和對(duì)策。分析討論對(duì)策成功或失敗的原因。.總結(jié)C程序的結(jié)構(gòu)和書寫規(guī)則。實(shí)驗(yàn)二順序結(jié)構(gòu)和選擇結(jié)構(gòu)程序設(shè)計(jì)一、實(shí)驗(yàn)?zāi)康腝了解C語(yǔ)言表示邏輯量的方法(以0代表“假”,以1代表“真”)Q學(xué)會(huì)正確使用邏輯運(yùn)算符和邏輯表達(dá)式;£□熟練掌握if、if…else、if…elseif語(yǔ)句和switch語(yǔ)句格式及使用方法,掌握if語(yǔ)句中的嵌套關(guān)系和匹配原則,利用if語(yǔ)句和switch語(yǔ)句實(shí)現(xiàn)分支選擇結(jié)構(gòu)。二、實(shí)驗(yàn)內(nèi)容.輸入下列程序,找出錯(cuò)誤的地方,并說(shuō)明錯(cuò)誤原因。a)以下程序用來(lái)求一元二次方程實(shí)根,求根之前先判斷有無(wú)實(shí)根,第一次輸入”好2.0,b=-2.0,c=l.0”;第二次輸入“a=L0,b=-4.0,c=4.00",分別輸出正確的結(jié)果。#include“stdio.h"voidmain(){floata,b,c,d,xl,x2;scanf("%f,%f,%f",&a,&b,&c);d=b*b-4*a*c;if(d<0)printf("該方程無(wú)實(shí)根。\n");elseif(fabs(d)<e-6)printf("有兩個(gè)相等的實(shí)根:“);printf(*%5.4f\n”,-b/(2*a));else{x1=(-b+sqrt(d))/(2*a); x2=(-b-sqrt(d))/(2*a);printf("有兩個(gè)不等的實(shí)根:%5.4f\n%5.4f\n”,xl,x2);}}b)以下程序的作用是,根據(jù)從鍵盤輸入的自變量x的值,輸出函數(shù)值y。這個(gè)函數(shù)就是分段表示的符號(hào)函數(shù),即當(dāng)x<0時(shí),尸-1;當(dāng)x=0時(shí),尸0;當(dāng)x>0時(shí),y=lo程序從第3行開(kāi)始有3處錯(cuò)誤,請(qǐng)改正并運(yùn)行之,并說(shuō)明原因,運(yùn)行3次,分別輸入2.30,-4.10,0,輸出正確的函數(shù)值。voidmain(){floatx,y;printf("請(qǐng)輸入x的值:\nx=");scanfx);if(x<0)y=-l;if(x=0)y=0;elsey=l;printf("x=%3.2f,y=%3.2f”,x,y);二、編程題:.編寫程序,輸入三角形三邊a、b、c,判斷a、b、c能否構(gòu)成三角形,若不能則輸出相應(yīng)的信息,若能則判斷組成的是等腰、等邊、直角還是一般三角形。實(shí)驗(yàn)步驟與要求:(1)輸入一組數(shù)據(jù)3,4,8,觀察程序運(yùn)行結(jié)果,并與實(shí)驗(yàn)一中程序2做比較(2)如果程序有誤,可采用“跟蹤打印”的調(diào)試方法,確定錯(cuò)誤的出處。.計(jì)算表達(dá)式(形如3+5,9/3的四則運(yùn)算式)的值.給出一個(gè)百分制成績(jī),要求輸出成績(jī)等級(jí)'A'、'B'、〈'、'D'、'E',其中90分以上為'A',80-89分為'B',70?79分為'C',60?69分為'D',60分以下為'E'。要求分別用if和switch來(lái)實(shí)現(xiàn)。修改程序,使能正確處理任何數(shù)據(jù),當(dāng)輸入數(shù)據(jù)大于100或小于0時(shí),顯示“輸入數(shù)據(jù)錯(cuò)誤”,程序結(jié)束[問(wèn)題討論]1、C語(yǔ)言中如何表示“真”和“假”?2、C編譯系統(tǒng)中如何判斷一個(gè)量的“真”“和“假”?3、如何實(shí)現(xiàn)交換兩個(gè)變量的值?4、什么情況下的if語(yǔ)句可以用switch代替?實(shí)驗(yàn)三、循環(huán)結(jié)構(gòu)程序設(shè)計(jì)一、實(shí)驗(yàn)?zāi)康挠墒炀氄莆誻hile語(yǔ)句、do...while語(yǔ)句和for語(yǔ)句格式及使用方法,掌握三種循環(huán)控制語(yǔ)句的循環(huán)過(guò)程以及循環(huán)結(jié)構(gòu)的嵌套,利用循環(huán)語(yǔ)句實(shí)現(xiàn)循環(huán)結(jié)構(gòu)。由掌握簡(jiǎn)單、常用的算法,并在編程過(guò)程中體驗(yàn)各種算法的編程技巧。進(jìn)一步學(xué)習(xí)調(diào)試程序,掌握語(yǔ)法錯(cuò)誤和邏輯錯(cuò)誤的檢查方法。二、實(shí)驗(yàn)內(nèi)容.編寫程序:根據(jù)公式 + ,“???輸出n的值。6VrT了要求:1)變量n為單精度類型,n為整型;2)計(jì)算當(dāng)n的取值分別為20,50,100,200時(shí)的n值,說(shuō)明什么問(wèn)題?3)修改程序,不給出n值,而改為求n值,直到最后一項(xiàng)的數(shù)值小于10'為止。4)對(duì)修改后的程序,輸出兀值以及總的項(xiàng)數(shù)n。輸出格式為:n=值;n=值。.從鍵盤輸入一個(gè)0?1000之間的任意整數(shù),輸出該整數(shù)的所有因子(例如:輸入12,其因子為1,2,3,4,6,12)o要求:1)采用while循環(huán)語(yǔ)句實(shí)現(xiàn)。2)輸出格式為:Input:12Output:1,2,3,4,6,123計(jì)算并輸出1000以內(nèi)最大的10個(gè)素?cái)?shù)以及它們的和。要求:1)在程序內(nèi)部加必要的注釋。2)由于偶數(shù)不是素?cái)?shù),可以不考慮對(duì)偶數(shù)的處理。3)雖然在1000以內(nèi)的素?cái)?shù)超過(guò)10個(gè),但是要對(duì)1000以內(nèi)不夠10個(gè)素?cái)?shù)的情況進(jìn)行處理。4)輸出形式為:素?cái)?shù)1+素?cái)?shù)2+素?cái)?shù)+…+素?cái)?shù)10=總和值。4.編程實(shí)現(xiàn):由用戶從鍵盤輸入一串字符(以回車鍵結(jié)束),統(tǒng)計(jì)其中數(shù)字、大、小寫字母、空格、其它字符的個(gè)數(shù)。(用系統(tǒng)提供的函數(shù))要求:1)通過(guò)鍵盤輸入字符。2)給出相應(yīng)的輸入/輸出信息提示。并按照數(shù)字、大寫字母、小寫字母、空格、其它字符數(shù)的順序輸出結(jié)果。6.請(qǐng)編程:將大于整數(shù)m且緊靠m的k個(gè)素?cái)?shù)輸出。例如:若輸入17,5,則應(yīng)輸出:19,23,29,31,37o7..計(jì)算S=f(-n)+f(-n+l)+...+f(O)+f(l)+f(2)+…+f(n)的值。例如,當(dāng)n為5時(shí),函數(shù)值應(yīng)為:10.407143。|-(x+l)/(x-2) x>0f(x)=T0 x=0或x=2kx』)/(x-2) x<08.用C語(yǔ)言編程實(shí)現(xiàn)模擬電子時(shí)鐘顯示:要求顯示在屏幕上的第15行30列上,其格式:小時(shí):分鐘:秒{提示:在Turboc2或WIN_TC環(huán)境下,用到以下函數(shù):gotoxy(x,y);光標(biāo)定位clrscr();清屏,包含在#include<conio.h>取系統(tǒng)時(shí)間: unsignedcharhour,min,sec;structtimet;;/*包括在#include<dos.h>*/hour=t.ti_hour;min=t.ti_min;sec=t.ti_sec;在VC++環(huán)境下,用到以下函數(shù):structtm*ptr;time_tt;t=time(NULL);ptr=localtime(&t);}[問(wèn)題討論]1、c程序可以用幾種方法實(shí)現(xiàn)循環(huán)結(jié)構(gòu)?2、while(1)代表什么意思?3、用for語(yǔ)句可以代替d。whiIe語(yǔ)句嗎?4、While、dowhile、for哪一個(gè)更靈活些?實(shí)驗(yàn)四、函數(shù)一、實(shí)驗(yàn)?zāi)康?掌握C函數(shù)的定義方法、函數(shù)的調(diào)用方法、參數(shù)說(shuō)明以及返回值。掌握實(shí)參與形參的對(duì)應(yīng)關(guān)系以及參數(shù)之間的“值傳遞”的方式;掌握函數(shù)的嵌套調(diào)用及遞歸調(diào)用的設(shè)計(jì)方法。.掌握全局變量和局部變量、動(dòng)態(tài)變量與靜態(tài)變量的概念和使用方法。.在編程過(guò)程中加深理解函數(shù)調(diào)用的程序設(shè)計(jì)思想。.掌握自定義頭文件的方法,學(xué)會(huì)建立和調(diào)試多文件程序二、實(shí)驗(yàn)內(nèi)容.遞歸與非遞歸函數(shù)編寫一個(gè)函數(shù),求從〃個(gè)不同的數(shù)中取r個(gè)數(shù)的所有選擇的個(gè)數(shù)。其個(gè)數(shù)值為:"r!*("-r)!其中:〃!= (〃-2)*…*1。[測(cè)試數(shù)據(jù)]:輸入:53輸出:10輸入:1020輸出:InputInvalid!輸入:-14輸出:InputInvalid!輸入:503輸出:19600榆入:00程序結(jié)束[實(shí)現(xiàn)要求]:分別用遞歸和非遞歸兩種方式完成程序設(shè)計(jì):主程序中設(shè)計(jì)一個(gè)循環(huán),不斷從輸入接收n和r的值,計(jì)算結(jié)果并榆出,當(dāng)用戶輸入00時(shí),程序結(jié)束;(3)能檢查輸入數(shù)據(jù)的合法性,要求n>=l并且n〉=r;(4)上面的測(cè)試數(shù)據(jù)能得到正確結(jié)果。[實(shí)驗(yàn)步驟](1)利用一個(gè)非遞歸函數(shù)fh(intn)計(jì)算n!,利用另一個(gè)函數(shù)Cnr(intn,intr)計(jì)算C;,在該函數(shù)中調(diào)用fh(),問(wèn)題:你打算用什么樣的變量類型來(lái)存放〃!函數(shù)返回的值?注意各種數(shù)據(jù)類型的內(nèi)存字長(zhǎng)不同,整數(shù)能存放的數(shù)據(jù)范圍有限,你如何解決?(2)利用一個(gè)遞歸函數(shù)實(shí)現(xiàn),實(shí)現(xiàn)時(shí)利用公式:C(n,r)=C(n,r-l)*(n-r+l)/r遞歸實(shí)現(xiàn).[實(shí)現(xiàn)提示]:⑴可以用double數(shù)據(jù)類型來(lái)存放函數(shù)的計(jì)算結(jié)果⑵遞歸結(jié)束條件:如果r=0,則C(n,r)=1如果r=1,則C(n,r)=n.將上面的程序改成多文件結(jié)構(gòu)[實(shí)驗(yàn)要求]將上面用非遞歸方式寫成的程序改成用多文件結(jié)構(gòu)表示。要求將main。函數(shù)放在一個(gè)文件中,將另外兩個(gè)函數(shù)放在另一個(gè)文件中,將函數(shù)原型說(shuō)明放在一個(gè)頭文件中。建立一個(gè)項(xiàng)目,將這三個(gè)文件加到你的項(xiàng)目中,編譯連接使你的程序正常運(yùn)行。[實(shí)驗(yàn)步驟]⑴新建一個(gè)項(xiàng)目,命名為“multifile”(2)用File|New創(chuàng)建一個(gè)新的“C++SourceFile”,命名為main.cpp(3)用File|New創(chuàng)建一個(gè)新的“C++SourceFile",命名為func.cpp(4)用File|New創(chuàng)建一個(gè)新的“C/C++HeaderFile”,命名為func.h(5)用File|Open打開(kāi)你前面實(shí)驗(yàn)中用非遞歸方式求C(n,r)的C++源程序文件,將其中的主函數(shù)部分拷貝到main.cpp中,將其中的兩個(gè)函數(shù)實(shí)現(xiàn)放到func.cpp中,再將兩個(gè)函數(shù)的原型寫到ftinc.h中(6)在main.cpp中包含進(jìn)頭文件:#include“func.h"(7)編譯連接該項(xiàng)目,運(yùn)行它。你得到的結(jié)果應(yīng)該和上一個(gè)實(shí)驗(yàn)一樣。.編寫一個(gè)函數(shù)primeNum(intnum),它的功能是判別一個(gè)數(shù)是否為素?cái)?shù)。如果num是素?cái)?shù),返回該數(shù);否則返回。宿。要求:1)在主函數(shù)輸入一個(gè)整數(shù)num,調(diào)用該函數(shù)后,輸出num是否是素?cái)?shù)的信息。輸出格式為:numisprime或numisnotprime。2)分別輸入以下數(shù)據(jù):0,1,2,5,9,13,59,121,運(yùn)行程序并檢查結(jié)果是否正確。.編寫函數(shù)computNum(intnum),它的功能是計(jì)算任意輸入的一個(gè)正整數(shù)的各位數(shù)字之和,結(jié)果由函數(shù)返回(例如:輸入數(shù)據(jù)是123,返回值為6)。要求:num由主函數(shù)輸入,調(diào)用該函數(shù)后,在主函數(shù)內(nèi)輸出結(jié)果。.請(qǐng)編寫一個(gè)函數(shù)intfun(intx),它的功能是:判斷整數(shù)x是否是同構(gòu)數(shù)。若是同構(gòu)數(shù),函數(shù)返回1;否則返回0。所謂“同構(gòu)數(shù)”是指這樣的數(shù),它出現(xiàn)在它的平方數(shù)的右邊。例如:輸入整數(shù)5,5的平方數(shù)是25,5是25中右側(cè)的數(shù),所以5是同構(gòu)數(shù)。[問(wèn)題討論]1、為什么要在編程時(shí)使用函數(shù)?有什么好處?.編寫和調(diào)試包含多模塊的程序時(shí),容易出現(xiàn)什么樣的錯(cuò)誤?根據(jù)自己的實(shí)踐總結(jié)一下。.多文件結(jié)構(gòu)中頭文件的作用是什么?4,將程序劃分為多個(gè)文件有什么好處?.你對(duì)各種數(shù)據(jù)類型的字長(zhǎng)是否有了新的認(rèn)識(shí)?5,遞歸函數(shù)的書寫要點(diǎn)是什么?.你覺(jué)得遞歸和非遞歸函數(shù)哪種好些?實(shí)驗(yàn)五數(shù)組一、實(shí)驗(yàn)?zāi)康摹辍跽莆諗?shù)組的基本概念,包括:數(shù)組的定義、數(shù)組的類型、數(shù)組的初始化、數(shù)組的賦值、數(shù)組元素下標(biāo)的范圍、數(shù)組元素的正確以及引用數(shù)組元素的輸入/輸出?!辍跽莆兆址麛?shù)組與字符串的使用方法。理解字符數(shù)組與其它數(shù)組的區(qū)別、理解字符串及其特點(diǎn)。掌握常用的字符串處理庫(kù)函數(shù)的用法并清楚對(duì)字符串的簡(jiǎn)單處理。卬掌握與數(shù)組相關(guān)的算法,包括排序算法和查找算法等。二、實(shí)驗(yàn)內(nèi)容1、編寫程序:輸入十進(jìn)制數(shù),將十進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù)2.編程實(shí)現(xiàn):對(duì)任意一個(gè)一維數(shù)組,從中找出數(shù)組元素的最大值和最小值。要求:(1)數(shù)組為整型數(shù)組(10個(gè)元素)。(2)使用scanf函數(shù)實(shí)現(xiàn)數(shù)組元素的輸入。在輸入前給出必要的提示。(3)輸出時(shí)給出必要的說(shuō)明,首先輸出原始的10個(gè)元素,換行后輸出最大值以及最大值在數(shù)組中的位置、最小值以及最小值在數(shù)組中的位置。(4)如果現(xiàn)改為20個(gè)元素的數(shù)組,怎樣修改程序?修改程序后,運(yùn)行程序進(jìn)行檢查。如果需要數(shù)組元素不斷改變,應(yīng)怎樣修改程序?2.編程實(shí)現(xiàn):在給定的字符串中查找滿足條件的第一個(gè)字符。要求:(1)字符串采用初始化的方式處理。(2)通過(guò)scanf函數(shù)讀入一個(gè)任意字符。(3)在字符串中查找該字符,如果存在該字符,輸出該字符在字符串中的位置以及相應(yīng)的說(shuō)明。如果不存在該字符,則要給出相應(yīng)的信息。3.編程實(shí)現(xiàn):首先任意輸入一個(gè)大于2且小于10的整數(shù)n,再輸入一個(gè)由n決定的二維整型數(shù)組(nXn),形成nXn階矩陣,將矩陣中最大元素所在的行和最小元素所在的行對(duì)調(diào)后,再輸出該矩陣(注意:數(shù)組不允許動(dòng)態(tài)定義)。例如:原始數(shù)據(jù):n=4結(jié)果數(shù)據(jù):12 3 4811141635 9 1035 9 10811141612 3 41527615 2 7 6要求:1)本題中所涉及到的循環(huán)都采用for語(yǔ)句。2)在輸入/輸出時(shí)進(jìn)行必要的說(shuō)明。3)對(duì)輸入的2?10之間的整數(shù)(例如4)以n=4的格式輸出。4)輸入一個(gè)nXn矩陣(假定最大值與最小值不在同一行上),輸出原始矩陣數(shù)據(jù)(按上述矩陣形式)。5)查找最大值與最小值,將矩陣中最大元素所在的行和最小元素所在的行對(duì)調(diào),輸出對(duì)調(diào)后的矩陣數(shù)據(jù)。6)修改程序,對(duì)最大值與最小值可能出現(xiàn)在一行上的情況做出說(shuō)明。7)對(duì)n為3,4,5時(shí),輸入數(shù)組元素是要注意哪些問(wèn)題?執(zhí)行程序,檢查程序的正確性。4.使用二維數(shù)組設(shè)計(jì)一個(gè)打印“楊輝三角形”的程序。TOC\o"1-5"\h\z1 2 113 3 11 4 6 4 11 5 10105 1.編程實(shí)現(xiàn)“折半查找”的過(guò)程。折半查找的處理過(guò)程是:在一個(gè)數(shù)據(jù)已排好序的數(shù)組中,首先比較關(guān)鍵字與數(shù)組中間的元素,如果兩者相等,則查找結(jié)束;如果前者比后者小,則要查找的數(shù)據(jù)必然在數(shù)組的前半部,此后只需在數(shù)組的前半部中繼續(xù)折半查找;如果前者的數(shù)值比后者大,則要查找的數(shù)據(jù)必然在數(shù)組的后半部,此后只需在數(shù)組的后半部繼續(xù)進(jìn)行折半查找。要求:1)設(shè)定一個(gè)數(shù)組存放20個(gè)數(shù)據(jù),用賦初值的方法在程序中給出(假設(shè)這些數(shù)據(jù)已排序)。2)用scant函數(shù)輸入一個(gè)要找的數(shù)。3)對(duì)查找的結(jié)果給出相應(yīng)的說(shuō)明,如果找到該數(shù),則給出該數(shù)是數(shù)組中第幾個(gè)元素。如果該數(shù)不在數(shù)組中,則輸出“無(wú)此數(shù)”信息。4)任意輸入一些數(shù)據(jù),檢查程序的正確性。5)修改程序,設(shè)定輸入的數(shù)據(jù)是無(wú)序的,采用scanf函數(shù)的形式輸入,首先要對(duì)這些無(wú)序的數(shù)據(jù)進(jìn)行排序,然后再采用“折半查找”。最后通過(guò)測(cè)試幾組差別較大的數(shù)據(jù)檢查程序的正確性。6)修改程序,改為函數(shù)調(diào)用的形式。編寫一個(gè)選擇法排序函數(shù),對(duì)無(wú)序數(shù)據(jù)進(jìn)行排序;編寫一個(gè)查找函數(shù)對(duì)已排好序的數(shù)據(jù)進(jìn)行查找。在主函數(shù)中輸入數(shù)據(jù)(無(wú)序),調(diào)用上述函數(shù),輸出結(jié)果。.編程實(shí)現(xiàn):三個(gè)學(xué)生、五門課程的成績(jī)分別存放在4X6矩陣的前3X5列,計(jì)算出每個(gè)學(xué)生的平均成績(jī)存放在該數(shù)組的最后一列的對(duì)應(yīng)行上。計(jì)算單科的成績(jī)總和存放在最后一行的對(duì)應(yīng)列上,并輸出單科成績(jī)的平均分。輸入/輸出格式舉例如下:Input(輸入成績(jī)):6587685678<cr>8394678591<cr>7175698489<cr>Output(輸出結(jié)果)658768 56 78 70.5839467 85 91 84.0717569848977.5219.0256.0204.0258.0232.0073.085.3 68.086.077.3要求:I)數(shù)組類型為實(shí)型,輸入成績(jī)由scanf函數(shù)實(shí)現(xiàn)。2)輸出已輸入的原始成績(jī)數(shù)據(jù)(3X5)o3)計(jì)算每個(gè)學(xué)生的平均成績(jī)以及單科的成績(jī)總和并按要求填入到數(shù)組中,輸出填入結(jié)果后的數(shù)組(4X6)?4)計(jì)算單科平均成績(jī)后輸出。5)修改程序,采用函數(shù)調(diào)用的方式實(shí)現(xiàn)。a)編寫一個(gè)函數(shù)輸入數(shù)據(jù),函數(shù)名為enter()。功能是輸入原始學(xué)生成績(jī)。b)2)編寫一個(gè)函數(shù)計(jì)算平均值,函數(shù)名為aver()。功能是計(jì)算平均成績(jī)(包括每個(gè)學(xué)生的平均成績(jī)和每個(gè)單科的平均成績(jī))。并將計(jì)算結(jié)果分別填入4X6矩陣的最后一列和最后一行中。c)編寫一個(gè)函數(shù)輸出數(shù)據(jù),函數(shù)名為outa門~ay()。功能是輸出數(shù)組元素。d)在主調(diào)函數(shù)中調(diào)用上述三個(gè)函數(shù)。e)如果想將2)再進(jìn)一步劃分,應(yīng)如何處理?.編程函數(shù)加leteARR(int*arr,intn)的功能是將指定的有序數(shù)組壓縮成諸元素互不相同的有序數(shù)組,即相同數(shù)只保留一個(gè),多余的被刪除。函數(shù)返回值是互不相同的元素的個(gè)數(shù)。[問(wèn)題討論]1、選擇法排序與冒泡法排序的區(qū)別在哪?2、數(shù)組中各元素的類型是否可以不一樣?實(shí)驗(yàn)六指針一、實(shí)驗(yàn)?zāi)康恼莆罩羔樀幕靖拍詈突居梅?。包括:變量的地址和變量的值,指針變量的說(shuō)明、指針變量的初始化、指針的內(nèi)容與定義格式、指針的基本運(yùn)算等。掌握數(shù)組與指針的關(guān)系并能夠利用指針解決數(shù)組的相關(guān)問(wèn)題。掌握字符串與指針的關(guān)系并能夠利用指針處理字符串的問(wèn)題。掌握指針與函數(shù)的關(guān)系并能夠利用指針處理函數(shù)問(wèn)題。J了解指向指針的指針的概念及其使用方法。能夠使用指針進(jìn)行程序設(shè)計(jì)。二、實(shí)驗(yàn)內(nèi)容.數(shù)組排序:從鍵盤讀入若干整數(shù),將它們按由低到高排序輸出。[測(cè)試數(shù)據(jù)]:程序先輸出: Pleaseinputarraynumber:用戶輸入: 5程序再輸出:Pleaseinputalltheinteger:用戶輸入: 300 700600450500程序輸出: 300450500600700[實(shí)現(xiàn)要求]:(1)用一個(gè)數(shù)組存放各個(gè)整數(shù);(2)在主函數(shù)main。中實(shí)現(xiàn)數(shù)據(jù)的輸入和榆出操作,并用一個(gè)函數(shù)實(shí)現(xiàn)對(duì)數(shù)組元素的排序操作。(3)排序函數(shù)調(diào)用另一個(gè)函數(shù)swap。實(shí)現(xiàn)兩個(gè)數(shù)組元素的交換??梢允褂弥羔?、引用兩種方式實(shí)現(xiàn)函數(shù)參數(shù)的傳遞:swap(int*pa,int*pb);swap(int&a,int&b);[實(shí)驗(yàn)步驟](1)用數(shù)組實(shí)現(xiàn)程序要求說(shuō)明:用一個(gè)長(zhǎng)度為10的數(shù)組存放待排序的數(shù)據(jù),數(shù)組的定義為intiArray[10];數(shù)組排序函數(shù)的原型為:voidsort(intnum,intiArray[]);其中num表示數(shù)組元素的個(gè)數(shù),iArray是數(shù)組。(2)用動(dòng)態(tài)申請(qǐng)空間的方式實(shí)現(xiàn)程序要求。說(shuō)勿;使用指針來(lái)實(shí)現(xiàn)前面數(shù)組的功能int*piArray;piArray=newint[num];其中數(shù)組的大小num需要由用戶預(yù)先輸入。[思考問(wèn)題](1)上面兩種實(shí)現(xiàn)方式對(duì)程序的改動(dòng)大嗎?(2)嘗試用不同的方式訪問(wèn)數(shù)組中的元素iArray[i],*(iArray+i),piArray[i],*(piArray+i),3)iArray和piArray有何共同點(diǎn)?.字符排序修改上面的程序,將數(shù)組的操作改為對(duì)字符串操作,即從鍵盤輸入一串字符,將它們存放在字符數(shù)組中(形成一個(gè)字符串),然后對(duì)字符數(shù)組中的各個(gè)字符排序。[測(cè)試數(shù)據(jù)]:輸入內(nèi)容:kapdobc輸出內(nèi)容:abcdkop[實(shí)現(xiàn)要求]:(1)用字符數(shù)組代替上一個(gè)實(shí)驗(yàn)的整數(shù)數(shù)組;(2)不要先輸入字符串的長(zhǎng)度,在程序中自動(dòng)計(jì)算出字符串的長(zhǎng)度。[實(shí)現(xiàn)提示]:(1)字符串的輸入輸出操作可以簡(jiǎn)化,不用一個(gè)字符一個(gè)字符的輸入輸出(2)字符的長(zhǎng)度可以借助于預(yù)定義的函數(shù)strlen。求出,該函數(shù)所在的庫(kù)函數(shù)名為string.h[思考問(wèn)題]對(duì)字符的比較遵循什么樣的約定(為什么字符a比字符b小)?.字符串操作要求和上面類似,但數(shù)組中的元素變?yōu)樽址?。程序?qū)σ延械淖址M(jìn)行排序,并輸出排序后的結(jié)果。字符串?dāng)?shù)組中的元素為:January,February,March,April,May,June,July,September[測(cè)試數(shù)據(jù)]:程序直接輸出排序后的結(jié)果:MayJulyJuneAprilMarchJanuaryFebrurarySeptember[實(shí)現(xiàn)要求]:(1)排序的規(guī)則為:先比較兩個(gè)字符串的長(zhǎng)度,長(zhǎng)度短的字符串排在前面,如果長(zhǎng)度相等,則比較字符串的值,按從小到大排序榆出。(2)用字符串?dāng)?shù)組存放各字符串,并在定義數(shù)組時(shí)對(duì)其進(jìn)行初始化(3)利用庫(kù)函數(shù)實(shí)現(xiàn)排序操作.上機(jī)完成下列函數(shù)的實(shí)現(xiàn):.請(qǐng)編寫voidfun(intx,intppL],int*n)其功能是:求出能整除x的各整數(shù)并放在PP數(shù)組中,這些除數(shù)由n返回,本函數(shù)x限制在1到100之間,如x=20,有6個(gè)數(shù)能整除它,分別是1,2,4,5,10,20,#defineM50voidfun(intx,intpp[],int*n)voidmain()(intx,aa[M],n,i;printf("\nPleaseenteraintegernumbers:\nz/);scanf(“刎",&x);fun(x,aa,&n);for(i=0;i<n;i++)printf("%d,”,aa[i]);.編寫函數(shù)fun,a數(shù)組中n個(gè)整數(shù)從小到大排列,函數(shù)功能是:從a中刪除第一個(gè)遭到與x值相同的數(shù)組元素,刪除后a的數(shù)組仍然由小到大有序排列#defineM20voidfun(inta[],intx,int*n)voidmain()(intk,m,x,aa[M];printf(z,\nPleaseenteranumber:〃);scanf(〃%d”,&m);printf(z,\nPleaseenter%dnumbers(fromsmalltolarge):m);for(k=0;k<m;k++)scanf("%d”,&aa[k]);printf('\nEnterx:");scanf(〃%d”,&x);fun(aa,x,&m);printf(z/\nAfterdeleter:\nz,);for(k=0;k<m;k++)printf(z/%d,”,aa[k]);).編函數(shù):從所讀入的若干字符中(以****為結(jié)束輸入的標(biāo)志)中找出長(zhǎng)度最大的字符串,并輸出#include<string.h>voidfun(char(*a)[81],intnum,char**max)}voidmain()(charss[10][81],*ps;intn,i=0;gets(ss[i]);puts(ss[i]);while(!strcmp(ss[i],"****")==0){i++;gets(ss[i]);)n=i;fun(ss,n,&ps);printf("\nmax=%s\n〃,ps);).編一個(gè)函數(shù)fun(int*a,intn,int*odd,int*even),函數(shù)的功能是分別求出數(shù)組中所有奇數(shù)之和以及所有偶數(shù)之和。形參n給了數(shù)組中數(shù)據(jù)的個(gè)數(shù):利用指針。dd返回奇數(shù)之和,利用指針even返回偶婁這和。例如:數(shù)組中的值依次為:1,8,2,3,11,6;則利用指針odd返回奇數(shù)之和24;利用指針even返回偶數(shù)之和8。ttdefineN20fun(int*a,intn,int*odd,int*even)main(){inta[N]={l,9,2,3,11,6},i,n=6,odd,even;printf(z,Theoriginaldatais:\n〃);for(i=0;i<n;i++)printf*(a+i));fun(a,n,&odd,&even);printf("Thesumofoddnumbers:%d\n/z,odd);printf(z,Thesumofevennumber:%d\nz/,even);).編寫函數(shù)merge(inta[],intn,intb[],intm,int*c),其功能是將兩個(gè)從小到大有序數(shù)組,a和b復(fù)制合并出一個(gè)有序整數(shù)序列c,其中形參n和m分別是數(shù)組a和b的元素個(gè)數(shù).實(shí)驗(yàn)七結(jié)構(gòu)體和共用體一、實(shí)驗(yàn)?zāi)康?理解結(jié)構(gòu)體類型的含義;掌握結(jié)構(gòu)體類型變量的定義方法和使用;結(jié)構(gòu)體類型變量的說(shuō)明以及初始化方法。.理解結(jié)構(gòu)體與數(shù)組的區(qū)別;掌握結(jié)構(gòu)體類型數(shù)組的概念、定義和使用方法。.掌握鏈表的概念,初步學(xué)會(huì)對(duì)鏈表進(jìn)行操作,包括建立鏈表、輸出鏈表。.掌握共用體的概念與使用。二、實(shí)驗(yàn)內(nèi)容,1).編寫程序,輸入今天的日期,計(jì)算今天在本年中是第幾天。要求:a)建立結(jié)構(gòu)體變量。b)利用scanf函數(shù)輸入年、月、日。c)輸出格式是:Thedayisthe?day.d)修改程序,判斷某天是某年的第幾天。(提示:需要對(duì)閏年做判定).編程實(shí)現(xiàn):在一個(gè)結(jié)構(gòu)數(shù)組中,存有三個(gè)人的姓名和年齡,輸出三人中年齡居中者的姓名和年齡。要求:a)利用指針實(shí)現(xiàn)處理過(guò)程。b)三個(gè)人的數(shù)據(jù)采用初始化方式輸入。c)修改程序,將(2)改為采用scanf函數(shù)讀入方式。.編寫一個(gè)函數(shù)inGrade(),其功能是輸入學(xué)生數(shù)據(jù);編寫函數(shù)aveGrade(),其功能是計(jì)算學(xué)生的平均成績(jī);編寫函數(shù)maxGrade(),其功能是查找平均成績(jī)最高的學(xué)生的數(shù)據(jù);編寫函數(shù)outGrade(),其功能是輸出學(xué)生的成績(jī)數(shù)據(jù)。現(xiàn)有15名學(xué)生的數(shù)據(jù)信息,每個(gè)學(xué)生的數(shù)據(jù)信息包括學(xué)號(hào)、姓名、4門課程(programmerdatabase、network,operat-system)的成績(jī)。要求:a)首先在主函數(shù)中調(diào)用函數(shù)inGrade()從鍵盤輸入15個(gè)學(xué)生數(shù)據(jù)。b)其次在主函數(shù)中調(diào)用函數(shù)aveGrade()計(jì)算15名學(xué)生的4門課程的平均成績(jī)。c)然后在主函數(shù)中調(diào)用maxGrade()查找平均成績(jī)最高的學(xué)生的數(shù)據(jù)(包括學(xué)號(hào)、姓名、4門課的成績(jī)、平均分)。d)最后在主函數(shù)中調(diào)用函數(shù)。utGrade(),輸出該學(xué)生的數(shù)據(jù)信息。e)修改程序,將函數(shù)maxGrade()的功能改為對(duì)所有學(xué)生按平均成績(jī)進(jìn)行排序。并在主函數(shù)中調(diào)用它,之后輸出所有學(xué)生的已排序的數(shù)據(jù)表。4)編寫程序:建立一個(gè)學(xué)生數(shù)據(jù)鏈表,每個(gè)結(jié)點(diǎn)信息包括如下內(nèi)容:學(xué)號(hào)、姓名、性別、年齡和專業(yè)。對(duì)該鏈表作如下處理:(1)輸入一個(gè)學(xué)號(hào),如果鏈表中的結(jié)點(diǎn)中包含該學(xué)號(hào),則將此結(jié)點(diǎn)刪去(最多只有一個(gè)節(jié)點(diǎn))。(2)輸入一個(gè)專業(yè),如果鏈表中的結(jié)點(diǎn)包含該專業(yè),則將此結(jié)點(diǎn)刪去(可能有多個(gè)節(jié)點(diǎn))。[問(wèn)題討論]1、結(jié)構(gòu)體是否相當(dāng)于其他高級(jí)語(yǔ)言中的“記錄”?2、如何定義結(jié)構(gòu)體變量?類型名如何定義?3、用鏈表可以實(shí)現(xiàn)動(dòng)態(tài)存儲(chǔ)分配,它的“頭指針”變量用來(lái)放什么?4、如何建立一個(gè)鏈表?實(shí)驗(yàn)八文件一、實(shí)驗(yàn)?zāi)康?、掌握文件與文件指針的概念;2、學(xué)會(huì)使用文件的打開(kāi)、關(guān)閉操作;3、掌握文件的讀、寫操作函數(shù);4、掌握文件的定位操作。二、實(shí)驗(yàn)內(nèi)容一、編寫程序,然后上機(jī)調(diào)試運(yùn)行.從鍵盤讀入若干個(gè)字符串,刪除每個(gè)字符串中的指定字符后,將該字符串保存到正文文件text.txt中。若讀入一個(gè)空串,則結(jié)束程序。.編程實(shí)現(xiàn):利用文件送至對(duì)數(shù)據(jù)信息的處理?,F(xiàn)有5名學(xué)生的數(shù)據(jù)信息,每個(gè)學(xué)生的數(shù)據(jù)信息包括學(xué)號(hào)、姓名、4門課程(programmer>databasenetworkoperat-system)的成績(jī),數(shù)據(jù)信息見(jiàn)下表。NumNameprogrammerdatabaseoperat-systemnetwork0113Zhang898290750114LI677880580115WANG897560500116ZHAO90707072要求:1)將上述原始數(shù)據(jù)寫入磁盤文件studata中。2)輸出studata文件中的數(shù)據(jù)。檢查輸入數(shù)據(jù)的正確性。如果有錯(cuò)誤,需要重新輸入數(shù)據(jù);3)根據(jù)studata文件中的數(shù)據(jù),計(jì)算每個(gè)學(xué)生的平均成績(jī)并將學(xué)號(hào)、姓名以及對(duì)應(yīng)的平均成績(jī)寫入文件avedata中。4)檢查avedata文件的數(shù)據(jù)的正確性。5)根據(jù)avedata文件中的平均成績(jī)進(jìn)行排序,排序的結(jié)果存放于sortdata文件中。6)檢查sortdata文件數(shù)據(jù)的正確性,并輸出第一名同學(xué)的學(xué)號(hào)、名字和平均成績(jī)。7)在sortdata文件內(nèi)查找學(xué)號(hào)為n(n由scanf輸入)的學(xué)生信息,如果找到,輸出該信息之后刪除該學(xué)生信息。8)檢查sortdata文件的數(shù)據(jù)正確性。9)修改程序,參考試驗(yàn)七(3.)的處理方法,將該程序改寫為函數(shù)實(shí)現(xiàn)。第四部分C語(yǔ)言練習(xí)題第1、2、3章C語(yǔ)言入門單項(xiàng)選擇題LC語(yǔ)言源程序的基本單位是( )A.過(guò)程B.函數(shù)C.子程序D.標(biāo)識(shí)符C語(yǔ)言規(guī)定:在一個(gè)源程序中,main函數(shù)的位置()A,必須在最開(kāi)始 B,必須在系統(tǒng)調(diào)用的庫(kù)函數(shù)的后面C.可以任意 D.必須在最后一個(gè)C程序的執(zhí)行是從()A.本程序的main函數(shù)開(kāi)始,到main函數(shù)結(jié)束B.本程序的main函數(shù)開(kāi)始,到本程序文件的最后一個(gè)函數(shù)結(jié)束C.本程序文件的第一個(gè)函數(shù)開(kāi)始,到本程序文件的最后一個(gè)函數(shù)結(jié)束D.本程序的第一個(gè)函數(shù)開(kāi)始,到本程序的main函數(shù)結(jié)束C語(yǔ)言和數(shù)據(jù)定義的最后()A.必須有一個(gè)句號(hào)B.必須有一個(gè)逗號(hào)C.必須有一個(gè)分號(hào) D.無(wú)需任何標(biāo)點(diǎn)符號(hào)C語(yǔ)言的標(biāo)識(shí)符的第一個(gè)字符()A.必須為字母 B.必須為下劃線C.必須為字母或下劃線D,以是字母、數(shù)字和下劃線中任一種字符C語(yǔ)言中最簡(jiǎn)單的數(shù)據(jù)類型包括()A.整型、實(shí)型、邏輯型B.整型、實(shí)型、字符型B.整型、字符型、邏輯型D.整型、實(shí)型、字符型、邏輯型7.在C語(yǔ)言中(以16位PC機(jī)為例),5種基本數(shù)據(jù)類型的存儲(chǔ)空間長(zhǎng)的排列順序?yàn)椋ǎ〢.char<int<longf1oat<doub1e B.char=int<long<float<doubleC.char<int<long=float=doubleD.char=int=longf1oat<doub1e8.以下選項(xiàng)中,均是不合法的用戶標(biāo)識(shí)符的選項(xiàng)是( )A.A B.float C.b-a D._123p_0 1aO goto tempdo _A int INT9.以下選項(xiàng)中,均是合法的整型常量的選項(xiàng)是( )A.160 B.-OxcdfC.-018 D.-0x48eg-Oxfflf 017 999 -68011 12,456 5e2 03f10.以下選項(xiàng)中,均是正確的八進(jìn)制數(shù)或十六進(jìn)制數(shù)的選項(xiàng)是A.-10 B.OabcC.0010 D.0al20x8f 017 -0x11 -0x123-011 Oxc Oxfl -Oxa11.以下選項(xiàng)中,均是合法轉(zhuǎn)義字符的選項(xiàng)是()A.'\" B.'V C.'\018' D.'\\0''W '\017' 4\f M01''\n' 'xab' 'xff12.Char型常量在內(nèi)存中存放的是( )A.ASCH代碼值B.BCD代碼值C.內(nèi)碼值D.十進(jìn)制代碼值.下面正確的字符常量是()A."C"B.'\\"C.'W'D.".下面不正確的字符串常量是( )A."0"B." "C.'abc' D."12'12".C語(yǔ)言中,運(yùn)算對(duì)象必須是整型數(shù)的運(yùn)算符是()A.\B.%C.%和\D.**.若有代數(shù)式現(xiàn),則不正確的C語(yǔ)言表達(dá)式是()beA.a/b/c*e*3B.3*a*e/b/cC.3*a*e/b*cD.a*e/c/b*3.若有代數(shù)式|x3+logiox|,則正確的C語(yǔ)言表達(dá)式是( )A,也bs(xA3+log(x)) B.abs(pow(x,3)+log10(x))C.abs(pow(x,3,0)+log(x)) D.fabs(pow(x,3,0)+logl0(x)).設(shè)有說(shuō)明:charw;intx;floaty;doublez;則表達(dá)式w*x+z-y值的數(shù)據(jù)類型為()A.floatB.charC.intD.double.設(shè)變量n為float類型,m為int類型,則以下能實(shí)現(xiàn)將n中數(shù)值保留小數(shù)點(diǎn)后兩位,第三位進(jìn)行四舍五人運(yùn)算的表達(dá)式是()A.n=(n*100+0.5)/100 B.m=n*l00+0.5,n=m/l00.0C.n=n*100+0.5/100.0D.n=(n/100+0.5)*100.0.設(shè)整型變量a為5,使b不為2的表達(dá)式是()A.b=a/2B.b=6-(-a)C.b=a%2D.b=a>3?2:l.若有以下定義,則能使值為3的表達(dá)式是()intk=7,x=12A.x%=(k%=5)B.x%=(k-k%5)C.x%=k-k%5D.(x%=k)-(k%=5).設(shè)以下變量均為整型,則值不為7的表達(dá)式是()A.(x=y=6,x+y,x+1)B.(x=y=6,x+y,y+1)C.(x=6,x+l,y=6,x+y) D.(y=6,y+l,x=y,x+1).設(shè)有值均為5.0的單精度變量f,g,使f為10.0的表達(dá)式是()A."=gB.f^=g+5C.f*=g-15D.f7=g*10.設(shè)f為實(shí)型變量,下列表達(dá)式中不是逗號(hào)表達(dá)式的是()A.43,4,5B.4(3,2,1,0)C.f>=3,化2,0 D.42戶1.設(shè)a,b均為整型變量,下列表達(dá)式中不是賦值表達(dá)式的是()A.a=3,4,5B.a=3*2C.a=a&&bD.a=b=4.整型變量a,b,c的值分別為2,3,4,運(yùn)算表達(dá)式”a*=16+(b++)-(++c)”后,a的值是(<1>),b的值是(<2>),c的值是(<3>)TOC\o"1-5"\h\z<1>A.31 B.30 C.29 D.28<2>A.2 B.3 C.4 D.5<3>A.-5 B.-4 C.5 D.427.設(shè)有整型變量nl,n2,其值均為3,執(zhí)行語(yǔ)句“n2=nl++,n2++,++nl;''后,nl的值是(<1>),n2的值是(<2>)A.3 B.4C.5D.6.執(zhí)行語(yǔ)句‘'x=(a=3,b=a--);“后,x,a,b的值依次是( )A.3,3,2B.3,2,2C.3,2,3D.2,3,2.以下說(shuō)法正確的是()A.輸入項(xiàng)可以為一個(gè)實(shí)型常量,如scanf("%F',3.5);B.只有格式控制,沒(méi)有輸入項(xiàng),也能進(jìn)行正確輸入,如scanf("a-%d,b=%d");C.當(dāng)輸入一個(gè)實(shí)型數(shù)據(jù)時(shí),格式控制部分應(yīng)規(guī)定小數(shù)點(diǎn)后的位數(shù),如scanf(“%4.2F',&f)D.當(dāng)輸入數(shù)據(jù)時(shí),必須指明變量的地址,如scanf("%f.putchar函數(shù)可以向終端輸出一個(gè)()A.實(shí)型變量值B.整型變量表達(dá)式值C.字符串D.字符或字符型變量值.下面輸入語(yǔ)句正確的是()A.scanf("a=b=%d",&a,&b); B.scanf(ua=%d,b=%f,,&m,&f);C.scanfp%3c”,c); D.scanfT%5.2F',&f).已有如下定義和輸入語(yǔ)句,若要求al,a2,cl,c2的值分別為10,20,A和B,當(dāng)從第一列開(kāi)始輸入數(shù)據(jù)時(shí),正確的榆入方式是()intal,a2;charcl,c2;scanfC%d%c%d%c,,,&al,&cl,&a2,&c2);A.10Aj20B<CR>B.10jAj20jB<CR>C.10A20B<CR>D.10A20jB<CR〉33,已有如下定義和輸入語(yǔ)句,若要求al,a2,cl,c2的值分別為10,20,A和B,當(dāng)從第一列開(kāi)始輸入數(shù)據(jù)時(shí),正確的數(shù)據(jù)輸入方式是()intal,a2;charcl,c2;scanf("%d%d,,,&al,&a2);scanf("%c%c”,&cl,&c2);A.1020AB<CR> B.10j20<CR>AB<CR>C.10-j20jjAB<CR>D.10j20AB<CR>34.已有定義intx;floaty;且執(zhí)行語(yǔ)句sca

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論