![《C語言程序設(shè)計》上機實驗指導(dǎo)手冊_第1頁](http://file4.renrendoc.com/view/63754e10d973dab1f68c36c1ecd287bf/63754e10d973dab1f68c36c1ecd287bf1.gif)
![《C語言程序設(shè)計》上機實驗指導(dǎo)手冊_第2頁](http://file4.renrendoc.com/view/63754e10d973dab1f68c36c1ecd287bf/63754e10d973dab1f68c36c1ecd287bf2.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、 8/8C語言程序設(shè)計上機實驗指導(dǎo)手冊 C語言程序設(shè)計 上機實驗指導(dǎo)手冊 電子與信息工程學(xué)院 計算機科學(xué)系 第一部分上機實驗的指導(dǎo)思想和要求 一、上機實驗的目的 學(xué)習C語言程序設(shè)計課程不能滿足于“懂得了”,滿足于了解了語法和能看懂書上的程序,而應(yīng)當掌握程序設(shè)計的全過程,即能獨立編寫出源程序,獨立上機調(diào)試程序,獨立運行程序和分析結(jié)果。 “程序設(shè)計”是一門實踐性很強的課程,必須十分重視實踐環(huán)節(jié)。許多實際的知識不是靠聽課和看書學(xué)到手的,而是通過長時間的實踐積累的。要提倡通過實踐去掌握知識的方法。必須保證有足夠的上機實驗時間,學(xué)習本課程應(yīng)該至少有30 小時的上機時間,最好能做到與授課時間之比為1:1
2、。除了學(xué)校規(guī)定的上機實驗以外,應(yīng)當提倡學(xué)生自己課余抽時間多上機實踐。 上機實驗的目的,絕不僅是為了驗證教材和講課的內(nèi)容,或者驗證自己所編的程序正確與否。學(xué)習程序設(shè)計,上機實驗的目的是: (1)加深對講授內(nèi)容的理解,尤其是一些語法規(guī)定,光靠課堂講授,既枯燥無味又難以記住,但它們是很重要的,初學(xué)者的程序出錯往往錯在語法上。通過多次上機,就能自然地、熟練地掌握。通過上機來掌握語法規(guī)則是行之有效的方法。 (2)熟悉所用的計算機系統(tǒng)的操作方法,也就是了解和熟悉C語言程序開發(fā)的環(huán)境。一個程序必須在一定的外部環(huán)境下才能運行,所謂“環(huán)境”,就是指所用的計算機系統(tǒng)的硬件和軟件條件,或者說是工作平臺。使用者應(yīng)該了
3、解為了運行一個C程序需要哪些必要的外部條件(例如硬件配置、軟件配置),可以利用哪些系統(tǒng)的功能來幫助自己開發(fā)程序。每一種計算機系統(tǒng)的功能和操作方法不完全相同,但只要熟練掌握一兩種計算機系統(tǒng)的使用,再遇到其他系統(tǒng)時便會觸類旁通,很快就能學(xué)會。 (3)學(xué)會上機調(diào)試程序。也就是善于發(fā)現(xiàn)程序中的錯誤,并且能很快地排除這些錯誤,使程序能正確運行。經(jīng)驗豐富的人,在編譯連接過程中出現(xiàn)“出錯信息”時,一般能很快地判斷出錯誤所在,并改正之。而缺乏經(jīng)驗的人即使在明確的“出錯提示”下也往往找不出錯誤而求助于別人。要真正掌握計算機應(yīng)用技術(shù),就不僅應(yīng)當了解和熟悉有關(guān)理論和方法,還要求自己動手實現(xiàn)。對程序設(shè)計來說,則要求會
4、編程序并上機調(diào)試通過。因此調(diào)試程序不僅是得到正確程序的一種手段,而且它本身就是程序設(shè)計課程的一個重要的內(nèi)容和基本要求,應(yīng)給予充分的重視。調(diào)試程序固然可以借鑒他人的現(xiàn)成經(jīng)驗,但更重要的是通過自己的直接實踐來累積經(jīng)驗,而且有些經(jīng)驗是只能“會意”難以“言傳”。別人的經(jīng)驗不能代替自己的經(jīng)驗。調(diào)試程序的能力是每個程序設(shè)計人員應(yīng)當掌握的一項基本功。 因此,在做實驗時千萬不要在程序通過后就認為萬事大吉、完成任務(wù)了,而應(yīng)當在己通過的程序基礎(chǔ)上作一些改動(例如修改一些參數(shù)、增加程序的一些功能、改變某些語句、改變輸入數(shù)據(jù)的方法等),再進行編譯、連接和運行。甚至于“自設(shè)障礙”,即把正確的程序改為有錯的(例如語句漏寫
5、分號;用scanf函數(shù)輸入變量時,漏寫“&”符號;比較符“= =”錯寫為賦值號“=”;使數(shù)組下標出界;使整數(shù)溢出等),觀察和分析所出現(xiàn)的情況。這樣的學(xué)習才會有真正的收獲,是靈活主動的學(xué)習而不是呆板被動的學(xué)習。 二、上機實驗前的準備工作 在上機實驗前應(yīng)事先做好準備工作,以提高上機實驗的效率,準備工作至少應(yīng)包括: (1)了解所用的計算機系統(tǒng)(包括C編譯系統(tǒng)和工作平臺)的性能和使用方法; (2)復(fù)習和掌握與本實驗有關(guān)的教學(xué)內(nèi)容; (3)準備好上機所需的程序。由于計算機實驗室給每個學(xué)生安排的時間是有限的,要珍惜時間,充分利用。應(yīng)當在上機前按指定的題目編寫好程序。手編程序應(yīng)書寫整齊,并經(jīng)人工檢查無誤后才
6、能上機,以提高上機效率。初學(xué)者切忌不編程序或抄別人程序去上機,應(yīng)從一開始就養(yǎng)成嚴謹?shù)目茖W(xué)作風; (4)對運行中可能出現(xiàn)的問題事先作出估計,對程序中自己有疑問的地方,應(yīng)作出記號,以便在上機時給予注意; (5)準備好調(diào)試和運行時所需的數(shù)據(jù)。 三、上機實驗的步驟 上機實驗時一人一組,獨立上機,復(fù)雜分組進行,相互討論完成任務(wù)。上機過程中出現(xiàn)的問題,除了是系統(tǒng)的問題以外,一般應(yīng)自己獨立處理,不要輕易舉手問教師。尤其對“出錯信息”,應(yīng)善于自己分析判斷。這是學(xué)習調(diào)試程序的良好機會。 上機實驗一般應(yīng)包括以下幾個步驟: (1)進入C工作環(huán)境(Dev-C+ 5.8.3)。 (2)輸入自己所編好的程序。 (3)檢查
7、一遍已輸入的程序是否有錯(包括輸入時打錯的和編程中的錯誤),如發(fā)現(xiàn)有錯,及時改正。 (4)進行編譯和連接。如果在編譯和連接過程中發(fā)現(xiàn)錯誤,屏幕上會出現(xiàn)“出錯信息”,根據(jù)提示找到出錯位置和原因,加以改正。再進行編譯,如此反復(fù)直到順利通過編譯和連接為止。 (5)運行程序并分析運行結(jié)果是否合理和正確。在運行時要注意當輸入不同數(shù)據(jù)時所得到的結(jié)果是否正確。 (6)輸出程序清單和運行結(jié)果。 四、實驗驗收 (1)現(xiàn)場驗收,學(xué)生講解、提問、答辯的方式,通過三方面的表現(xiàn)給出實驗成績; (2)提交程序清單(電子版)。 第二部分關(guān)于程序的調(diào)試和測試 一、程序錯誤的類型 為了幫助各位同學(xué)調(diào)試程序和分析程序,下面簡單介
8、紹程序出錯的種類。 (1)語法錯誤 即不符合C語言的語法規(guī)定,例如將main 錯寫為naim ,括號不匹配,語句最后漏了分號等,這些都會在編譯時被發(fā)現(xiàn)并指出。這些都屬于“致命錯誤”,不改正是不能通過編譯的。對一些在語法上有輕微毛病但不影響程序運行的錯誤(如定義了變量但始終未使用),編譯時會發(fā)出“警告”,雖然程序能通過編譯,但不應(yīng)當使程序“帶病工作”,應(yīng)該將程序中所有導(dǎo)致“錯誤(error)”和“警告(warning)”的因素都消除,再使程序投入運行。 (2)邏輯錯誤 這是指程序無語法錯誤,也能正常運行,但是結(jié)果不對。例如求s=l+2+3+100,有人寫出以下語句: for(s=0, i=1;
9、i0) printf(It has two real solutions:n); printf(”x1=%6.2f, x2=%6.2fn”, x1, x2); else printf(It has two same real solutions:n); printf(x1=x2=%6.2fn,-b/(2*a); else pritnf(It has two complex solutions:n); p=-b/(2*a); q=sqrt(-disc)/(2*a); printf(x1=%6.2f+%6.2fi, x2=%6.2f - %6.2fin, p, q, p, q); 為了測試程序的“
10、健壯性”,我們準備了6組數(shù)據(jù): 3,4,1 1,2,1 4,2,1 0,3,4 0,0,0 0,0,5 分別用這6組數(shù)據(jù)作為輸入的a,b,c的值,得到以下的運行結(jié)果: input a, b, c: 3 4 1 It has two real solutions: x1=-0.33, x2= -1.00 input a, b, c: 1 2 1 It has two same real solutions: x1=x2= -1.00 input a, b, c: 4 2 1 It has two complex solutions: x1=-0.25+0.43i, x2=-0.25-0.43i
11、input a, b, c: 0 3 4 It has one solutions: x1=-1.33 input a, b, c: 0 0 0 It is trivial. input a, b, c: 0 0 5 It is impossible. 經(jīng)過測試,可以看到程序?qū)θ魏屋斎氲臄?shù)據(jù)都能正常運行并得到正確的結(jié)果。以上是根據(jù)數(shù)學(xué)知識知道輸入數(shù)據(jù)有6種方案。但在有些情況下,并沒有現(xiàn)成的數(shù)學(xué)公式作為依據(jù),例如一個商品管理程序,要求對各種不同的檢索作出相應(yīng)的反應(yīng)。如果程序包含多條路徑(如由if語句形成的分支),則應(yīng)當設(shè)計多組測試數(shù)據(jù),使程序中每一條路徑都有機會執(zhí)行,觀察其運行是否正常。 以上就
12、是程序測試的初步知識。測試的關(guān)鍵是正確地準備測試數(shù)據(jù)。如果只準備4 組測試數(shù)據(jù),程序都能正常運行,仍然不能認為此程序己無問題。只有將程序運行時所有的可能情況都作過測試,才能作出判斷。 測試的目的是檢查程序有無“漏洞”。對于一個簡單的程序,要找出其運行時全部可能執(zhí)行到的路徑,并正確地準備數(shù)據(jù)并不困難。但是如果需要測試一個復(fù)雜的大程序,要找到全部可能的路徑并準備出所需的測試數(shù)據(jù)并非易事。例如:有兩個非嵌套的if語句,每個if語句有兩個分支,它們所形成的路徑數(shù)目為224。如果一個程序包含100 個if語句,則可能的路徑數(shù)目為21001.2676511030,要測試每一條路徑兒乎是不可能的。實際上進行
13、測試的只是其中一部分(執(zhí)行幾率最高的部分)。因此,經(jīng)過測試的程序一般還不能輕易宣布為“沒有問題”,只能說“經(jīng)過測試的部分無問題”。正如檢查身體一樣,經(jīng)過內(nèi)科、外科、眼科、五官科各科例行檢查后,不能宣布被檢查者“沒有任何病癥”,他有可能有隱蔽的、不易查出的病癥。所以醫(yī)院的診斷書一般寫為“未發(fā)現(xiàn)異?!?,而不能寫“此人身體無任何問題”。 我們應(yīng)當了解測試的目的,學(xué)會組織測試數(shù)據(jù),并根據(jù)測試的結(jié)果修改完善程序。 第三部分實驗內(nèi)容與安排 實驗一簡單的C程序?qū)嶒?1實驗?zāi)康?(1)了解Dev-C+集成環(huán)境的窗口界面,熟練掌握如何編輯、編譯、連接、運行一個C程序以及如何保存和修改C語言的源程序。 (2)通過
14、運行簡單的C程序,初步了解C源程序的結(jié)構(gòu)和特點。 (3)學(xué)會簡單的讀程序和調(diào)試程序。 2實驗內(nèi)容 (1)輸出圖形。 (2)求下圖所示田徑場的周長和面積。 (3)已知圓的周長與面積公式為: Cir=2*3.14*rad Area=3.14*rad*rad 從鍵盤輸入一個半徑值,求該圓的周長和面積。 要求:用主函數(shù)實現(xiàn)半徑的輸入,圓周長和面積的輸出,周長和面積用不同的函數(shù)來實現(xiàn)。 3預(yù)習內(nèi)容 C程序設(shè)計(第四版)第1章、第3章 實驗二順序程序設(shè)計 1實驗?zāi)康?(1)掌握C語言中使用最多的一種語句賦值語句的使用方法。 (2)掌握C語言數(shù)據(jù)類型,熟悉如何定義一個整型、字符型和實型的變量,以及對它們賦值
15、的方法,了解字符型數(shù)據(jù)和整型數(shù)據(jù)的內(nèi)在關(guān)系。 (3)掌握不同的類型數(shù)據(jù)之間賦值的規(guī)律。 (4)掌握對各種類型數(shù)據(jù)的正確輸入方法。 (5)學(xué)會使用C的有關(guān)算術(shù)運算符,以及包含這此運算符的表達式。 (6)掌握各種類型數(shù)據(jù)的輸入輸出的方法,能正確使用各種格式轉(zhuǎn)換符。 (7)進一步掌握編寫程序和調(diào)試程序的方法。 2實驗內(nèi)容和步驟 (1)用下面的scanf函數(shù)輸入數(shù)據(jù),使a=3, b=7, x=8.5, y=71.82, c1=A, C2=a。 問在鍵盤上如何輸入? #include 0。 3預(yù)習內(nèi)容 C程序設(shè)計(第四版)第3章。 實驗三選擇結(jié)構(gòu)程序設(shè)計 1實驗?zāi)康?(1)了解C語言表示邏輯量的方法(以
16、0代表“假”,以非0代表“真”)。 (2)學(xué)會正確使用邏輯運算符和邏輯表達式。 (3)熟練掌握if 語句和switch 語句。 (4)結(jié)合程序掌握一些簡單的算法。 (5)進一步學(xué)習調(diào)試程序的方法。 2實驗內(nèi)容 (2)有一函數(shù): x (x1) y= 2x1 (1x10) 3x11 (x10) 寫程序,用scanf函數(shù)輸入x的值,輸出y相應(yīng)的值。 運行程序輸入x 的值(分別為x1、110、x10這3種情況),檢查輸出的y 值是否正確。 (3)給出一個百分制成績,要求輸出成績等級A、B、C、D、E。90分以上為A,8189 分為B,7079分為C,6069分為D,60分以下為E。 事先編好程序,要求
17、分別用if語句和switch語句來實現(xiàn)。運行程序,并檢查結(jié)果是否正確。 再運行一次程序,輸入分數(shù)為負值(如-70),這顯然是輸入時出錯,不應(yīng)給出等級,修改程序,使之能正確處理任何數(shù)據(jù),當輸入數(shù)據(jù)大于100和小于0時,通知用戶“輸入數(shù)據(jù)錯”,程序結(jié)束。 (4)給一個不多于5 位的正整數(shù),要求:求出它是幾位數(shù);分別輸出每一位數(shù)字;按逆序輸出各位數(shù)字,例如原數(shù)為321,應(yīng)輸出123。 應(yīng)準備以下測試數(shù)據(jù): 要處理的數(shù)為1位正整數(shù); 要處理的數(shù)為2 位正整數(shù); 要處理的數(shù)為3 位正整數(shù); 要處理的數(shù)為4 位正整數(shù); 要處理的數(shù)為5 位正整數(shù)。 除此之外,程序還應(yīng)當對不合法的輸入做必要的處理,例如: 輸
18、入負數(shù); 輸入的數(shù)超過5位(如123456 )。 3預(yù)習內(nèi)容 C程序設(shè)計(第四版)第4章。 實驗四循環(huán)結(jié)構(gòu)程序設(shè)計(一) 1實驗?zāi)康?(1)熟悉掌握用while語句、do-while語句實現(xiàn)循環(huán)的方法。 (2)掌握在程序設(shè)計中用循環(huán)的方法實現(xiàn)一些常用算法。 編程序并上機調(diào)試運行。 (1)輸入兩個正整數(shù)m和n,求它們的最大公約數(shù)和最小公倍數(shù)。 在運行時,輸入的值mn,觀察結(jié)果是否正確。 再輸入時,使ms2,輸出一個正數(shù);若s1=s2,輸出0;若s1=1) 3預(yù)習內(nèi)容 C程序設(shè)計(第四版)第7章。 實驗九函數(shù)(二) 1實驗?zāi)康?(1)掌握函數(shù)的嵌套調(diào)用和數(shù)組作為函數(shù)參數(shù)的方法。 (2)掌握全局變量
19、和局部變量、動態(tài)變量、靜態(tài)變量的概念和使用方法。 2實驗內(nèi)容 編程序并上機調(diào)試運行。 (1)輸入10個學(xué)生5門課的成績,分別用函數(shù)實現(xiàn)下列功能: 計算每個學(xué)生平均分。 計算每門課的平均分。 找出所有50個分數(shù)中最高的分數(shù)所對應(yīng)的學(xué)生和課程。 計算平均分方差。 (2)給出年、月、日,計算該日是該年的第幾天。 3預(yù)習內(nèi)容 C程序設(shè)計(第四版)第7章。 實驗十指針 1實驗?zāi)康?(1)通過實驗進一步掌握指針的概念,會定義和使用指針變量。 (2)能正確使用數(shù)組的指針和指向數(shù)組的指針變量。 (3)能正確使用字符串的指針和指向字符串的指針變量。 (4)了解指向指針的指針的概念及其使用方法。 2實驗內(nèi)容 編程
20、序并上機調(diào)試運行程序(都要求用指針處理)。 (1)輸入3個整數(shù),按由小到大的順序輸出。 (2)輸入10個整數(shù),將其中最小的數(shù)與第一個數(shù)對換,把最大的數(shù)與最后一個對換。寫3個函數(shù): 輸入10個數(shù); 數(shù)據(jù)處理; 輸出10個數(shù)。 (3)寫一個函數(shù),求一個字符串的長度。在main函數(shù)中輸入字符串,并輸出其長度。 (4)編一個程序,輸入月份號,輸出該月的英文月名。例如,輸入“3”,則輸出“Match”,要求用指針數(shù)組處理。 3預(yù)習內(nèi)容 C程序設(shè)計(第四版)第8章。 實驗十一結(jié)構(gòu)體與共用體 1實驗?zāi)康?(1)掌握結(jié)構(gòu)體類型變量的定義和使用。 (2)掌握結(jié)構(gòu)體類型數(shù)組的概念和應(yīng)用。 (3)了解鏈表的概念,初步學(xué)會對鏈表進行操作。 2實驗內(nèi)容 編程序,然后上機調(diào)試運行。 (1)有5個學(xué)生,每個學(xué)生的數(shù)據(jù)包括學(xué)號、姓名、3門課的成績,從鍵盤輸入5個學(xué)生數(shù)據(jù),要求輸出3門課總平均成績,以及最高分的學(xué)生的數(shù)據(jù)(包括學(xué)號、姓名、3門課的成績、平均分數(shù))。 要求用一個input函數(shù)輸入5個學(xué)生數(shù)據(jù);用一個average函數(shù)求總平均分;用max函數(shù)找出最高分學(xué)生數(shù)據(jù);總平均分和最高分的學(xué)生的數(shù)據(jù)都在主函數(shù)中輸出。 (2)建立一個鏈表,每個結(jié)點包
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 家具購銷的簡單合同范本
- 全新財務(wù)人員勞動合同
- 大樓物業(yè)管理委托合同
- 后八輪自卸車租賃合同范本
- 滬教版(上海)七年級地理第一學(xué)期祖國篇(上)4.3《長江》聽課評課記錄
- 股東合作協(xié)議合同模板
- 加盟合同協(xié)議書范本
- 攪拌站礦粉購銷簡易合同
- 《研究性學(xué)習》課程實施方案
- 合同書樣本范文電子版
- 藥用植物種植制度和土壤耕作技術(shù)
- 《火力發(fā)電企業(yè)設(shè)備點檢定修管理導(dǎo)則》
- 重慶市渝北區(qū)2024年八年級下冊數(shù)學(xué)期末統(tǒng)考模擬試題含解析
- 保安服務(wù)項目信息反饋溝通機制
- 《團隊介紹模板》課件
- 常用中醫(yī)適宜技術(shù)目錄
- 沖壓模具價格估算方法
- 運動技能學(xué)習與控制課件第十一章運動技能的練習
- 蟲洞書簡全套8本
- 2023年《反電信網(wǎng)絡(luò)詐騙法》專題普法宣傳
- 小學(xué)數(shù)學(xué)五年級上、下冊口算題大全
評論
0/150
提交評論