C語言課程設(shè)計報告01.doc
《C語言課程設(shè)計報告01.doc》由會員分享,可在線閱讀,更多相關(guān)《C語言課程設(shè)計報告01.doc(32頁珍藏版)》請在裝配圖網(wǎng)上搜索。
《C語言程序設(shè)計》 課程設(shè)計報告 (學(xué)年 第 學(xué)期) 專 業(yè): 班 級: 姓名學(xué)號: 姓 名: 指導(dǎo)教師: 成 績: 目 錄 一、課程設(shè)計的目的與要求………………………………………1 二、方案實現(xiàn)與調(diào)試 ……………………………………………1 2.1 擲骰子游戲…………………………………………………1 2.2 射擊游戲……………………………………………………3 2.3 計算存款本息之和……………………………………………5 2.4 肇事逃逸……………………………………………………8 2.5 禮炮…………………………………………………………10 2.6 汽車加油……………………………………………………12 2.8大優(yōu)惠………………………………………………………13 2.9 金幣…………………………………………………………15 三、課程設(shè)計分析與總結(jié)…………………………………………17 附錄 程序清單…………………………………………………17 一、課程設(shè)計的目的與要求 (一)實驗?zāi)康? C語言是一種編程靈活,特色鮮明的程序設(shè)計語言。C語言除了學(xué)習(xí)必須的基本知識,如概念,方法和語法規(guī)則之外,更重要的是進行實訓(xùn),以提高學(xué)習(xí)者的動手和編程能力,這是學(xué)習(xí)語言的最終目的。結(jié)合多年來的教學(xué)經(jīng)驗,根據(jù)學(xué)生的學(xué)習(xí)情況,為配合教學(xué)過程,使“項目教學(xué)法”能在本質(zhì)上促使學(xué)生有更大進步,特編寫了該《C語言程序設(shè)計任務(wù)書》,以在實訓(xùn)過程中給學(xué)生提供幫助。達到如下目的: 1. 在課程結(jié)束之前,讓學(xué)生進一步了解C程序設(shè)計語言的編程功能; 2. 讓學(xué)生扎實掌握C程序設(shè)計語言的相關(guān)知識; 3. 通過一些有實際意義的程序設(shè)計,使學(xué)生體會到學(xué)以致用,并能將程序設(shè)計的知識與專業(yè)知識有效地結(jié)合,更全面系統(tǒng)地了解行業(yè)知識。 (二)設(shè)計要求 根據(jù)實驗內(nèi)容的要求自由選定題目。編寫程序要求遵循如下基本要求: l 模塊化程序設(shè)計 l 鋸齒型書寫格式 l 必須上機調(diào)試通過 (三)課程設(shè)計報告(按《C語言程序設(shè)計課程設(shè)計報告》格式要求完成) 1、設(shè)計目的 2、總體設(shè)計(程序設(shè)計組成框圖、流程圖) 3、詳細設(shè)計、模塊功能說明(如函數(shù)功能、入口及出口參數(shù)說明,函數(shù)調(diào)用關(guān)系描述等)。 4、調(diào)試與測試:調(diào)試方法,測試結(jié)果的分析與討論,測試過程中遇到的主要問題及采取的解決措施。 5、源程序清單和執(zhí)行結(jié)果:源程序中應(yīng)有足夠的注釋。 (四)、檢查標(biāo)準(zhǔn) 1、學(xué)生必須編寫可運行的程序,對教師的提問能熟練地當(dāng)面解釋清楚,回答的問題和程序運行的結(jié)果作為評分的主要衡量標(biāo)準(zhǔn);(課程設(shè)計當(dāng)周的周三開始逐一檢查) 2、按照本文后要求須提交電子內(nèi)容的清單提交相關(guān)內(nèi)容。 二、方案實現(xiàn)與調(diào)試 2.1擲骰子游戲(注,此題目用了兩種方法,方法一:一般的main函數(shù)方式;方法二:加入函數(shù)分模塊的方式。代碼見附錄) ?2.1.1 題目內(nèi)容的描述 兩人玩骰子,游戲規(guī)則如下: 1) 兩人輪流擲骰子,每次擲兩個,每人最多擲10次。 2) 將每人每次的分值累加計分 3) 當(dāng)兩個骰子點數(shù)都為6時,計8分;當(dāng)兩個點數(shù)相等且不為兩個6時,計7分;當(dāng)兩個點數(shù)不一樣時,計其中點數(shù)較小的骰子的點數(shù)。 4) 結(jié)束條件:當(dāng)雙方都擲10次或經(jīng)過5次后一方累計分數(shù)多出另一方的30%及以上。最后顯示雙方分數(shù)并判定優(yōu)勝者。 ?2.1.2輸入數(shù)據(jù)類型、格式和內(nèi)容限制和輸出數(shù)據(jù)的說明 1)數(shù)據(jù)類型:整型;2)內(nèi)容限制:隨機數(shù)的產(chǎn)生; 3)輸出數(shù)據(jù):獲勝一方。 ?2.1.3主要模塊的算法描述 1) 程序流程圖如下:開始 第一人擲骰子 計算第一人得分grade1 第二人擲骰子 計算第二人得分grade2 11>=i>=6 一方的成績的是否大于等于另一方的1.3倍 否 是 獲勝方 是 否 初始化grade1=0,grade2=0,i=1 i++ 結(jié)束 2)語言描述如下: 此題目主要運用了循環(huán)語句。首先用隨機數(shù)產(chǎn)生器產(chǎn)生產(chǎn)生玩家投骰子的點數(shù); 接下來根據(jù)點數(shù)計算玩家的分;接下來判斷投擲的次數(shù)是否達到5次是的話比較一方的累計分數(shù)是不是在另一方的1.3倍以上,是的話則勝利,否的話繼續(xù)投擲! ?2.1.4調(diào)試過程及實驗結(jié)果 1)調(diào)試過程遇到的問題與解決方案: 沒能正確理解“當(dāng)雙方都擲10次或經(jīng)過5次后一方累計分數(shù)多出另一方的30%及以上”這句話的意思,以為是滿五或者滿十的時候帶累計總分一次然后比較分數(shù),確定獲勝方!所以將“if(i>=6)”z這個語句寫成了“if(i==6)”,在后來的調(diào)試過程中發(fā)現(xiàn),及時改正了! 2)實驗結(jié)果如下: 2.2射擊游戲 ?2.2.1題目內(nèi)容的描述 在程序運行時屏幕上方第一行隨機出現(xiàn)一個 符號,要求游戲者輸入一個1-80之間的整數(shù),當(dāng)用戶輸入一個整數(shù)后,一個*立即從屏幕底端的該整數(shù)列向上移動,若移動到屏幕的頂端能撞上 符號,則游戲者獲勝;若沒有撞上,則要求再輸入一個整數(shù),共允許輸入5次,如果一直沒有撞上,則認為游戲者輸。 提示: 1)輸入 符號可以采用printf("%c",\1) 2)顯示*號向上移動:輸出一些空行;輸出*號;以循環(huán)的方式增加延時(for(i=0;i<100000;i++););clrscr()清屏重新繪制*號。 ?2.2.2輸入數(shù)據(jù)類型、格式和內(nèi)容限制和輸出數(shù)據(jù)的說明 1)數(shù)據(jù)類型:整型、長整型;2)內(nèi)容限制:鍵入數(shù)字 3)輸出數(shù)據(jù):挑戰(zhàn)成功還是失敗獲勝一方;4)System(“cls”),清屏。 ?2.2.3主要模塊的算法描述 1)程序流程圖 開始 隨機產(chǎn)生數(shù),而后令笑臉置頂k 玩家鍵入數(shù)字l,i=1 k=l i=i+1 i=5 玩家獲勝 玩家失敗 是 否 否 是 結(jié)束 2)簡單的語言描述: 清屏;然后循環(huán)每行輸出*;依次循環(huán),判斷是否擊中目標(biāo);5次輸入結(jié)束,或者擊中目標(biāo)結(jié)束。 ?2.2.4調(diào)試過程及實驗結(jié)果 1)調(diào)試過程遇到的問題與解決方案: 在首次寫完代碼之后,運行發(fā)現(xiàn)無法將 圖形置于屏幕第一行,之后查閱資料發(fā)現(xiàn)是代碼控制不夠完整,而后添加代碼修改成功! 2)實驗結(jié)果如下: 2.3計算存款本息之和 ?2.3.1 題目內(nèi)容的描述 以“存款利率”為關(guān)鍵字上網(wǎng)搜索目前我國整存整取不同期限我國的銀行存款利率,只計算一年、三年和五年三種期限。 問題: (1) 要求輸入存錢的本金和期限,求到期能從銀行得到的利息與本金合計。 (2)假設(shè)存款期限為三十年本金為10萬,比較一年、三年和五年滾存三十年后的本息金額。 ?2.3.2輸入數(shù)據(jù)類型、格式和內(nèi)容限制和輸出數(shù)據(jù)的說明 1)數(shù)據(jù)類型:長整型;2)內(nèi)容限制:鍵入本金與年限; 3)輸出數(shù)據(jù):本息和PI ?2.3.3主要模塊的算法描述 (1)1)程序流程圖如下: 開始 輸入本金m,存款年限n,定義本息和PI i=1 i=3 i=5 PI=m*(1+0.0325*1); PI=m*(1+0.0425*3); PI=m*(1+0.0475*5); 是 否 是 否 是 years error!!! 輸出結(jié)果PI 否 結(jié)束 2)語言描述如下: 輸入限定之內(nèi)的年份與存款金額,選擇對應(yīng)的年利率計算本息和。 (2) 1) 程序流程圖如下 開始 m=100000,n,i,sum1,sum2,sum3 sum1=m*(1+0.0325*1); m=sum1; ; i=1 i=3 i=5 i<=30 i<=30 i<=30 sum2=m*(1+0.0425*3); m=sum2; sum3=m*(1+0.0475*5); n=sum3; i+=3 i++ i+=5 是 否 是 是 否 否 分別輸出一、三、五滾存三十年的本息額,與比較之后最大的一項 sum2>sum1&&sum2>sum3 否 否 否 是 否 否 結(jié)束 2)語言描述如下: 存款期限為三十年,本金為10萬,分別計算一年、三年和五年滾存三十年后的本息金額,然后進行比較,輸出分別輸出一年、三年和五年滾存三十年后的本息金額和最大的本息額。 ?2.3.4調(diào)試過程及實驗結(jié)果 1)調(diào)試過程遇到的問題與解決方案: (1)在初次編程中,將本金,年份定義成int型,在后來的測試過程中發(fā)現(xiàn)不合適,因為年利率有多個小數(shù)點,最終更正用float定義! (2)在寫代碼時,部分代碼忘記標(biāo)下標(biāo),導(dǎo)致結(jié)果如下,第一次修改時將float改成double未能成功,而后檢查后運行正確! 2)實驗結(jié)果如下: (1) (2) 2.4肇事逃逸 ?2.4.1 題目內(nèi)容的描述 某部閩DT的出租車交通肇事逃逸,現(xiàn)場無人看清后面的四位數(shù)字,但三位目擊群眾提供信息如下: 1) 車牌號后兩位相同; 2) 車牌號前兩位相同; 3) 車牌號是一個整數(shù)的平方。 請編程查出肇事逃逸車輛的車牌號。 ?2.4.2輸入數(shù)據(jù)類型、格式和內(nèi)容限制和輸出數(shù)據(jù)的說明 1)數(shù)據(jù)類型:整型;2)內(nèi)容限制:前兩位相同,后兩位相同,整數(shù)的平方; 3)輸出數(shù)據(jù):四位整數(shù) ?2.4.3主要模塊的算法描述 2) 程序流程圖如下: 開始 i=0, j=0, k=0, l ,i<=9, j<=9,k<=100 l=1000*i+100*i+10*j+j; k*k==l i=i+1,j=j+1,k=k=1 輸出結(jié)果l 否 是 2)語言描述如下: 前兩位,后兩位相同,則前兩位用i表示,后兩位用均表示,用k是100以內(nèi)的兩位整數(shù),l表示這個四位數(shù),用循環(huán)語句依次判斷結(jié)果適合公式:k*k=l=1000*i+100*i+10*j+j,即為肇事車牌號! ?2.4.4調(diào)試過程及實驗結(jié)果 1)調(diào)試過程遇到的問題與解決方案: 書寫代碼時,定義四位車牌號為l,由于字母l與數(shù)字1比較像,結(jié)果導(dǎo)致混淆,在vc環(huán)境運行后,發(fā)現(xiàn)錯誤,及時改正!在以后,將盡量少使用字母l來定義變量! 2)實驗結(jié)果如下: 2.5禮炮 ?2.5.1題目內(nèi)容的描述 鳴放禮炮起源于英國。據(jù)說400多年前英國海軍用的是火炮。當(dāng)戰(zhàn)艦進入友好國家的港口之前,或在公海上與友好國家的艦船相遇時,為了表示沒有敵意,便把船上大炮內(nèi)的炮彈統(tǒng)統(tǒng)放掉,對方的海岸炮艦船也同樣做以表示回報。這種做法以后就逐漸成為互致敬意的一種禮儀。由于當(dāng)時最大的戰(zhàn)艦裝有大炮21門,所以鳴炮21響就成了一種最高禮節(jié)。 有四艘戰(zhàn)艦ABCD開始鳴放禮炮各21響,已知A戰(zhàn)艦每隔5秒放一次,B 戰(zhàn)艦每隔6秒放一次, C戰(zhàn)艦每隔7秒放一次, D戰(zhàn)艦每隔8秒放一次.假設(shè)各炮手對時間掌握非常準(zhǔn)確,請問觀眾共可以聽到幾次禮炮聲? ?2.5.2輸入數(shù)據(jù)類型、格式和內(nèi)容限制和輸出數(shù)據(jù)的說明 1) 數(shù)據(jù)類型:整型;2)內(nèi)容限制:題目依據(jù); 3) 用到的主要語句:循環(huán)條件判斷;4)輸出數(shù)據(jù):禮炮聲(整型)。 ?2.5.3系統(tǒng)主要模塊的算法描述 1)程序流程圖如下: 初始化i=1,j=0 i<=160 (i%5==0||i%6==0||i%7==0||i%8==0)&&i<=100 (i%6==0||i%7==0||i%8 ==0)&&(i>100&&i<=120) (i%7==0||i%8==0)&&(i>120 && i<=140) (i%8==0)&&(i>140&&i<=160) 輸出j 開始 結(jié)束 是 否 否 否 是 是 是 是 否 i++,j++ i++ 否 2) 簡要的語言描述如下: 根據(jù)條件“A戰(zhàn)艦每隔5秒放一次,B 戰(zhàn)艦每隔6秒放一次, C戰(zhàn)艦每隔7秒放一次, D戰(zhàn)艦每隔8秒放一次.”確定可能性!依次判斷,累計聽到的次數(shù),得出結(jié)果! ?2.5.4調(diào)試過程及實驗結(jié)果 1) 調(diào)試過程遇到的問題與解決方案: 發(fā)現(xiàn)定義變i是與int之間沒有空格,導(dǎo)致結(jié)果如下,調(diào)試修改正確。 2) 實驗結(jié)果如下: 2.6汽車加油 ?2.6.1題目內(nèi)容的描述 一輛汽車加滿油后可行駛n公里。旅途中有若干個加油站。設(shè)計一個有效算法,指出應(yīng)在哪些加油站??考佑?,使沿途加油次數(shù)最少。輸入:第一行有2 個正整數(shù)N和K(1 <= N <= 100,1 <= K< = 100),表示汽車加滿油后可行駛N公里,且旅途中有K個加油站。接下來的1 行中,有K+1 個整數(shù),表示第K個加油站與第K-1 個加油站之間的距離。第0 個加油站表示出發(fā)地,汽車已加滿油。第K+1 個整數(shù)表示第K個加油站與目的地的距離。輸出:將編程計算出的最少加油次數(shù)輸出。如果無法到達目的地,則輸出 No Solution。(注意:No和Solution之間有一個空格)。 例如:輸入:8 8 3 2 3 6 5 4 2 7 2 輸出:5 ?2.6.2輸入數(shù)據(jù)類型、格式和內(nèi)容限制和輸出數(shù)據(jù)的說明 3) 數(shù)據(jù)類型:數(shù)組類型;2)內(nèi)容限制:鍵入數(shù)據(jù): 4) 用到的主要語句:循環(huán)條件判斷;4)輸出數(shù)據(jù):加油次數(shù)(整型)。 ?2.6.3系統(tǒng)主要模塊的算法描述 1)簡要的語言描述 按題目要求輸入數(shù)據(jù);首先判斷可行駛的路程是否足夠汽車到達加油站;如果不能到達,則需要加油,在此處記錄一次并循環(huán);得出累計加油次數(shù)之和算得出結(jié)果。 ?2.6.4調(diào)試過程及實驗結(jié)果 1)實驗結(jié)果如下: 2.8大優(yōu)惠 ?2.8.1 題目內(nèi)容的描述 中國移動推出最新的手機資費優(yōu)惠方案,按照這個方案Tom的手機每天消費1元,每消費K元就可以獲贈1元,一開始Tom有M元,問最多可以用多少天? 輸入的測試數(shù)據(jù)為一行,實例包括2個整數(shù)M, K(2 <= K <= M <= 1000)。輸出一個整數(shù),表示M元可以用的天數(shù)。 ?2.8.2輸入數(shù)據(jù)類型、格式和內(nèi)容限制和輸出數(shù)據(jù)的說明 1)數(shù)據(jù)類型:整型;2)內(nèi)容限制:鍵入數(shù)字M、K; 3)輸出數(shù)據(jù):可以使用的天數(shù)。 ?2.8.3主要模塊的算法描述 1) 程序流程圖如下: 開始 M〉0 i%K==0 i++,M=M-1; M=M+1 可用天數(shù)i 是 否 是 結(jié)束 K,M,i=0,2 <= K <= M <= 1000 否 2)語言描述如下: 此題目主要運用了循環(huán)、判斷語句。首先鍵入總錢數(shù)M與元獲贈1元需消費的錢數(shù)K,判斷M與0的關(guān)系,下來根據(jù)情況執(zhí)行程序,直到錢數(shù)小于等于零時終止輸出天數(shù)。 ?2.8.4調(diào)試過程及實驗結(jié)果 1)調(diào)試過程遇到的問題與解決方案: 沒有仔細閱讀題目,導(dǎo)致在后來的測試中,輸入的數(shù)據(jù)有M>K的,與事實不相符合,在后來的檢查調(diào)試過程中,加入了限定的條件! 2)實驗結(jié)果如下: 2.9擲骰子游戲 ?2.9.1 題目內(nèi)容的描述 國王用金幣獎勵他忠誠的侍從。第一天侍從工作結(jié)束后,國王獎勵了他一個金幣;接著的兩天侍從工作中(第二天,第三天)的每一天,國王獎勵了他兩個金幣;接著的三天侍從工作中(第四天,第五天,第六天)的每一天,國王獎勵了他三個金幣;接著的四天侍從工作中(第七天,第八天,第九天,第十天)的每一天,國王獎勵了他四個金幣。這種獎勵的模式將是固定不變的,即在N天侍從工作中的每一天,國王將獎勵他N個金幣;接著的N+1天的侍從工作中的每一天,國王將獎勵他N+1個金幣。 要求在給定的天數(shù)時,你的程序能夠統(tǒng)計國王總共獎勵了侍從多少金幣。 ?2.9.2輸入數(shù)據(jù)類型、格式和內(nèi)容限制和輸出數(shù)據(jù)的說明 1)數(shù)據(jù)類型:整型;2)內(nèi)容限制:鍵入天數(shù); 3)輸出數(shù)據(jù):整型輸出金幣個數(shù)。 ?2.9.3主要模塊的算法描述 3) 程序流程圖如下: 開始 i=1,sum=0 sum=0 輸入天數(shù)j, j!=0 j>=i sum=sum+i*i,j=j-i; sum=sum+j*i,j=0; 輸出金幣數(shù)sum 結(jié)束 是 否 i++ 2)語言描述如下: 了解題意之后得出,主要的數(shù)據(jù)間的關(guān)系為算法為sum=sum+i*i,j=j-i,通過判斷j,之間的關(guān)系終止進行總求和輸出結(jié)果。 ?2.9.4調(diào)試過程及實驗結(jié)果 1)調(diào)試過程遇到的問題與解決方案:在寫思考是忘記天數(shù)不能為零,再后來的寫代碼是也沒有注意,后來發(fā)現(xiàn)不符合實際,添加代碼“j!=0”,修改成功! 2) 實驗結(jié)果如下: 二、 課程設(shè)計分析與總結(jié) 由于上學(xué)期在語言的學(xué)習(xí)方面沒有足夠的重視,因此,基礎(chǔ)功不是很扎實,在這次課程設(shè)計中顯得特別吃力,不過最終還是基本完成了此次課程設(shè)計的內(nèi)容。 在各個實驗中解決問題的基本流程是:分析問題→分析解決問題的基本流程→選擇合適的算法語句→書寫程序→調(diào)試修改→按要求書寫實驗報告。 在這些過程中,我認為分析問題的解決流程最為重要,分析好解決流程之后,就可以清楚的知道自己這一步要干什么,下一步要干什么,思路就顯得十分清楚,按照這個流程解決問題是我感覺做得好的一面。 不過也有很多不足,例如:好久沒碰C語言了,for語句,while語句的基本功能都模糊了,在選擇運用時還要在課本、網(wǎng)絡(luò)上熟悉這些內(nèi)容,還有一點就是自己對函數(shù)、模塊化的思想掌握不夠,按照實驗要求需運用模塊化的方式來解決問題,自己卻很少使用這種思想,這就是實驗中的不足之處。 總而言之,通過這次5天的課程設(shè)計我進一步了解C程序設(shè)計語言的編程功能,握C程序設(shè)計語言的相關(guān)知識,體會到學(xué)以致用,并能將程序設(shè)計的知識與專業(yè)知識有效地結(jié)合,更全面系統(tǒng)地了解行業(yè)知識。 眾多不足之處我會在大二上學(xué)期重修《高級語言程序設(shè)計》時進一步加固,力爭將這門基礎(chǔ)課真正的學(xué)好、用好,擺正思想,為以后的專業(yè)課的學(xué)習(xí)大好基礎(chǔ)! 最后感謝謝老師的一而再再而三的嚴格要求及耐心指導(dǎo),感謝感謝同學(xué)們的幫助,謝謝你們! 附錄:源程序清單(保存在code-.cpp) 2.1擲骰子游戲:①擲骰子游戲方法一.cpp #include- 1.請仔細閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點此認領(lǐng)!既往收益都歸您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該PPT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計者僅對作品中獨創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 語言 課程設(shè)計 報告 01
鏈接地址:http://www.820124.com/p-8876937.html