C語言課程設計指導書知識分享_第1頁
C語言課程設計指導書知識分享_第2頁
C語言課程設計指導書知識分享_第3頁
C語言課程設計指導書知識分享_第4頁
C語言課程設計指導書知識分享_第5頁
已閱讀5頁,還剩15頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、Good is good, but better carries it.精益求精,善益求善。C語言課程設計指導書-C語言課程設計指導書雷鳴編沈陽理工大學理學院2007年4月一、設計性質與目的“C語言課程設計”是在學習“C語言程序設計基礎”課程之后進行的一個實踐教學環節,課程設計的目的是:進一步培養學生結構化程序設計的思想,加深對高級語言基本語言要素和控制結構的理解;針對C語言中的重點和難點內容進行訓練,獨立完成有一定工作量的程序設計任務,同時強調好的程序設計風格。掌握C語言的編程技巧和上機調試程序的方法。掌握程序設計的常用算法。為了使學生從課程設計中盡可能取得比較大的收獲,對課程設計題目分成二

2、類,一類為基礎訓練題目,學生從中學習到程序設計的常用算法。另一類為綜合題目。學生從這兩類型題目中各選擇部分完成。課程設計環境:利用TurboC編程。二、設計的基本要求本課程設計的基本步驟與要求是:1、問題分析及解決方案框架確定充分地分析和理解問題本身,弄清要求做什么。在確定解決方案框架過程中,考慮怎樣使程序結構清晰、合理、簡單和易于調試,并確定每個函數的簡單功能,以及函數之間的調用關系。2、詳細設計和編碼確定算法的主要流程,再此基礎上進行代碼設計,每個明確的功能模塊程序一般不超過60行,否則要進一步劃分。3、上機前編寫程序與檢查上機前程序檢查可有效提高調試效率,減少上機調試程序時的無謂錯誤。程

3、序檢查主要有兩種途徑:用一組測試數據手工執行程序;通過閱讀或給別人講解自己的程序而深入全面地理解程序邏輯。把程序中的明顯錯誤事先排除。4、上機調試程序5、完成課程設計報告問題描述:題目要解決的問題是什么。設計設計算法:主要算法思想,用流程圖表示。實現注釋:各項功能的實現程度。調試報告:調試過程中遇到的主要問題,是如何解決的;對設計和編碼的回顧討論和分析;改進設想;經驗和體會等。附錄:源程序清單和結果。如果題目規定了測試數據,則結果要包含這些測試數據和運行輸出,當然還可以含其他測試數據和運行輸出。三、設計任務(一)基本要求參考題目1、猜數游戲(掌握程序結構及隨機函數應用)程序說明:游戲的開始由機

4、器產生一個隨機數(1100之間,用庫函數random(),用法見后面的說明),然后游戲者在程序的提示下猜數,若輸入的數比這個數大,程序提示:YouranswerisHIGH,tryagain.,否則,程序提示:YouranswerisLOW,tryagain.,直到猜對為止。程序可實現連續猜數,直到游戲者退出。程序輸出要求:累計游戲者猜對一個數所需次數n,當n=15時,用exit(0)庫函數退出程序。2、百錢百雞(窮舉算法)我國古代數學家張丘鍵在算經中出了一道題“雞翁一,值錢五;雞母一,值錢三;雞雛三,值錢一。百錢買百雞,問雞翁、雞母、雞雛各幾何?注:窮舉法是最簡單、最常見的一種程序設計方法。

5、它充分利用了計算機處理的高速特性。使用窮舉法的關鍵是確定正確的窮舉范圍,即不能過分擴大、也不能過分縮小窮舉的范圍。3、簡單計算器請編寫一個程序計算表達式:data1opdata2的值。其中,op為運算符、*、/。4、打印出所有的“水仙花數”所謂“水仙花數”是指一個3位數,其各位數字立方和等于該數本身。例如,153是一水仙花數,因為:153=13+53+33。5、字符串處理函數編寫三個函數:求字符串長度函數(函數原型為:intstrlen(char*p)),字符串復制函數(函數原型為:voidstrcpy(char*p1,char*p2)),字符串比較函數(函數原型為:intstrcmp(cha

6、r*p1,char*p2),返回值為第一個不相同字符的ASCII碼差。)。要求:在主函數中根據用戶需要調用不同的函數功能。6、編一程序,實現將輸入的一個無符號整數轉換為二進制和八進制表示,分別存入字符數組中并輸出。(提示:算法采用模擬人工法。)注:計算機模擬人工是編程中常用的方法,這種方法要求編程者首先分析在人工方式下解決問題的過程,從中找出步驟和規律,然后編寫程序,按照人工解決問題的步驟和規律進行操作。7、判斷一個數是否是數組中的成員(用二分法查找)已知數據a中一共有10個已排序的整數(由小到大排列)。現在從鍵盤上輸入一個數,判斷這個數是否是數組a中的數,如果是的話,打印出此數在數組a中的位

7、置來,否則打印“找不到“。(提示:設待查找的數為x,設三個位置變量l、m、h分別代表查找范圍的頂部、中間位置和底部,m=(l+h)/2,把數分成以am為中點的兩段范圍。判斷x是否等于am,若是,則找到。若大于am,則x必在后半段范圍,即在am+1至ah。則舍棄前半段,再在后半段重新劃分兩段范圍,定出l、m和h,重復以上步驟,逐步縮小查找范圍。)8、位數大小排序(掌握數值排序算法)程序說明:輸入一個五位整數,對此整數中的五個數值進行從大到小的順序排序,形成一個新的五位整數,并輸出這個整數。要求:用函數調用。9、請編寫函數fun,函數的功能是求出二維數組周邊元素之和,作為函數值返回。二維數組中的值

8、在主函數中賦予。(數組維數用宏定義)10、矩陣乘法(數值求解算法)編寫一個函數實現矩陣A(2行3列)與矩陣B相乘(3行2列),乘積放在C數組中。在主函數中輸入相乘的兩數組,并輸出結果。11、求所有不超過200的N值,N的平方是具有對稱性質的回文數。回文數就是將一個數從左向右讀是一樣的,如滿足題意要求的數有:N11,112121。12、插入后自動排序(掌握用窮舉法進行比較、交換)把一個整數插入到按由小到大排列的數列中,插入后仍然保持由小到大的順序排列。要求:用數據指針。13、計算分數的精確值使用數組精確計算MN(0MN=100)的值。如果MN是無限循環小數,則計算并輸出它的第一循環節,同時要求輸

9、出循環節的起止位置(小數位的序號。)注:由于計算機內字長有限,常規的浮點運算都有精度限制,為了得到高精度的計算結果,就必須自行設計算法。提示:可將商存放在一維數組中,進行除法運算時,可模擬人的手工操作,即每次求出商的一位后,將余數乘以10,再計算商的下一位。若某次余數為0,則為有限不循環小數。若某次計算后的余數與前面的某個余數相同時,則MN是無限循環小數。14、馬克思手稿中的數學題(窮舉算法)馬克思手稿中有一道趣味數學題:有30個人,其中有男人、女人和小孩,在一家飯館吃飯共花了50先令:每個男人花3先令,每個女人花2先令,每個小孩花1先令,問男人、女人、小孩各有幾人?15、用梯形法求定積分(數

10、值求解算法)用梯形法編程求函數f(x)=x2+2x+1的定積分提示:把積分區間a,b等分為n等分(a,b,n的值由程序輸入。),可得到若干個小梯形,積分面積就近似為這些小梯形面積之和。16、小孩吃梨問題:小孩買了一些梨,當即吃了一半,還不過癮,又多吃了一個,第二天早上又將剩下的梨吃掉一半,又多吃了一個。以后每天早上都吃了前一天剩下的一半,并又多吃了一個。到第18天只剩下一個梨了,問小孩共買了多少梨?(提示:據初始條件,用倒推法。)17、一個奇異的三位數(窮舉算法)一個自然數的七進制表達式是一個三位數,而這個自然數的九進制表示也是一個三位數,且這兩個三位數的數碼順序正好相反,求這個三位數。18、

11、約瑟夫問題(掌握一維數組的用法)。15個基督徒和15個異教徒在海上遇險,必須將一半的人投入大海,其余的人才能幸免于難,于是想了一個辦法:30個人圍成一個圓圈,從第一個人開始依次報數,每數到第9個人就將他扔入大海,如此循環直到僅余15個人為止。問怎樣排法,才能使每次投入大海的都是異教徒。提示:30個人順序編號,自增量k報數,k%90時,此人投入大海。投入大海標志為置數組元素值為0(或1)。投入大海的人不再報數。程序輸出要求:程序運行后,顯示原始順序,每次投入大海的人的信息及剩下人的順序。19、回文數的形成:任取一個十進制整數,將其倒過來后與原來的整數相加,得到一個新的整數后重復以上步驟,則最終可

12、得到一個回文數。請編程驗證。(回文數就是將一個數從左向右讀是一樣的,如121,11等)。(注:回文數不超過2147483647)回文數的這一形成規則目前還屬于一個猜想,尚未獲得數學上的驗證,有些回文數要經歷上百個步驟才能獲得,請編程驗證,打印形成過程。如輸入整數78,則形成回文數的過程為:7887165,165561726,7266271353,135335314884。提示:一個函數用來求反序數,另一個函數判斷是否為回文數,在主函數中輸入輸出。20、人機猜數游戲由計算機“想”一個四位數,請人猜這個四位數是多少。人輸入這個四位數后,計算機首先判斷這四個數中有幾個猜對了,并且在猜對的數字中又有幾

13、位位置也是對的,將結果顯示出來,給人以提示,請人再猜,直到人猜出計算機所想的四位數為止。請編程實現該游戲,游戲結束時,顯示人猜一個數用了幾次。提示:用庫函數random()產生一個隨機數。如:Intz;z=random(9999);21、求轉置矩陣編寫一個程序,求34數組的轉置矩陣。要求在main函數里讀數,在change函數里把矩陣轉置。22、條件編譯用條件編譯方法實現以下功能:輸入一行電報文字,可以任選兩種輸出,一為原文輸出;一為將字母變成其下一字母(如a變成b.z變成a。其他字符不變)。用#define命令來控制是否要譯成密碼。例如:#definechange1則輸出密碼。若#defin

14、echange0則不譯成密碼,按原碼輸出。23、取子串函數編寫求子串函數substr(s,n1,n2),在串s中從n1位置開始取n2個字符的子串24、輸出九九乘法口決表(循環結構的應用,表的格式自己設定)25、設計一個函數,對n個字符串按由小到大的順序排序,n由程序讀入,字符串的輸入和輸出都在main函數中進行。26、輸入三行文字,找出其中有多少個空格和多少個單詞(規定單詞間以一個或多個空格分開)。若一個單詞恰好在行末結束,則下一行的開頭應有空格,句號和逗號后面也應有空格。27、計算字符串中子串出現的次數程序說明:利用輸入函數輸入任意兩個字符串,請你編寫程序求出第二個字符串在第一個字符串中出現

15、的次數,即在第一個字符串中有幾個第二個字符串。28、遞歸算法用遞歸算法編寫求1n的累加和。在主函數中調用。29、計算字符串中子串出現的次數程序說明:利用輸入函數輸入任意兩個字符串,請你編寫程序求出第二個字符串在第一個字符串中出現的次數,即在第一個字符串中有幾個第二個字符串。30、數值算法編寫求以下函數(二)綜合訓練參考題目1、學生成績管理系統設計(結構體數組、函數、指針、算法、流程結構及文件等的綜合應用)程序說明:有N個學生,每個學生的數據包含學號(不重復)、姓名、三門課的成績及平均成績,試設計一學生成績管理系統,使之能提供以下功能:(1)主菜單學生成績管理系統成績錄入成績查詢成績統計退出(2

16、)各菜單項功能成績錄入:輸入學生的學號、姓名及三門課的成績;成績查詢:(至少一種查詢方式)。按學號查詢學生記錄。查詢不及格學生的記錄。成績統計:計算學生的平均分;根據學生的平均分高低,對學生的數據進行排序后輸出;對學生單科成績排序,輸出學生姓名與該科成績;退出系統:退出整個系統(即主菜單)。(3)結構體數組:defineN30structstudentintnum;/*定義學號*/charname20;/*定義姓名*/floatscore3;/*定義存貯三門課成績的數組*/floataverage;/*定義平均成績*/;structstudentstuN;/*定義結構體數組,存貯多個學生的記錄

17、*/附:隨機數發生器函數random()用法函數原型:intrandom(intnum);程序例:#include/*包含庫函數random()的頭文件*/#include/*printsarandomnumberintherange0to99*/intmain(void)intn;randomize();/*初始化隨機數發生器*/n=random(100);/*產生一個0-100的隨機數。*/printf(Randomnumberinthe0-99range:%dn,n);2、用C語言為學生宿舍管理人員編寫一個宿舍管理軟件。設某宿舍有:101,102,201,202四個房間,每個房間可住學生

18、=4人,鏈表存儲結構:學號、姓名、房間號、后續指針,按房間號有序,實現學生的入住、退房和查詢,按給定學號、姓名、房號查詢。3、用鏈表方式來實現學生通訊錄管理系統(1)主要技術指標和要求:主要是實現鏈表的創建、插入、刪除、查找等功能。(2)方案選擇及工作原理:通過定義一個包含學生通訊錄(主要包括:學號、姓名、系別、專業、籍貫、家庭住址、聯系電話等)的結構體類型,開發的系統能夠實現增加學生通訊錄的內容、刪除某個學生通訊錄內容、輸出全部學生通訊錄內容、根據用戶需求查找某個或某些學生的通訊錄內容(如:按系別、專業、學號、姓名等內容進行查找)。(3)設計成果的要求:能夠實現以上給定的各項功能,方便簡潔的操作界面,具有一定的容錯性。4、應用C語言的屏幕控制和繪圖功能編制以下圖形,(1)在屏幕上繪制出一個圍棋棋盤(19行19列)。(2)在屏幕上繪制出一個六葉圖案。(3)在屏幕上繪制出一個兩個周期的正弦曲線。繪制圖形的顏色,大小不限。5、計算矩陣的逆陣,要求矩陣階數自定,主要功能由函數實現。6、編程實現文件的編輯和文件的復制。7、文件處理:(1)統計各字母在文本文件中出現的頻度(忽略大小寫);(2)查找并替換正文中的字符串,并存入另一個文件中。8、小學生數學測試軟件的編寫,要求:(

溫馨提示

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

評論

0/150

提交評論