C語(yǔ)言課程設(shè)計(jì)報(bào)告01.doc
C語(yǔ)言程序設(shè)計(jì)課程設(shè)計(jì)報(bào)告(學(xué)年 第 學(xué)期) 專 業(yè):班 級(jí):姓名學(xué)號(hào):姓 名:指導(dǎo)教師:成 績(jī): 目 錄一、課程設(shè)計(jì)的目的與要求1二、方案實(shí)現(xiàn)與調(diào)試 12.1 擲骰子游戲12.2 射擊游戲32.3 計(jì)算存款本息之和52.4 肇事逃逸82.5 禮炮102.6 汽車加油122.8大優(yōu)惠132.9 金幣15三、課程設(shè)計(jì)分析與總結(jié)17附錄 程序清單17一、課程設(shè)計(jì)的目的與要求(一)實(shí)驗(yàn)?zāi)康腃語(yǔ)言是一種編程靈活,特色鮮明的程序設(shè)計(jì)語(yǔ)言。C語(yǔ)言除了學(xué)習(xí)必須的基本知識(shí),如概念,方法和語(yǔ)法規(guī)則之外,更重要的是進(jìn)行實(shí)訓(xùn),以提高學(xué)習(xí)者的動(dòng)手和編程能力,這是學(xué)習(xí)語(yǔ)言的最終目的。結(jié)合多年來(lái)的教學(xué)經(jīng)驗(yàn),根據(jù)學(xué)生的學(xué)習(xí)情況,為配合教學(xué)過(guò)程,使“項(xiàng)目教學(xué)法”能在本質(zhì)上促使學(xué)生有更大進(jìn)步,特編寫了該C語(yǔ)言程序設(shè)計(jì)任務(wù)書,以在實(shí)訓(xùn)過(guò)程中給學(xué)生提供幫助。達(dá)到如下目的:1 在課程結(jié)束之前,讓學(xué)生進(jìn)一步了解C程序設(shè)計(jì)語(yǔ)言的編程功能;2 讓學(xué)生扎實(shí)掌握C程序設(shè)計(jì)語(yǔ)言的相關(guān)知識(shí);3 通過(guò)一些有實(shí)際意義的程序設(shè)計(jì),使學(xué)生體會(huì)到學(xué)以致用,并能將程序設(shè)計(jì)的知識(shí)與專業(yè)知識(shí)有效地結(jié)合,更全面系統(tǒng)地了解行業(yè)知識(shí)。(二)設(shè)計(jì)要求根據(jù)實(shí)驗(yàn)內(nèi)容的要求自由選定題目。編寫程序要求遵循如下基本要求:l 模塊化程序設(shè)計(jì)l 鋸齒型書寫格式l 必須上機(jī)調(diào)試通過(guò)(三)課程設(shè)計(jì)報(bào)告(按C語(yǔ)言程序設(shè)計(jì)課程設(shè)計(jì)報(bào)告格式要求完成)1、設(shè)計(jì)目的2、總體設(shè)計(jì)(程序設(shè)計(jì)組成框圖、流程圖)3、詳細(xì)設(shè)計(jì)、模塊功能說(shuō)明(如函數(shù)功能、入口及出口參數(shù)說(shuō)明,函數(shù)調(diào)用關(guān)系描述等)。4、調(diào)試與測(cè)試:調(diào)試方法,測(cè)試結(jié)果的分析與討論,測(cè)試過(guò)程中遇到的主要問(wèn)題及采取的解決措施。5、源程序清單和執(zhí)行結(jié)果:源程序中應(yīng)有足夠的注釋。(四)、檢查標(biāo)準(zhǔn)1、學(xué)生必須編寫可運(yùn)行的程序,對(duì)教師的提問(wèn)能熟練地當(dāng)面解釋清楚,回答的問(wèn)題和程序運(yùn)行的結(jié)果作為評(píng)分的主要衡量標(biāo)準(zhǔn);(課程設(shè)計(jì)當(dāng)周的周三開(kāi)始逐一檢查)2、按照本文后要求須提交電子內(nèi)容的清單提交相關(guān)內(nèi)容。二、方案實(shí)現(xiàn)與調(diào)試2.1擲骰子游戲(注,此題目用了兩種方法,方法一:一般的main函數(shù)方式;方法二:加入函數(shù)分模塊的方式。代碼見(jiàn)附錄)2.1.1 題目?jī)?nèi)容的描述 兩人玩骰子,游戲規(guī)則如下:1) 兩人輪流擲骰子,每次擲兩個(gè),每人最多擲10次。2) 將每人每次的分值累加計(jì)分3) 當(dāng)兩個(gè)骰子點(diǎn)數(shù)都為6時(shí),計(jì)8分;當(dāng)兩個(gè)點(diǎn)數(shù)相等且不為兩個(gè)6時(shí),計(jì)7分;當(dāng)兩個(gè)點(diǎn)數(shù)不一樣時(shí),計(jì)其中點(diǎn)數(shù)較小的骰子的點(diǎn)數(shù)。4) 結(jié)束條件:當(dāng)雙方都擲10次或經(jīng)過(guò)5次后一方累計(jì)分?jǐn)?shù)多出另一方的30%及以上。最后顯示雙方分?jǐn)?shù)并判定優(yōu)勝者。2.1.2輸入數(shù)據(jù)類型、格式和內(nèi)容限制和輸出數(shù)據(jù)的說(shuō)明 1)數(shù)據(jù)類型:整型;2)內(nèi)容限制:隨機(jī)數(shù)的產(chǎn)生;3)輸出數(shù)據(jù):獲勝一方。2.1.3主要模塊的算法描述 1) 程序流程圖如下:開(kāi)始第一人擲骰子計(jì)算第一人得分grade1第二人擲骰子計(jì)算第二人得分grade211>=i>=6一方的成績(jī)的是否大于等于另一方的1.3倍否是獲勝方是否初始化grade1=0,grade2=0,i=1i+結(jié)束2)語(yǔ)言描述如下: 此題目主要運(yùn)用了循環(huán)語(yǔ)句。首先用隨機(jī)數(shù)產(chǎn)生器產(chǎn)生產(chǎn)生玩家投骰子的點(diǎn)數(shù);接下來(lái)根據(jù)點(diǎn)數(shù)計(jì)算玩家的分;接下來(lái)判斷投擲的次數(shù)是否達(dá)到5次是的話比較一方的累計(jì)分?jǐn)?shù)是不是在另一方的1.3倍以上,是的話則勝利,否的話繼續(xù)投擲!2.1.4調(diào)試過(guò)程及實(shí)驗(yàn)結(jié)果1)調(diào)試過(guò)程遇到的問(wèn)題與解決方案:沒(méi)能正確理解“當(dāng)雙方都擲10次或經(jīng)過(guò)5次后一方累計(jì)分?jǐn)?shù)多出另一方的30%及以上”這句話的意思,以為是滿五或者滿十的時(shí)候帶累計(jì)總分一次然后比較分?jǐn)?shù),確定獲勝方!所以將“if(i>=6)”z這個(gè)語(yǔ)句寫成了“if(i=6)”,在后來(lái)的調(diào)試過(guò)程中發(fā)現(xiàn),及時(shí)改正了!2)實(shí)驗(yàn)結(jié)果如下:2.2射擊游戲2.2.1題目?jī)?nèi)容的描述 在程序運(yùn)行時(shí)屏幕上方第一行隨機(jī)出現(xiàn)一個(gè) 符號(hào),要求游戲者輸入一個(gè)1-80之間的整數(shù),當(dāng)用戶輸入一個(gè)整數(shù)后,一個(gè)*立即從屏幕底端的該整數(shù)列向上移動(dòng),若移動(dòng)到屏幕的頂端能撞上 符號(hào),則游戲者獲勝;若沒(méi)有撞上,則要求再輸入一個(gè)整數(shù),共允許輸入5次,如果一直沒(méi)有撞上,則認(rèn)為游戲者輸。 提示: 1)輸入 符號(hào)可以采用printf("%c",1) 2)顯示*號(hào)向上移動(dòng):輸出一些空行;輸出*號(hào);以循環(huán)的方式增加延時(shí)(for(i=0;i<100000;i+););clrscr()清屏重新繪制*號(hào)。2.2.2輸入數(shù)據(jù)類型、格式和內(nèi)容限制和輸出數(shù)據(jù)的說(shuō)明 1)數(shù)據(jù)類型:整型、長(zhǎng)整型;2)內(nèi)容限制:鍵入數(shù)字3)輸出數(shù)據(jù):挑戰(zhàn)成功還是失敗獲勝一方;4)System(“cls”),清屏。2.2.3主要模塊的算法描述 1)程序流程圖 開(kāi)始隨機(jī)產(chǎn)生數(shù),而后令笑臉置頂k玩家鍵入數(shù)字l,i=1k=l i=i+1i=5玩家獲勝玩家失敗是否否是結(jié)束2)簡(jiǎn)單的語(yǔ)言描述:清屏;然后循環(huán)每行輸出*;依次循環(huán),判斷是否擊中目標(biāo);5次輸入結(jié)束,或者擊中目標(biāo)結(jié)束。2.2.4調(diào)試過(guò)程及實(shí)驗(yàn)結(jié)果1)調(diào)試過(guò)程遇到的問(wèn)題與解決方案: 在首次寫完代碼之后,運(yùn)行發(fā)現(xiàn)無(wú)法將 圖形置于屏幕第一行,之后查閱資料發(fā)現(xiàn)是代碼控制不夠完整,而后添加代碼修改成功!2)實(shí)驗(yàn)結(jié)果如下:2.3計(jì)算存款本息之和2.3.1 題目?jī)?nèi)容的描述 以“存款利率”為關(guān)鍵字上網(wǎng)搜索目前我國(guó)整存整取不同期限我國(guó)的銀行存款利率,只計(jì)算一年、三年和五年三種期限。 問(wèn)題: (1) 要求輸入存錢的本金和期限,求到期能從銀行得到的利息與本金合計(jì)。 (2)假設(shè)存款期限為三十年本金為10萬(wàn),比較一年、三年和五年滾存三十年后的本息金額。2.3.2輸入數(shù)據(jù)類型、格式和內(nèi)容限制和輸出數(shù)據(jù)的說(shuō)明 1)數(shù)據(jù)類型:長(zhǎng)整型;2)內(nèi)容限制:鍵入本金與年限;3)輸出數(shù)據(jù):本息和PI 2.3.3主要模塊的算法描述 (1)1)程序流程圖如下: 開(kāi)始輸入本金m,存款年限n,定義本息和PIi=1i=3i=5PI=m*(1+0.0325*1);PI=m*(1+0.0425*3);PI=m*(1+0.0475*5);是否是否是years error!輸出結(jié)果PI否結(jié)束2)語(yǔ)言描述如下:輸入限定之內(nèi)的年份與存款金額,選擇對(duì)應(yīng)的年利率計(jì)算本息和。 (2) 1) 程序流程圖如下 開(kāi)始m=100000,n,i,sum1,sum2,sum3sum1=m*(1+0.0325*1); m=sum1;i=1i=3i=5i<=30i<=30i<=30sum2=m*(1+0.0425*3); m=sum2;sum3=m*(1+0.0475*5); n=sum3;i+=3i+i+=5是否是是否否分別輸出一、三、五滾存三十年的本息額,與比較之后最大的一項(xiàng)sum2>sum1&&sum2>sum3否否否是否否結(jié)束2)語(yǔ)言描述如下: 存款期限為三十年,本金為10萬(wàn),分別計(jì)算一年、三年和五年滾存三十年后的本息金額,然后進(jìn)行比較,輸出分別輸出一年、三年和五年滾存三十年后的本息金額和最大的本息額。2.3.4調(diào)試過(guò)程及實(shí)驗(yàn)結(jié)果1)調(diào)試過(guò)程遇到的問(wèn)題與解決方案:(1)在初次編程中,將本金,年份定義成int型,在后來(lái)的測(cè)試過(guò)程中發(fā)現(xiàn)不合適,因?yàn)槟昀视卸鄠€(gè)小數(shù)點(diǎn),最終更正用float定義!(2)在寫代碼時(shí),部分代碼忘記標(biāo)下標(biāo),導(dǎo)致結(jié)果如下,第一次修改時(shí)將float改成double未能成功,而后檢查后運(yùn)行正確!2)實(shí)驗(yàn)結(jié)果如下: (1) (2) 2.4肇事逃逸2.4.1 題目?jī)?nèi)容的描述 某部閩DT的出租車交通肇事逃逸,現(xiàn)場(chǎng)無(wú)人看清后面的四位數(shù)字,但三位目擊群眾提供信息如下:1) 車牌號(hào)后兩位相同; 2) 車牌號(hào)前兩位相同; 3) 車牌號(hào)是一個(gè)整數(shù)的平方。請(qǐng)編程查出肇事逃逸車輛的車牌號(hào)。2.4.2輸入數(shù)據(jù)類型、格式和內(nèi)容限制和輸出數(shù)據(jù)的說(shuō)明 1)數(shù)據(jù)類型:整型;2)內(nèi)容限制:前兩位相同,后兩位相同,整數(shù)的平方;3)輸出數(shù)據(jù):四位整數(shù)2.4.3主要模塊的算法描述 2) 程序流程圖如下:開(kāi)始i=0, j=0, k=0, l ,i<=9, j<=9,k<=100l=1000*i+100*i+10*j+j;k*k=li=i+1,j=j+1,k=k=1輸出結(jié)果l否是2)語(yǔ)言描述如下: 前兩位,后兩位相同,則前兩位用i表示,后兩位用均表示,用k是100以內(nèi)的兩位整數(shù),l表示這個(gè)四位數(shù),用循環(huán)語(yǔ)句依次判斷結(jié)果適合公式:k*k=l=1000*i+100*i+10*j+j,即為肇事車牌號(hào)!2.4.4調(diào)試過(guò)程及實(shí)驗(yàn)結(jié)果1)調(diào)試過(guò)程遇到的問(wèn)題與解決方案: 書寫代碼時(shí),定義四位車牌號(hào)為l,由于字母l與數(shù)字1比較像,結(jié)果導(dǎo)致混淆,在vc環(huán)境運(yùn)行后,發(fā)現(xiàn)錯(cuò)誤,及時(shí)改正!在以后,將盡量少使用字母l來(lái)定義變量!2)實(shí)驗(yàn)結(jié)果如下: 2.5禮炮2.5.1題目?jī)?nèi)容的描述 鳴放禮炮起源于英國(guó)。據(jù)說(shuō)400多年前英國(guó)海軍用的是火炮。當(dāng)戰(zhàn)艦進(jìn)入友好國(guó)家的港口之前,或在公海上與友好國(guó)家的艦船相遇時(shí),為了表示沒(méi)有敵意,便把船上大炮內(nèi)的炮彈統(tǒng)統(tǒng)放掉,對(duì)方的海岸炮艦船也同樣做以表示回報(bào)。這種做法以后就逐漸成為互致敬意的一種禮儀。由于當(dāng)時(shí)最大的戰(zhàn)艦裝有大炮21門,所以鳴炮21響就成了一種最高禮節(jié)。 有四艘戰(zhàn)艦ABCD開(kāi)始鳴放禮炮各21響,已知A戰(zhàn)艦每隔5秒放一次,B 戰(zhàn)艦每隔6秒放一次, C戰(zhàn)艦每隔7秒放一次, D戰(zhàn)艦每隔8秒放一次.假設(shè)各炮手對(duì)時(shí)間掌握非常準(zhǔn)確,請(qǐng)問(wèn)觀眾共可以聽(tīng)到幾次禮炮聲?2.5.2輸入數(shù)據(jù)類型、格式和內(nèi)容限制和輸出數(shù)據(jù)的說(shuō)明1) 數(shù)據(jù)類型:整型;2)內(nèi)容限制:題目依據(jù);3) 用到的主要語(yǔ)句:循環(huán)條件判斷;4)輸出數(shù)據(jù):禮炮聲(整型)。2.5.3系統(tǒng)主要模塊的算法描述 1)程序流程圖如下: 初始化i=1,j=0i<=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開(kāi)始結(jié)束是否否否是是是是否i+,j+i+否2) 簡(jiǎn)要的語(yǔ)言描述如下:根據(jù)條件“A戰(zhàn)艦每隔5秒放一次,B 戰(zhàn)艦每隔6秒放一次, C戰(zhàn)艦每隔7秒放一次, D戰(zhàn)艦每隔8秒放一次.”確定可能性!依次判斷,累計(jì)聽(tīng)到的次數(shù),得出結(jié)果!2.5.4調(diào)試過(guò)程及實(shí)驗(yàn)結(jié)果1) 調(diào)試過(guò)程遇到的問(wèn)題與解決方案: 發(fā)現(xiàn)定義變i是與int之間沒(méi)有空格,導(dǎo)致結(jié)果如下,調(diào)試修改正確。 2) 實(shí)驗(yàn)結(jié)果如下: 2.6汽車加油2.6.1題目?jī)?nèi)容的描述 一輛汽車加滿油后可行駛n公里。旅途中有若干個(gè)加油站。設(shè)計(jì)一個(gè)有效算法,指出應(yīng)在哪些加油站??考佑?,使沿途加油次數(shù)最少。輸入:第一行有2 個(gè)正整數(shù)N和K(1 <= N <= 100,1 <= K< = 100),表示汽車加滿油后可行駛N公里,且旅途中有K個(gè)加油站。接下來(lái)的1 行中,有K+1 個(gè)整數(shù),表示第K個(gè)加油站與第K-1 個(gè)加油站之間的距離。第0 個(gè)加油站表示出發(fā)地,汽車已加滿油。第K+1 個(gè)整數(shù)表示第K個(gè)加油站與目的地的距離。輸出:將編程計(jì)算出的最少加油次數(shù)輸出。如果無(wú)法到達(dá)目的地,則輸出 No Solution。(注意:No和Solution之間有一個(gè)空格)。例如:輸入:8 83 2 3 6 5 4 2 7 2輸出:52.6.2輸入數(shù)據(jù)類型、格式和內(nèi)容限制和輸出數(shù)據(jù)的說(shuō)明3) 數(shù)據(jù)類型:數(shù)組類型;2)內(nèi)容限制:鍵入數(shù)據(jù):4) 用到的主要語(yǔ)句:循環(huán)條件判斷;4)輸出數(shù)據(jù):加油次數(shù)(整型)。2.6.3系統(tǒng)主要模塊的算法描述 1)簡(jiǎn)要的語(yǔ)言描述 按題目要求輸入數(shù)據(jù);首先判斷可行駛的路程是否足夠汽車到達(dá)加油站;如果不能到達(dá),則需要加油,在此處記錄一次并循環(huán);得出累計(jì)加油次數(shù)之和算得出結(jié)果。2.6.4調(diào)試過(guò)程及實(shí)驗(yàn)結(jié)果1)實(shí)驗(yàn)結(jié)果如下: 2.8大優(yōu)惠2.8.1 題目?jī)?nèi)容的描述 中國(guó)移動(dòng)推出最新的手機(jī)資費(fèi)優(yōu)惠方案,按照這個(gè)方案Tom的手機(jī)每天消費(fèi)1元,每消費(fèi)K元就可以獲贈(zèng)1元,一開(kāi)始Tom有M元,問(wèn)最多可以用多少天?輸入的測(cè)試數(shù)據(jù)為一行,實(shí)例包括2個(gè)整數(shù)M, K(2 <= K <= M <= 1000)。輸出一個(gè)整數(shù),表示M元可以用的天數(shù)。2.8.2輸入數(shù)據(jù)類型、格式和內(nèi)容限制和輸出數(shù)據(jù)的說(shuō)明 1)數(shù)據(jù)類型:整型;2)內(nèi)容限制:鍵入數(shù)字M、K;3)輸出數(shù)據(jù):可以使用的天數(shù)。 2.8.3主要模塊的算法描述 1) 程序流程圖如下: 開(kāi)始M0i%K=0i+,M=M-1;M=M+1可用天數(shù)i是否是結(jié)束K,M,i=0,2 <= K <= M <= 1000否 2)語(yǔ)言描述如下: 此題目主要運(yùn)用了循環(huán)、判斷語(yǔ)句。首先鍵入總錢數(shù)M與元獲贈(zèng)1元需消費(fèi)的錢數(shù)K,判斷M與0的關(guān)系,下來(lái)根據(jù)情況執(zhí)行程序,直到錢數(shù)小于等于零時(shí)終止輸出天數(shù)。2.8.4調(diào)試過(guò)程及實(shí)驗(yàn)結(jié)果1)調(diào)試過(guò)程遇到的問(wèn)題與解決方案:沒(méi)有仔細(xì)閱讀題目,導(dǎo)致在后來(lái)的測(cè)試中,輸入的數(shù)據(jù)有M>K的,與事實(shí)不相符合,在后來(lái)的檢查調(diào)試過(guò)程中,加入了限定的條件!2)實(shí)驗(yàn)結(jié)果如下: 2.9擲骰子游戲2.9.1 題目?jī)?nèi)容的描述 國(guó)王用金幣獎(jiǎng)勵(lì)他忠誠(chéng)的侍從。第一天侍從工作結(jié)束后,國(guó)王獎(jiǎng)勵(lì)了他一個(gè)金幣;接著的兩天侍從工作中(第二天,第三天)的每一天,國(guó)王獎(jiǎng)勵(lì)了他兩個(gè)金幣;接著的三天侍從工作中(第四天,第五天,第六天)的每一天,國(guó)王獎(jiǎng)勵(lì)了他三個(gè)金幣;接著的四天侍從工作中(第七天,第八天,第九天,第十天)的每一天,國(guó)王獎(jiǎng)勵(lì)了他四個(gè)金幣。這種獎(jiǎng)勵(lì)的模式將是固定不變的,即在N天侍從工作中的每一天,國(guó)王將獎(jiǎng)勵(lì)他N個(gè)金幣;接著的N+1天的侍從工作中的每一天,國(guó)王將獎(jiǎng)勵(lì)他N+1個(gè)金幣。要求在給定的天數(shù)時(shí),你的程序能夠統(tǒng)計(jì)國(guó)王總共獎(jiǎng)勵(lì)了侍從多少金幣。2.9.2輸入數(shù)據(jù)類型、格式和內(nèi)容限制和輸出數(shù)據(jù)的說(shuō)明 1)數(shù)據(jù)類型:整型;2)內(nèi)容限制:鍵入天數(shù);3)輸出數(shù)據(jù):整型輸出金幣個(gè)數(shù)。2.9.3主要模塊的算法描述 3) 程序流程圖如下: 開(kāi)始i=1,sum=0sum=0輸入天數(shù)j, j!=0j>=isum=sum+i*i,j=j-i;sum=sum+j*i,j=0;輸出金幣數(shù)sum結(jié)束是否i+2)語(yǔ)言描述如下: 了解題意之后得出,主要的數(shù)據(jù)間的關(guān)系為算法為sum=sum+i*i,j=j-i,通過(guò)判斷j,之間的關(guān)系終止進(jìn)行總求和輸出結(jié)果。2.9.4調(diào)試過(guò)程及實(shí)驗(yàn)結(jié)果1)調(diào)試過(guò)程遇到的問(wèn)題與解決方案:在寫思考是忘記天數(shù)不能為零,再后來(lái)的寫代碼是也沒(méi)有注意,后來(lái)發(fā)現(xiàn)不符合實(shí)際,添加代碼“j!=0”,修改成功!2) 實(shí)驗(yàn)結(jié)果如下: 二、 課程設(shè)計(jì)分析與總結(jié) 由于上學(xué)期在語(yǔ)言的學(xué)習(xí)方面沒(méi)有足夠的重視,因此,基礎(chǔ)功不是很扎實(shí),在這次課程設(shè)計(jì)中顯得特別吃力,不過(guò)最終還是基本完成了此次課程設(shè)計(jì)的內(nèi)容。 在各個(gè)實(shí)驗(yàn)中解決問(wèn)題的基本流程是:分析問(wèn)題分析解決問(wèn)題的基本流程選擇合適的算法語(yǔ)句書寫程序調(diào)試修改按要求書寫實(shí)驗(yàn)報(bào)告。在這些過(guò)程中,我認(rèn)為分析問(wèn)題的解決流程最為重要,分析好解決流程之后,就可以清楚的知道自己這一步要干什么,下一步要干什么,思路就顯得十分清楚,按照這個(gè)流程解決問(wèn)題是我感覺(jué)做得好的一面。不過(guò)也有很多不足,例如:好久沒(méi)碰C語(yǔ)言了,for語(yǔ)句,while語(yǔ)句的基本功能都模糊了,在選擇運(yùn)用時(shí)還要在課本、網(wǎng)絡(luò)上熟悉這些內(nèi)容,還有一點(diǎn)就是自己對(duì)函數(shù)、模塊化的思想掌握不夠,按照實(shí)驗(yàn)要求需運(yùn)用模塊化的方式來(lái)解決問(wèn)題,自己卻很少使用這種思想,這就是實(shí)驗(yàn)中的不足之處??偠灾?,通過(guò)這次5天的課程設(shè)計(jì)我進(jìn)一步了解C程序設(shè)計(jì)語(yǔ)言的編程功能,握C程序設(shè)計(jì)語(yǔ)言的相關(guān)知識(shí),體會(huì)到學(xué)以致用,并能將程序設(shè)計(jì)的知識(shí)與專業(yè)知識(shí)有效地結(jié)合,更全面系統(tǒng)地了解行業(yè)知識(shí)。眾多不足之處我會(huì)在大二上學(xué)期重修高級(jí)語(yǔ)言程序設(shè)計(jì)時(shí)進(jìn)一步加固,力爭(zhēng)將這門基礎(chǔ)課真正的學(xué)好、用好,擺正思想,為以后的專業(yè)課的學(xué)習(xí)大好基礎(chǔ)!最后感謝謝老師的一而再再而三的嚴(yán)格要求及耐心指導(dǎo),感謝感謝同學(xué)們的幫助,謝謝你們!附錄:源程序清單(保存在code-.cpp)2.1擲骰子游戲:擲骰子游戲方法一.cpp#include <stdio.h>#include <stdlib.h>#include <time.h>void main() int i,j,k,l,m,n,grade1=0,grade2=0; srand( (unsigned)time( NULL ) ); /生成隨機(jī)數(shù)產(chǎn)生器 for(i=1; i<11; i+) for(l=1;l<60000000;l+);/程序緩沖的作用/ printf("第一個(gè)人第%d次投出的數(shù)n",i); j=rand()%6+1; printf("%dn",j); k=rand()%6+1; printf("%dn",k); if(k=j=6) grade1=grade1+8; if(k=j=5|k=j=4|k=j=3|k=j=2|k=j=1) grade1=grade1+7; else if(k>j)grade1=grade1+j; elsegrade1=grade1+k; printf("第二個(gè)人第%d次投出的數(shù)n",i); n=rand()%6+1; printf("%dn",n); /rand()產(chǎn)生隨機(jī)數(shù) m=rand()%6+1; printf("%dn",m); if(m=6|n=6) grade2=grade2+8; if(m=n=5|m=n=4|m=n=3|m=n=2|m=n=1) grade2=grade2+7; else if(m>n) grade2=grade2+n; else grade2=grade2+m; if(i>=6) if(grade1>=1.3*grade2|grade2>=1.3*grade1) i=10; printf("第一個(gè)人累計(jì)分?jǐn)?shù)%dn",grade1); printf("第二個(gè)人累計(jì)分?jǐn)?shù)%dn",grade2); if(grade1>grade2) printf("第一個(gè)人獲勝"); if(grade2>grade1)printf("第二個(gè)人獲勝");擲骰子游戲方法二.cpp#include <stdio.h>#include <stdlib.h>#include <time.h>int a(int j,int k)int x=0;if(j=k&&j=6) x=8; else x=7; if(j<k) x=j; else x=k; return x;int b(int m,int n)int y=0;if(m=n&&m=6) y=8;else y=7; if(m<n) y=m; else y=n; return y;void main() int i=1,j,k,m,n,e,f,grade1=0,grade2=0; srand( (unsigned)time( NULL ) ); while (i<=10) j=rand()%6+1; k=rand()%6+1; e=a(j,k); grade1=grade1+a(j,k); printf("第一個(gè)人第%d成績(jī)?yōu)?dn",i,e); m=rand()%6+1; n=rand()%6+1; f=b(m,n); printf("第一個(gè)人第%d成績(jī)?yōu)?dn",i,f); grade2=grade2+b(m,n); i+; if(i>=6&&(grade1>=1.3*grade2|grade2>=1.3*grade1) break; printf("n 第一個(gè)人的總成績(jī)?yōu)?d",grade1); printf("n第二個(gè)人總成績(jī)?yōu)?dnn",grade2); if(grade1>grade2) printf("第一個(gè)人獲勝"); if(grade2>grade1)printf("第二個(gè)人獲勝");2.2射擊游戲:射擊游戲.cpp#include<stdio.h>#include<stdlib.h>#include<time.h>void main() int i,j,k,l,m; long int n; srand(unsigned)time(NULL); /生成隨機(jī)數(shù)產(chǎn)生器 k=rand()%80+1; for(i=0;i<k;i+) printf(" "); printf("%cn",1); for(m=0;m<5;m+) scanf("%d",&l); for(j=10;j>0;j-) system("cls"); for(i=0;i<80;i+) if(i=k) printf("%c",1); else printf(" "); for(i=1;i<j;i+) printf("n"); for(n=0;n<80;n+) if(n=l) printf("*"); else printf(" "); for(n=0;n<100000;n+); if(l=k) printf("恭喜你獲勝,賞金封侯!n"); break; if(m=4) printf("你竟然吃了敗仗,當(dāng)滅九族!n"); 2.3計(jì)算存款本息之和:(1) 計(jì)算存款本息之和(1).cpp #include<stdio.h>void main() float m,n,PI=0;/定義 m存款本金,n存款年限, printf("Please input the principal:"); scanf("%f",&m); printf("Please input the years:"); scanf("%f",&n); if(n=1) PI=m*(1+0.0325*1); else if(n=3) PI=m*(1+0.0425*3); else if(m=5) PI=m*(1+0.0475*5); else printf("years error!n"); printf("The PI are:%fn",PI);(2) 計(jì)算存款本息之和(2).cpp #include<stdio.h>void main()float m=100000,n,sum1,sum2,sum3;int i;for(i=1;i<=30;i+) n=1; sum1=m*(1+0.0325*1); m=sum1; for(i=3;i<=30;i+=3) n=3; sum2=m*(1+0.0425*3); m=sum2; for(i=5;i<=30;i+=5) n=5; sum3=m*(1+0.0475*5); n=sum3; printf("The sum1 is:%fn",sum1);printf("The sum2 is:%fn",sum2);printf("The sum3 is:%fn",sum3);if(sum1>sum2&&sum1>sum3)printf("一年滾存三十年的本息額最多:%fn",sum1);else if(sum2>sum1&&sum2>sum3)printf("二年滾存三十年的本息額最多:%fn",sum2); elseprintf("三年滾存三十年的本息額最多:%fn",sum3);2.4肇事逃逸:肇事逃逸.cpp#include<stdio.h>void main() int i,j,k,l;/i前兩位數(shù),j代表后兩位數(shù),k代表100以內(nèi)任意整數(shù) for(i=0;i<=9;i+) for(j=0;j<=9;j+) if(i!=j) for(k=0;k<=100;k+) l=1000*i+100*i+10*j+j; if(k*k=l) printf("肇事逃逸車輛的車牌號(hào)為:%dn",l); 2.5汽車加油:禮炮.cpp #include <stdio.h>void main () int i,j=0; for(i=1;i<=160;i+) if( (i%5=0|i%6=0|i%7 =0|i%8=0)&&i<=100) j+; if( (i%6=0|i%7=0|i%8 =0)&&(i>100&&i<=120) j+; if( (i%7=0|i%8=0)&&(i>120 && i<=140) j+; if( (i%8=0)&&(i>140&&i<=160) j+; printf ("j=%dn", j); 2.6汽車加油:汽車加油.cpp#include <stdio.h>void main()int K,N,i,j,l999,x=0,y=0; /*i表示第幾個(gè)加油站;j為第K個(gè)加油站與第K-1個(gè)加油站直接的距離;x表示總距離;*/printf("輸入:");scanf("%d%d",&N,&K);for(i=0;i<=K;i+)scanf("%d",&j);li=j;for(i=0;i<=K;i+)if(N<li) printf("No Solution.n");break; elsex=x+li; if(N<x)y+; x=li;if(i=K)printf("輸出:%dn",y);2.8大優(yōu)惠:大優(yōu)惠.cpp#include<stdio.h>void main()int K,M,i=0;printf("Please input K and M n(注意:2 <= K <= M <= 1000,且K與M之間用空格隔開(kāi))n");scanf("%d%d",&K,&M); if(2 <= K <= M <= 1000)while(M>0)i+; M=M-1;if(i%K=0) M=M+1;printf("可用天數(shù)%dn",i);elseprintf("Input is error");2.9擲骰子游戲:金幣.cpp#include<stdio.h>void main()int i,j;int sum=0;printf("Please input daysn");scanf("%d",&j);for(i=1;j!=0;i+)if(j>=i)sum=sum+i*i,j=j-i;elsesum=sum+j*i,j=0;printf("國(guó)王共獎(jiǎng)勵(lì)了侍從%d金幣n",sum);設(shè)計(jì)日志2013-6-24上午:c語(yǔ)言忘了大半,首先在網(wǎng)絡(luò)上復(fù)習(xí)了一下c語(yǔ)言的有關(guān)內(nèi)容;2.1的這一題只是畫出了流程圖,大體代碼書寫完成,沒(méi)有完成實(shí)驗(yàn)報(bào)告內(nèi)容。2013-6-24下午:完成了2.1,2.2的設(shè)計(jì)報(bào)告內(nèi)容;畫出了2.3的流程圖。2013-6-25上午:根據(jù)老師所講,修善了前面幾道題的流程圖。書寫完成2.3的程序代碼! 2013-6-25下午:徹底完成2.3,修改了前面實(shí)驗(yàn)報(bào)告的相關(guān)格式。2013-6-26上午:集中注意開(kāi)始做2.4,2.4不是很難,很快就完成了;下來(lái)之后有點(diǎn)心急了,有的同學(xué)都做完了,跳到2.8開(kāi)始做2.8,由于沒(méi)注意題目中K、M的關(guān)系,忙了半天還是做的錯(cuò)的!后來(lái)急了就詢問(wèn)同桌,便恍然大悟,一口氣做完了2.9。2013-6-26 下午:完成了2.5,初步開(kāi)始了2.6。2013-6-27上午: 首先用第二種方法模塊化的思想從新做了2.1,沒(méi)有徹底做完。2013-6-27下午:繼續(xù)完成第2.1的模塊化做法!完了之后徹底完成了2.6! 大功告成!2013-6-28上午:完成了此次課程設(shè)計(jì)的目錄與分析與總結(jié),最后再次檢查了一下課程設(shè)計(jì)的格式?。ㄗⅲ褐笇?dǎo)教師評(píng)語(yǔ)和成績(jī)所在表格另起一頁(yè))指導(dǎo)教師評(píng) 語(yǔ)課程設(shè)計(jì)成 績(jī)指導(dǎo)教師簽字 年 月 日