數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告紙牌游戲_第1頁(yè)
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告紙牌游戲_第2頁(yè)
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告紙牌游戲_第3頁(yè)
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告紙牌游戲_第4頁(yè)
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告紙牌游戲_第5頁(yè)
已閱讀5頁(yè),還剩18頁(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)介

-.z.學(xué)院學(xué)生課程設(shè)計(jì)〔論文〕題目:紙牌游戲?qū)W生:00000學(xué)號(hào):0所在院(系):數(shù)學(xué)與計(jì)算機(jī)學(xué)院專業(yè):網(wǎng)絡(luò)工程班級(jí):2012級(jí)1班指導(dǎo)教師:世文職稱:教授2014年01月03日學(xué)院教務(wù)處制-.z.學(xué)院本科學(xué)生課程設(shè)計(jì)任務(wù)書(shū)題目紙牌游戲1、課程設(shè)計(jì)的目的通過(guò)本課程設(shè)計(jì)教學(xué)所要到達(dá)的目的是:培養(yǎng)學(xué)生用學(xué)到的書(shū)本知識(shí)解決實(shí)際問(wèn)題的能力;培養(yǎng)實(shí)際工作所需要的動(dòng)手能力;培養(yǎng)學(xué)生以科學(xué)理論和工程上能力的技術(shù),規(guī)地開(kāi)發(fā)大型、復(fù)雜、高質(zhì)量的應(yīng)用軟件和系統(tǒng)軟件具有關(guān)鍵性作用;通過(guò)課程設(shè)計(jì)的實(shí)踐,學(xué)生可以在程序設(shè)計(jì)方法、上機(jī)操作等根本技能和科學(xué)作風(fēng)方面受到比擬系統(tǒng)和嚴(yán)格的訓(xùn)練。2、課程設(shè)計(jì)的容和要求〔包括原始數(shù)據(jù)、技術(shù)要求、工作要求等〕任務(wù):編號(hào)為1-52牌,正面向上,從第2開(kāi)場(chǎng),以2為基數(shù),是2的倍數(shù)的牌翻一次,直到最后一牌;然后,從第3開(kāi)場(chǎng),以3為基數(shù),是3的倍數(shù)的牌翻一次,直到最后一牌;然后…從第4開(kāi)場(chǎng),以4為基數(shù),是4的倍數(shù)的牌翻一次,直到最后一牌;...再依次5的倍數(shù)的牌翻一次,6的,7的直到以52為基數(shù)的翻過(guò),輸出:這時(shí)正面向上的牌有哪些?3、主要參考文獻(xiàn)[1]"數(shù)據(jù)構(gòu)造"〔C語(yǔ)言版〕,嚴(yán)蔚敏,清華大學(xué),2003.[2]"數(shù)據(jù)構(gòu)造題集",嚴(yán)蔚敏,清華大學(xué),2005.[3]"數(shù)據(jù)構(gòu)造"〔C語(yǔ)言版〕,大有,高等教育,2004.[4]"DataStructurewithC++",WilliamFord.WilliamTopp,清華大學(xué),2003.4、課程設(shè)計(jì)工作進(jìn)度方案序號(hào)時(shí)間〔天〕容安排備注11分析設(shè)計(jì)準(zhǔn)備周一22編程調(diào)試階段周二至周三31編寫(xiě)課程設(shè)計(jì)報(bào)告周四41考核周五總計(jì)5〔天〕指導(dǎo)教師〔簽字〕日期年月日教研室意見(jiàn):年月日學(xué)生〔簽字〕:承受任務(wù)時(shí)間:年月日注:任務(wù)書(shū)由指導(dǎo)教師填寫(xiě)。課程設(shè)計(jì)〔論文〕指導(dǎo)教師成績(jī)?cè)u(píng)定表題目名稱紙牌游戲評(píng)分工程分值得分評(píng)價(jià)涵工作表現(xiàn)20%01學(xué)習(xí)態(tài)度6遵守各項(xiàng)紀(jì)律,工作刻苦努力,具有良好的科學(xué)工作態(tài)度。02科學(xué)實(shí)踐、調(diào)研7通過(guò)實(shí)驗(yàn)、試驗(yàn)、查閱文獻(xiàn)、深入生產(chǎn)實(shí)踐等渠道獲取與課程設(shè)計(jì)有關(guān)的材料。03課題工作量7按期圓滿完成規(guī)定的任務(wù),工作量飽滿。能力水平35%04綜合運(yùn)用知識(shí)的能力10能運(yùn)用所學(xué)知識(shí)和技能去發(fā)現(xiàn)與解決實(shí)際問(wèn)題,能正確處理實(shí)驗(yàn)數(shù)據(jù),能對(duì)課題進(jìn)展理論分析,得出有價(jià)值的結(jié)論。05應(yīng)用文獻(xiàn)的能力5能獨(dú)立查閱相關(guān)文獻(xiàn)和從事其他調(diào)研;能提出并較好地論述課題的實(shí)施方案;有收集、加工各種信息及獲取新知識(shí)的能力。06設(shè)計(jì)〔實(shí)驗(yàn)〕能力,方案的設(shè)計(jì)能力5能正確設(shè)計(jì)實(shí)驗(yàn)方案,獨(dú)立進(jìn)展裝置安裝、調(diào)試、操作等實(shí)驗(yàn)工作,數(shù)據(jù)正確、可靠;研究思路清晰、完整。07計(jì)算及計(jì)算機(jī)應(yīng)用能力5具有較強(qiáng)的數(shù)據(jù)運(yùn)算與處理能力;能運(yùn)用計(jì)算機(jī)進(jìn)展資料搜集、加工、處理和輔助設(shè)計(jì)等。08對(duì)計(jì)算或?qū)嶒?yàn)結(jié)果的分析能力〔綜合分析能力、技術(shù)經(jīng)濟(jì)分析能力〕10具有較強(qiáng)的數(shù)據(jù)收集、分析、處理、綜合的能力。成果質(zhì)量45%09插圖〔或圖紙〕質(zhì)量、篇幅、設(shè)計(jì)〔論文〕規(guī)化程度5符合本專業(yè)相關(guān)規(guī)或規(guī)定要求;規(guī)化符合本文件第五條要求。10設(shè)計(jì)說(shuō)明書(shū)〔論文〕質(zhì)量30綜述簡(jiǎn)練完整,有見(jiàn)解;立論正確,論述充分,結(jié)論嚴(yán)謹(jǐn)合理;實(shí)驗(yàn)正確,分析處理科學(xué)。11創(chuàng)新10對(duì)前人工作有改良或突破,或有獨(dú)特見(jiàn)解。成績(jī)指導(dǎo)教師評(píng)語(yǔ)指導(dǎo)教師簽名:年月日-.z.摘要數(shù)據(jù)構(gòu)造課程是計(jì)算機(jī)專業(yè)中必修的核心課程之一,也是一門理論性很強(qiáng)的一門課程,同時(shí)也是一門鍛煉程序涉及能力的實(shí)踐課程,"數(shù)據(jù)構(gòu)造〞成為計(jì)算機(jī)程序設(shè)計(jì)的重要理論技術(shù)根底,它不僅是計(jì)算機(jī)學(xué)科的核心課程,而且已成為其它理工專業(yè)的熱門選修課。主要包括線性表、樹(shù)和二叉樹(shù)以及圖等根本類型的數(shù)據(jù)構(gòu)造。數(shù)據(jù)構(gòu)造是一門研究非數(shù)值計(jì)算的程序設(shè)計(jì)問(wèn)題中計(jì)算機(jī)的操作對(duì)象以及它們之間的關(guān)系和運(yùn)算等的學(xué)科,包括數(shù)據(jù)的邏輯構(gòu)造、數(shù)據(jù)的存儲(chǔ)構(gòu)造和數(shù)據(jù)的運(yùn)算這三個(gè)方面的容,其中邏輯構(gòu)造可分為線性構(gòu)造和非線性構(gòu)造;存儲(chǔ)構(gòu)造可分為順序存儲(chǔ)和鏈?zhǔn)酱鎯?chǔ)兩類,圖那么屬于邏輯構(gòu)造中的非線性構(gòu)造。廣度優(yōu)先搜索(BFS)用的隊(duì)列一步一步完成的,從而找到的是最短路徑。紙牌游戲課程設(shè)計(jì)包括紙牌信息的建立、了解其翻拍的原理、并簡(jiǎn)明闡述翻牌的具體步驟與流程、最后輸出與打印翻牌結(jié)果,整個(gè)過(guò)程使學(xué)生進(jìn)一步理解和掌握課堂上所學(xué)各種根本抽象數(shù)據(jù)類型的邏輯構(gòu)造、存儲(chǔ)構(gòu)造和操作實(shí)現(xiàn)算法,以及它們?cè)诔绦蛑械氖褂梅椒?。掌握一般軟件設(shè)計(jì)的根本容和設(shè)計(jì)方法,培養(yǎng)學(xué)生進(jìn)展規(guī)化軟件設(shè)計(jì)的能力。而且使學(xué)生掌握使用各種計(jì)算機(jī)資料和有關(guān)參考資料的方法,提高學(xué)生進(jìn)展程序設(shè)計(jì)的根本能力。關(guān)鍵詞:數(shù)據(jù)構(gòu)造,紙牌游戲,BFS,遍歷AbstractDatastructurecourseisoneofrequiredcorecurriculuminputermajor,courseisaverypractical,isalsoanexerciseprograminvolvestheabilitytopracticecurriculum,"hasbeeanimportanttheoreticalandtechnicalfoundationofputerprogramdesigndatastructure",itisnotonlythecorecourseofputerscience,andhasbeeahotelectivecourseforothersciencemajors.Mainlyincludesthebasicdatastructuretypelineartable,treeandbinarytreeandgraphoftwo.Datastructureisaresearchofnonputerprogramofnumericalcalculationdesignproblemsinoperatingtheobjectsandtheirrelationshipsandoperationsandotherdisciplines,includinglogicstructure,storagestructureanddataoperationdataofthethreeaspectsofcontent,thelogicalstructurecanbedividedintolinearandnonlinearstructures;storagestructurecanbedividedintosequentialstorageandchainstoretwo,graphbelongstononlinearstructureinthelogicalstructure.Breadthfirstsearch(BFS)withcohortpletedstepbystep,soastofindtheshortestpath.AcardgameSolitaire,curriculumdesignincludesinformationaboutitsprinciple,andexpoundstheflopremakeoftheconcretestepsandprocesses,thefinaloutputandprintflopresults,thewholeprocesstoenablestudentstounderstandandmasterthevariousbasicabstractdatatypescienceclasslogicalstructure,storagestructureandoperationoftherealizationofalgorithm,andtheirintheprocessofusingthemethod.Tomasterthebasiccontentandthegeneraldesignmethodofsoftwaredesign,trainingstudents'abilityofdesignsoftwarespecification.Andtomakethestudentsmastertheuseofvariousputerdataandmethodsforreference,toimprovethestudents'basicabilityofprogramdesign.Keywords:datastructure,cardgames,BFS,traversal-.z.目錄TOC\o"1-3"\h\u30664摘要 I17123Abstract II155651前言 248801.1課題背景 28151.2課程設(shè)計(jì)目的 2238842相關(guān)技術(shù)分析 315252.1概要設(shè)計(jì) 334222.2設(shè)計(jì)原始數(shù)據(jù)的輸入及輸出格式 4271142.3算法流程圖 684083設(shè)計(jì)與實(shí)現(xiàn) 7107633.1數(shù)據(jù)構(gòu)造 724143.2詳細(xì)設(shè)計(jì)和編碼 7111413.2.1定義全局變量:7125263.2.1主要程序代碼與分析如下:762313.3上機(jī)調(diào)試過(guò)程 1028505測(cè)試結(jié)果及其分析 11183986用戶使用說(shuō)明 18250277源代碼 1813690結(jié)論 1924849參考文獻(xiàn) 202370附錄 211前言"數(shù)據(jù)構(gòu)造"是軟件工程專業(yè)的必修課之一,是一門綜合性的專業(yè)根底課。本課程較系統(tǒng)地介紹了軟件設(shè)計(jì)中常用的數(shù)據(jù)構(gòu)造以及相應(yīng)的實(shí)現(xiàn)算法,如線性表、棧、隊(duì)列、樹(shù)和二叉樹(shù),圖、檢索和排序等,并對(duì)性能進(jìn)展分析和比擬,容非常豐富。1.1課題背景"數(shù)據(jù)構(gòu)造〞旨在使學(xué)生學(xué)會(huì)分析研究數(shù)據(jù)對(duì)象的特性,學(xué)會(huì)數(shù)據(jù)的組織方法,以便選擇適宜的數(shù)據(jù)邏輯構(gòu)造和存儲(chǔ)構(gòu)造,以及相應(yīng)的運(yùn)算,把現(xiàn)實(shí)世界中的問(wèn)題轉(zhuǎn)化為計(jì)算機(jī)部的表示和處理,這是一個(gè)良好的程序設(shè)計(jì)技能訓(xùn)練的過(guò)程。"數(shù)據(jù)構(gòu)造〞課程設(shè)計(jì)不僅可以幫助學(xué)生充分理解、穩(wěn)固所學(xué)的根本概念、原理和方法,更重要的是能夠針對(duì)實(shí)際問(wèn)題來(lái)選擇數(shù)據(jù)構(gòu)造,設(shè)計(jì)相應(yīng)的存儲(chǔ)構(gòu)造并加以實(shí)現(xiàn),從而最終解決問(wèn)題。結(jié)合數(shù)據(jù)構(gòu)造所學(xué)知識(shí),要求學(xué)生用C語(yǔ)言編程實(shí)現(xiàn)一個(gè)簡(jiǎn)單的紙牌游戲設(shè)計(jì)。1.2課程設(shè)計(jì)目的〔1〕使學(xué)生進(jìn)一步理解和掌握課堂上所學(xué)各種根本抽象數(shù)據(jù)類型的邏輯構(gòu)造、存儲(chǔ)構(gòu)造和操作實(shí)現(xiàn)算法,以及它們?cè)诔绦蛑械氖褂梅椒ā!?〕使學(xué)生掌握軟件設(shè)計(jì)的根本容和設(shè)計(jì)方法,并培養(yǎng)學(xué)生進(jìn)展規(guī)化軟件設(shè)計(jì)的能力。〔3〕使學(xué)生掌握使用各種計(jì)算機(jī)資料和有關(guān)參考資料,提高學(xué)生進(jìn)展程序設(shè)計(jì)的根本能力。2相關(guān)技術(shù)分析2.1概要設(shè)計(jì)按照題目的要求,首先,應(yīng)對(duì)52牌進(jìn)展編號(hào)并且保存它們的編號(hào)信息,編號(hào)的類型為整型,而對(duì)于這樣固定的數(shù)據(jù),使用整型數(shù)組是最好的,因此,我們需要在程序的開(kāi)場(chǎng)定義一共整型的數(shù)組,同時(shí),為了方便對(duì)翻轉(zhuǎn)過(guò)程的記錄,在定義記錄編號(hào)信息的同時(shí),定義一個(gè)與之相對(duì)應(yīng)的標(biāo)記數(shù)組,數(shù)組類型為整型。該程序的核心為一個(gè)嵌套的循環(huán),所以定義兩個(gè)變量i,j作為循環(huán)條件。接著開(kāi)場(chǎng)對(duì)變量進(jìn)展初始化,首先是編號(hào)信息數(shù)組,使用for循環(huán)對(duì)數(shù)組進(jìn)展1到52的賦值,代表52紙牌,然后對(duì)標(biāo)記數(shù)組賦值,將數(shù)組的所有的值初始化為零,方便在接下來(lái)的循環(huán)中統(tǒng)計(jì)每牌的翻牌數(shù)。數(shù)據(jù)初始化完畢后,開(kāi)場(chǎng)按照要求對(duì)紙牌進(jìn)展翻轉(zhuǎn),在嵌套循環(huán)中,定義了一個(gè)全局變量Flag,值為-1,負(fù)數(shù)定義為向下,正數(shù)定義為向上,這樣,翻轉(zhuǎn)一次,即乘以Flag,同時(shí),符合翻轉(zhuǎn)條件時(shí),標(biāo)記數(shù)組相應(yīng)的編號(hào)的紙牌翻牌次數(shù)+1?!家獊?lái)回的翻。如果它在屢次的翻牌后,正面還向上了,那么它就是要輸出的結(jié)果之一。循環(huán)完畢后,編號(hào)數(shù)組中的數(shù)據(jù)已經(jīng)更新,因此對(duì)數(shù)組進(jìn)展掃描,大于零的即為正面向上的紙牌,輸出其編號(hào)即可,同時(shí),輸出標(biāo)記數(shù)組中的值,顯示每牌的翻牌記錄,方便觀察或者尋找規(guī)律。到此,整個(gè)題目完畢。2.2設(shè)計(jì)原始數(shù)據(jù)的輸入及輸出格式原始數(shù)據(jù)要求輸入紙牌的根底編號(hào),編號(hào)的輸入為整型。輸出的是經(jīng)過(guò)規(guī)律翻轉(zhuǎn)后正面向上的紙牌的編號(hào)。輸入的數(shù)據(jù)信息如下:紙牌:1、2、3……、51、52。問(wèn)題直觀分析表:123456789101112……12√√√√√√3√√√√4√√√5√√6√√7√8√9√10√11√12√………………〔注:圖中"√〞表示翻轉(zhuǎn)一次?!?.3算法流程圖2.1:算法設(shè)計(jì)圖開(kāi)場(chǎng)2.1:算法設(shè)計(jì)圖開(kāi)場(chǎng)設(shè)一個(gè)一維數(shù)組card[52],并將所有變量賦初值為0,表示牌正面朝上2=>jj≤52j=>kk≤52k%j=0翻牌,如果card[k-1]為0,那么變?yōu)?;如果為1,那么變?yōu)?k++輸出card數(shù)組中正面朝上的牌的序號(hào)完畢j++3設(shè)計(jì)與實(shí)現(xiàn)3.1數(shù)據(jù)構(gòu)造按照題目要求,整個(gè)主體包括一個(gè)嵌套的循環(huán),外循環(huán)控制從2開(kāi)場(chǎng)每紙牌都作為基數(shù)進(jìn)展翻牌,循環(huán)控制對(duì)所有紙牌進(jìn)展判斷,如果是當(dāng)前循環(huán)中基數(shù)的倍數(shù),那么對(duì)其進(jìn)展翻轉(zhuǎn)操作。具體代碼如下:for(i=2;i<=52;i++) { for(j=1;j<=52;j++) { if(j%i==0) data[j-1]=data[j-1]*Flag; } }3.2詳細(xì)設(shè)計(jì)和編碼3.2.1定義全局變量:作為判斷紙牌是否向上的依據(jù),我們需要定義一個(gè)全局變量Flag=-1,在循環(huán)中對(duì)所有紙牌進(jìn)展操作。主要程序代碼與分析如下:#defineFlag-1〔考慮到最后要判斷哪些紙牌是正面向上的,所以必須要有一共判斷條件,因此定義一個(gè)全局變量作為正反面的判斷條件?!硋oidmain(){inti,j,data[52],flag[52];charm;〔在程序開(kāi)場(chǎng),建立了兩個(gè)數(shù)組,一個(gè)存放52牌的編號(hào),另外一個(gè)存放相應(yīng)編號(hào)的紙牌的翻牌記錄,便于后面對(duì)翻牌次數(shù)的輸出?!砯or(i=1;i<=52;i++){data[i-1]=i;〔通過(guò)for循環(huán),向數(shù)組中錄入1-52個(gè)數(shù),作為52牌的編號(hào),以便進(jìn)展接下來(lái)的操作〕flag[i-1]=0;〔將flag數(shù)組中的相應(yīng)編號(hào)紙牌的翻牌數(shù)初始化為0,在接下來(lái)的循環(huán)中,需要對(duì)翻牌次數(shù)進(jìn)展統(tǒng)計(jì)?!硙for(i=2;i<=52;i++)〔嵌套循環(huán)的外循環(huán),保證基數(shù)的循環(huán)?!硔for(j=1;j<=52;j++)〔嵌套循環(huán)的循環(huán),對(duì)每紙牌進(jìn)展基數(shù)的倍數(shù)條件判斷〕{if(j%i==0){data[j-1]=data[j-1]*Flag;flag[j-1]++;〔翻牌一次,那么相應(yīng)的標(biāo)記數(shù)組中該編號(hào)的位置數(shù)值+1,即將翻牌次數(shù)記入flag數(shù)組中?!硙}}printf("最后所有正面向上的牌有:");for(i=0;i<52;i++){if(data[i]>0)〔該題目中將大于零的編號(hào)定義為正面向上的紙牌的編號(hào)〕printf("第%d牌",i+1);}printf("\n");}以上為程序主要代碼的分析。在程序中,主要還包括功能界面,如下:printf("\t\n"); printf("\t\n"); printf("\t歡送進(jìn)入紙牌游戲\n"); printf("\t1.查看題目\n"); printf("\t2.查看所有紙牌的翻牌次數(shù)\n"); printf("\t3.查看指定編號(hào)紙牌翻牌記錄\n"); printf("\t4.查看最終正面向上的紙牌編號(hào)\n"); printf("\t5.制作人信息\n"); printf("\t0.按0鍵完畢\n"); printf("\t\n"); printf("\t\n");同時(shí),整個(gè)功能實(shí)現(xiàn)由do-while語(yǔ)句和switch語(yǔ)句組合而成,do-while語(yǔ)句可以保證界面最少運(yùn)行一次,switch語(yǔ)句保證每個(gè)功能獨(dú)立實(shí)現(xiàn),通過(guò)choice的輸入來(lái)進(jìn)入不同的功能,同時(shí)在每個(gè)小的獨(dú)立功能,我都添加了獨(dú)立判斷是否回到主菜單的語(yǔ)句,如下:printf("是否回到主菜單?(Y/N):"); n=getchar(); n=getchar(); if(n=='Y')break; elseif(n=='N') choice=0; elseprintf("***********(提示:輸入錯(cuò)誤,默認(rèn)為繼續(xù)。)******\n");整個(gè)do-while語(yǔ)句的完畢條件為:choice=0,所以如果用戶輸入為N,那么直接將0賦值給choice,那么符合循環(huán)完畢的條件,那么直接完畢程序,如果輸入為Y,那么break,繼續(xù)循環(huán),輸入錯(cuò)誤,沒(méi)有對(duì)choice任何的賦值操作,即不能滿足完畢條件,那么無(wú)論輸入什么都默認(rèn)為繼續(xù),break后繼續(xù)循環(huán)。由于程序默認(rèn)的將回車操作通過(guò)getchar()賦值給n,導(dǎo)致不能正常的實(shí)現(xiàn)下面的判斷,而直接顯示為輸入錯(cuò)誤,所以參加兩個(gè)n=getchar()語(yǔ)句,保證第二句能夠正確的實(shí)現(xiàn)功能,讓用戶自行輸入條件,進(jìn)展下一步的操作。在整個(gè)程序中,存在著大量的輸入判斷條件,如下:if(num<1&&num>52) printf("\t輸入錯(cuò)誤!\n");這兩句代碼就是對(duì)輸入的num值進(jìn)展判斷,由于紙牌序號(hào)為1-52,所以不在這個(gè)圍的值都為錯(cuò)誤值,需要有一個(gè)錯(cuò)誤信息的反應(yīng),所以需要對(duì)輸入的信息進(jìn)展判斷,然后通過(guò)不同的值對(duì)數(shù)據(jù)進(jìn)展相應(yīng)的操作,這對(duì)于程序的正確運(yùn)行,有著至關(guān)重要的作用。3.3上機(jī)調(diào)試過(guò)程該程序任務(wù)相比照擬簡(jiǎn)單,思路較明確。在一開(kāi)場(chǎng)編寫(xiě)代碼的時(shí)候,在嵌套循環(huán)中,外循環(huán)for的條件(i=2;i<=52;i++),寫(xiě)成〔i=1;i<=52;i++〕,導(dǎo)致對(duì)每個(gè)紙牌的翻轉(zhuǎn)都多判斷了一次,按照一開(kāi)場(chǎng)定義的大于零的編號(hào)數(shù)為正面向上的條件,最后輸出的結(jié)果正好相反,經(jīng)過(guò)修改調(diào)試后,問(wèn)題解決。在每個(gè)case中參加獨(dú)立的判斷是否回到主菜單的語(yǔ)句,一開(kāi)場(chǎng)getchar〔〕總是不能正確錄入,沒(méi)有輸入就直接運(yùn)行下一個(gè)語(yǔ)句,在參加控制語(yǔ)句后經(jīng)過(guò)調(diào)試發(fā)現(xiàn),程序把上一個(gè)輸入的回車直接默認(rèn)賦值給getchar(),導(dǎo)致沒(méi)有輸入,直接進(jìn)展下一個(gè)語(yǔ)句,后來(lái)使用了兩個(gè)連續(xù)的getchar()語(yǔ)句,第一個(gè)getchar()語(yǔ)句默認(rèn)為回車,但是后面一個(gè)getchar()語(yǔ)句可以正確的重新輸入判斷值,經(jīng)過(guò)重新的調(diào)試,運(yùn)行正常,問(wèn)題解決,但是希望能找到更完善的答案。在判斷是否繼續(xù)輸入紙牌編碼的功能中,同樣遇到了這個(gè)問(wèn)題,按照一樣的解決方法解決。整個(gè)程序由一個(gè)大的do-while語(yǔ)句和switch語(yǔ)句組合實(shí)現(xiàn)界面的不同功能,do-while語(yǔ)句通過(guò)choice=0作為完畢的條件,在case3中,有一個(gè)小的do-while語(yǔ)句實(shí)現(xiàn)紙牌編號(hào)的重復(fù)輸入,在整個(gè)程序中有很多信息的輸入,需要根據(jù)輸入的信息正確與否來(lái)反應(yīng)信息,否那么會(huì)導(dǎo)致程序出錯(cuò),所以在調(diào)試的過(guò)程中參加了很多判斷條件,可以解決信息輸入錯(cuò)誤的情況,但是仍然存在輸入非整型值程序出錯(cuò)的問(wèn)題,所以在輸入條件中參加提示信息,以保證信息類型輸入正確。5測(cè)試結(jié)果及其分析1.測(cè)試結(jié)果如下列圖5.1-5.11;2結(jié)果分析以注釋的形式寫(xiě)在圖的下方;圖5.1:MessageBox制作的一個(gè)歡送提示5.2:紙牌游戲程序的主功能界面5.3:紙牌游戲程序功能1:查看題目5.4:紙牌游戲程序功能2:查看所有紙牌的翻牌次數(shù)5.4.1:續(xù)5.4第一章題目與要求5.4.2:續(xù)5.45.5:紙牌游戲程序功能3:查看指定編號(hào)紙牌翻牌記錄5.6:紙牌游戲程序功能4:查看最終正面向上的紙牌編號(hào)5.7:紙牌游戲程序完畢畫(huà)面5.8:主界面輸入錯(cuò)誤提示5.9:功能3輸入錯(cuò)誤提示以及判斷是否需要繼續(xù)查詢紙牌編碼5.10:回主菜單判斷以及輸入錯(cuò)誤提示5.11:功能5輸出制作人信息6用戶使用說(shuō)明用戶運(yùn)行程序,按操作提示進(jìn)展操作。程序運(yùn)行環(huán)境VC++6.0。7源代碼見(jiàn)附錄結(jié)論這個(gè)學(xué)期是我第一次接觸"數(shù)據(jù)構(gòu)造",在完成設(shè)計(jì)的過(guò)程中,我遇到了一系列的問(wèn)題,能明顯感覺(jué)到自己在很多方面的缺乏,但另一方面,問(wèn)題是要分析解決的,找出問(wèn)題以便為完善學(xué)習(xí)方案,改變學(xué)習(xí)容與方法提供實(shí)踐依據(jù)。所以在整個(gè)過(guò)程中,我不斷加深了對(duì)數(shù)據(jù)構(gòu)造的理解與一些程序?qū)憰?shū)時(shí)要注意的事項(xiàng),體會(huì)了"數(shù)據(jù)構(gòu)造"這門課程在解決現(xiàn)實(shí)生活問(wèn)題上的可行性,也更進(jìn)一步地激發(fā)了我的學(xué)習(xí)熱情。做一個(gè)課程設(shè)計(jì)要注意很多方面,無(wú)論是格式,還是書(shū)寫(xiě)的容和要表達(dá)的思想都得嚴(yán)格要求自己,所以做起來(lái)真的不算容易。本次課程設(shè)計(jì)涉及了很多知識(shí),由于往日沒(méi)有學(xué)得很扎實(shí),對(duì)某些問(wèn)題仍然比擬疑惑,所以要進(jìn)展充足的補(bǔ)習(xí)。期間,我翻閱了很多書(shū)籍,知識(shí)總是聯(lián)系很嚴(yán)密的,解決完這個(gè)問(wèn)題又發(fā)現(xiàn)了新的問(wèn)題,之后,為了解決新問(wèn)題又發(fā)現(xiàn)了更多的問(wèn)題,就這樣,我得等到一個(gè)一個(gè)把問(wèn)題處理完。問(wèn)題越多,明白的也就會(huì)越來(lái)越多,做一次課程設(shè)計(jì)就像從頭到尾做了一次系統(tǒng)的復(fù)習(xí),從根底到難點(diǎn),從輪廓到每個(gè)知識(shí)點(diǎn),數(shù)據(jù)構(gòu)造的研究容在我的腦海里就再也不像以前那么模糊了。設(shè)計(jì)程序來(lái)解決現(xiàn)在存在的問(wèn)題,把理論知識(shí)付諸于實(shí)踐,對(duì)于我們這些計(jì)算機(jī)專業(yè)的本科生來(lái)說(shuō),實(shí)際能力的培養(yǎng)至關(guān)重要,而這種實(shí)際能力的培養(yǎng)單靠課堂教學(xué)是遠(yuǎn)遠(yuǎn)不夠的,必須從課堂走向?qū)嵺`,這也是我們學(xué)習(xí)的目的。做完設(shè)計(jì),我已深刻體會(huì)到了學(xué)習(xí)這門課程的重要性與必要性了,同時(shí),它留給我很多思考:學(xué)習(xí)是思考一個(gè)的過(guò)程,我們應(yīng)該主動(dòng)去想學(xué)習(xí)一門知識(shí)后怎么去運(yùn)用,而不是一味地被動(dòng)地承受。數(shù)據(jù)構(gòu)造及其算法在解決現(xiàn)實(shí)生活中的常見(jiàn)問(wèn)題和書(shū)寫(xiě)軟件設(shè)計(jì)方面上都有著重要的意義,我們應(yīng)該好好掌握它的相關(guān)知識(shí),在以后的學(xué)習(xí)過(guò)程中,更多的去學(xué)會(huì)如何運(yùn)用知識(shí)。參考文獻(xiàn)[1].王昆侖、紅"數(shù)據(jù)構(gòu)造與算法":中國(guó)鐵道[2].寧國(guó)正"數(shù)據(jù)構(gòu)造〔C語(yǔ)言版〕":東南大學(xué)[3].嚴(yán)尉敏"數(shù)據(jù)構(gòu)造〔C語(yǔ)言版〕":清華大學(xué)[4].吳乃陵"C++程序設(shè)計(jì)":高等教育[5]譚浩強(qiáng),基溫,唐永炎編著.C語(yǔ)言程序設(shè)計(jì)教程.:高等教育,1992[6]譚浩強(qiáng)編著.C語(yǔ)言程序設(shè)計(jì).:清華大學(xué),2007[7]嚴(yán)蔚敏,吳偉民編著.數(shù)據(jù)構(gòu)造(C語(yǔ)言版).:清華大學(xué),2008[8]嚴(yán)蔚敏,吳偉民,米寧編著.數(shù)據(jù)構(gòu)造題集〔C語(yǔ)言版〕:清華大學(xué),2008[9]愛(ài)民編著.離散數(shù)學(xué).;郵電大學(xué),2008附錄程序源代碼:#include<stdio.h>#include<windows.h>#defineFlag-1//定義一個(gè)全局變量作為正反面的判斷條件。voidmain(){ inti,j,data[52],flag[52],choice,num;//建立兩個(gè)數(shù)組,一個(gè)存放52牌的編號(hào),另外一個(gè)存放相應(yīng)編號(hào)的紙牌的翻牌記錄。 charm,n; MessageBox(NULL,"歡送進(jìn)入紙牌游戲程序!","溫馨提示",MB_ICONASTERISK);//添加了一個(gè)MessageBox歡送對(duì)話框 for(i=1;i<=52;i++) { data[i-1]=i;//錄入52牌的編號(hào)。 flag[i-1]=0;//將相應(yīng)編號(hào)紙牌的翻牌數(shù)初始化為0。 } for(i=2;i<=52;i++)//外循環(huán),基數(shù)循環(huán)。 { for(j=1;j<=52;j++)//循環(huán),基數(shù)倍數(shù)條件判斷。 { if(j%i==0) { data[j-1]=data[j-1]*Flag;//將翻轉(zhuǎn)后的結(jié)果更新data中的數(shù)據(jù)。 flag[j-1]++;//翻牌一次,即記入flag數(shù)組中。 } } } do{ printf("\t\n"); printf("\t\n"); printf("\t歡送進(jìn)入紙牌游戲\n"); printf("\t1.查看題目\n"); printf("\t2.查看所有紙牌的翻牌次數(shù)\n"); printf("\t3.查看指定編號(hào)紙牌翻牌記錄\n"); printf("\t4.查看最終正面向上的紙牌編號(hào)\n"); printf("\t5.制作人信息\n"); printf("\t0.按0鍵完畢\n"); printf("\t\n"); printf("\t\n"); printf("請(qǐng)輸入您的選擇〔數(shù)字0-5〕:");//主界面 scanf("%d",&choice); switch(choice)//通過(guò)switch語(yǔ)句進(jìn)展功能的選擇 { case1:{ printf("題目\n"); printf("**************************************************************\n"); printf("編號(hào)為1-52牌,正面向上,從第2開(kāi)場(chǎng),以2為基數(shù),是2的倍數(shù)的牌翻一次,"); printf("直到最后一牌;然后,從第3開(kāi)場(chǎng),以3為基數(shù),是3的倍數(shù)的牌翻一次,"); printf("直到最后一牌;直到以52為基數(shù)的翻過(guò),輸出:這時(shí)輸出正面向上的牌有哪些?\n"); printf("****************************************************************"); printf("\n"); printf("\n"); printf("是否回到主菜單?(Y/N):");//在每個(gè)獨(dú)立功能后添加了獨(dú)立的判斷語(yǔ)句,從而可以選擇性的回到主菜單。 n=getchar(); n=getchar(); if(n=='Y')break; elseif(n=='N') choice=0;//0作為整個(gè)界面的循環(huán)完畢條件,所以直接將choice=0,即可完畢循環(huán)。 elseprintf("**********(提示:輸入錯(cuò)誤,默認(rèn)為繼續(xù)。)***********\n"); }break; case2:{ printf("以下為翻牌記錄:\n"); printf("\t第1牌翻過(guò)0次。\t"); printf("\n"); printf("\n"); for(i=1;i<52;i++) { printf("\t第%d牌翻過(guò)%d次。\t",i+1,flag[i]); if(i%2==0) printf("\n"); } printf("\n"); printf("是否回到主菜單?(Y/N):"); n=getchar(); n=getchar(); if(n=='Y')break; elseif(n=='N') choice=0; elseprintf("**********(提示:輸入錯(cuò)誤,默認(rèn)為繼續(xù)。)*************\n"); }break; case3:{ do{ printf("\

溫馨提示

  • 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)論