

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 課程設(shè)計(jì)報(bào)告</b></p><p> 課程名稱(chēng) 《數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)》 </p><p> 設(shè)計(jì)題目 猴子選大王+ joseph環(huán)+紙牌游戲 &l
2、t;/p><p> 院系 計(jì)算機(jī)科學(xué)與信息工程學(xué)院 專(zhuān)業(yè) 計(jì)算機(jī)科學(xué)與技術(shù) 班級(jí) </p><p> 姓名 學(xué)號(hào) 指導(dǎo)教師 日期 11/29/2024 </p><p><b> 目的與要求</b></p><p> 鞏固和加深對(duì)常見(jiàn)數(shù)據(jù)結(jié)構(gòu)的理解和掌
3、握</p><p> 掌握基于數(shù)據(jù)結(jié)構(gòu)進(jìn)行算法設(shè)計(jì)的基本方法</p><p> 掌握用高級(jí)語(yǔ)言實(shí)現(xiàn)算法的基本技能</p><p> 掌握書(shū)寫(xiě)程序設(shè)計(jì)說(shuō)明文檔的能力</p><p> 提高運(yùn)用數(shù)據(jù)結(jié)構(gòu)知識(shí)及高級(jí)語(yǔ)言解決非數(shù)值實(shí)際問(wèn)題的能力</p><p><b> 課程設(shè)計(jì)內(nèi)容說(shuō)明</b>
4、</p><p><b> 猴子選大王</b></p><p> 對(duì)設(shè)計(jì)任務(wù)內(nèi)容的概述</p><p> 任務(wù):一堆猴子都有編號(hào),編號(hào)是1,2,3 ...m ,這群猴子(m個(gè))按照1-m的順序圍坐一圈,從第1開(kāi)始數(shù),每數(shù)到第N個(gè),該猴子就要離開(kāi)此圈,這樣依次下來(lái),直到圈中只剩下最后一只猴子,則該猴子為大王。</p><
5、p><b> 需求分析或功能描述</b></p><p> 首先要定義數(shù)據(jù)類(lèi)型,定義一個(gè)結(jié)構(gòu)體, 包含猴子的編號(hào)和指向下一個(gè)猴子的指針。</p><p> 然后,根據(jù)猴子的數(shù)量m創(chuàng)建一個(gè)循環(huán)鏈表,相當(dāng)于所有的猴子圍成一圈。</p><p> 最后根據(jù)N的值,將猴子依次離開(kāi)此循環(huán)鏈表,輸出猴子離開(kāi)的順序,將最后一個(gè)輸出的猴子為猴王。
6、</p><p> 概要設(shè)計(jì)或程序流程圖</p><p> 詳細(xì)設(shè)計(jì)或源代碼說(shuō)明</p><p> 文件“l(fā)ist1.cpp”</p><p> typedef int Elemtype;</p><p> typedef struct Mnode//創(chuàng)建結(jié)構(gòu)體 </p><p>
7、<b> {</b></p><p> Elemtype data;//猴子編號(hào) </p><p> struct Mnode *next;//指向下一個(gè)猴子的指針 </p><p><b> }MNode;</b></p><p><b> //函數(shù)聲明 </b
8、></p><p> struct Mnode* Creat_clist1(MNode *clist1,int a);</p><p> int Kingmonkey(MNode*clist1,int a,int b);</p><p> int list1()//主函數(shù)直接調(diào)用函數(shù) </p><p><b> {
9、</b></p><p> int m,n;//用來(lái)存儲(chǔ)猴群的數(shù)量, </p><p> S1:printf("請(qǐng)輸入猴群的數(shù)量m:");</p><p> scanf("%d",&m);//猴群數(shù)量 </p><p> printf("請(qǐng)輸入每數(shù)到第N
10、個(gè)n:");</p><p> scanf("%d",&n);//每次數(shù)N個(gè) </p><p> if(m<=n)//判斷輸入數(shù)值是否符合要求 </p><p><b> {</b></p><p><b> goto S1;</b>&
11、lt;/p><p><b> }</b></p><p> printf("\n");</p><p> MNode *monkey; //定義結(jié)點(diǎn)指針 </p><p> monkey=NULL;</p><p> monkey=Creat_clist1(mon
12、key,m); //建立猴群的循環(huán)鏈表</p><p> Kingmonkey(monkey,m,n);//選出猴王并輸出 </p><p> system("pause");</p><p> return 0; </p><p><b> }</b></p>&l
13、t;p> //創(chuàng)建循環(huán)鏈表函數(shù) </p><p> struct Mnode* Creat_clist1(MNode *clist1,int a)</p><p><b> {</b></p><p> MNode *p,*q; //定義兩個(gè) MNode型指針 </p><p><b>
14、; int i;</b></p><p> clist1=NULL;//結(jié)點(diǎn)置空 </p><p> for(i=a;i>=1;i--)</p><p><b> {</b></p><p> p=(MNode*)malloc(sizeof(MNode)); //開(kāi)辟內(nèi)存空間 <
15、/p><p> p->data=i;//猴子編號(hào) </p><p> p->next=clist1;</p><p><b> clist1=p;</b></p><p><b> if(i==a)</b></p><p> q=p; //
16、用q指向鏈表最后一個(gè)結(jié)點(diǎn)</p><p><b> }</b></p><p> q->next=clist1; //構(gòu)成循環(huán)鏈表</p><p> return clist1; //clist1即為指向第一個(gè)結(jié)點(diǎn)的指針</p><p><b> }</b></p>
17、;<p> //運(yùn)算并輸出猴王函數(shù) </p><p> int Kingmonkey(MNode*clist1,int a,int b)</p><p><b> {</b></p><p> MNode *p,*q;</p><p><b> p=clist1;</b>&l
18、t;/p><p><b> int i;</b></p><p> printf("猴子依次離開(kāi)此圈的編號(hào)順序?yàn)椋?quot;);</p><p> do//依次讓猴子離開(kāi) ,只留最后一只猴子 </p><p><b> {</b></p><p> fo
19、r(i=1;i<b-1;i++)</p><p> { p=p->next; }</p><p> printf("%d ",p->next->data);</p><p> q=p->next; //q結(jié)點(diǎn)為要?jiǎng)h除的結(jié)點(diǎn)</p><p> p->next=p->
20、;next->next;//將q借點(diǎn)忽略 </p><p> p=p->next;</p><p> free(q);//刪除q </p><p> }while(p!=p->next);//是否只剩下最后一個(gè)結(jié)點(diǎn) </p><p> printf("\n");</p>
21、<p> printf("猴王的編號(hào)是:%d\n",p->data); //輸出猴王編號(hào) </p><p> printf("\n");</p><p><b> return 0;</b></p><p><b> }</b></p><
22、;p> 程序模塊及其接口描述</p><p> 1、函數(shù)名:list1()</p><p><b> 調(diào)用參數(shù):無(wú)</b></p><p> 調(diào)用方式:main()調(diào)用</p><p><b> 返回值:0</b></p><p> 2、函數(shù)名:Creat_
23、clist1(MNode *clist1,int a)</p><p> 調(diào)用參數(shù):monkey,m// monkey:指向第一個(gè)結(jié)點(diǎn)的指針;m:猴子個(gè)數(shù)</p><p> 調(diào)用方式:list1()調(diào)用</p><p> 返回值:monkey //monkey:指向第一個(gè)結(jié)點(diǎn)的指針</p><p> 3、函數(shù)名:Kingmon
24、key(MNode*clist1,int a,int b)</p><p> 調(diào)用參數(shù):monkey,m,n // monkey:指向第一個(gè)結(jié)點(diǎn)的指針;m:猴子個(gè)數(shù)</p><p> 調(diào)用方式:list1()調(diào)用</p><p><b> 返回值:0</b></p><p> 程序的輸入與輸出描述</p&g
25、t;<p><b> 輸入:猴群的數(shù)量m</b></p><p><b> 每數(shù)到N個(gè)n</b></p><p> 輸出:猴子依次離開(kāi)此圈的編號(hào)順序</p><p><b> 猴王的編號(hào)</b></p><p><b> 調(diào)試分析或程序測(cè)試&l
26、t;/b></p><p> 尚未解決的問(wèn)題或改進(jìn)方向</p><p><b> 無(wú)</b></p><p><b> 對(duì)軟件的使用說(shuō)明</b></p><p> 在主菜單輸入1,可進(jìn)入猴子選大王模塊。根據(jù)提示輸入要輸入的數(shù)值,敲回車(chē)后,輸出結(jié)果。</p><p&g
27、t;<b> joseph環(huán)</b></p><p> 對(duì)設(shè)計(jì)任務(wù)內(nèi)容的概述</p><p> 任務(wù):編號(hào)是1,2,……,n的n個(gè)人按照順時(shí)針?lè)较驀蝗?,每個(gè)人只有一個(gè)密碼(正整數(shù))。一開(kāi)始任選一個(gè)正整數(shù)作為報(bào)數(shù)上限值m,從第一個(gè)人開(kāi)始順時(shí)針?lè)较蜃?開(kāi)始順序報(bào)數(shù),報(bào)到m時(shí)停止報(bào)數(shù)。報(bào)m的人出列,將他的密碼作為新的m值,從他在順時(shí)針?lè)较虻南乱粋€(gè)人開(kāi)始重新從1報(bào)數(shù)
28、,如此下去,直到所有人全部出列為止。設(shè)計(jì)一個(gè)程序來(lái)求出出列順序。</p><p><b> 需求分析或功能描述</b></p><p> 首先要定義數(shù)據(jù)類(lèi)型,定義一個(gè)結(jié)構(gòu)體, 包含人的編號(hào)、人的密碼和指向下一個(gè)人的指針。</p><p> 然后,根據(jù)人的數(shù)量n創(chuàng)建一個(gè)循環(huán)鏈表,相當(dāng)于所有的人圍成一圈。</p><p&g
29、t; 最后根據(jù)任意給定的正整數(shù)m的值,將人依次離開(kāi)此循環(huán)鏈表,輸出人離開(kāi)的順序。</p><p> 概要設(shè)計(jì)或程序流程圖</p><p> 詳細(xì)設(shè)計(jì)或源代碼說(shuō)明</p><p> 文件“l(fā)ist2.cpp”</p><p> typedef int Elemtype;</p><p> typedef st
30、ruct Pnode//創(chuàng)建結(jié)構(gòu)體</p><p><b> {</b></p><p> Elemtype data;//人的編號(hào)</p><p> int num;//人的密碼 </p><p> struct Pnode *next;</p><p><b&g
31、t; }PNode;</b></p><p><b> //函數(shù)聲明</b></p><p> struct Pnode* Creat_clist(PNode*clist,int a,int b[]);</p><p> int Goout(PNode*clist2,int a,int b);</p><
32、p> int list2()</p><p><b> {</b></p><p> int m,n,i;</p><p> printf("請(qǐng)輸入人的數(shù)量n:");</p><p> scanf("%d",&n);//存儲(chǔ)人的數(shù)量 </p&g
33、t;<p> printf("請(qǐng)輸入初始密碼值m:");</p><p> scanf("%d",&m);//存儲(chǔ)給定任意正整數(shù) </p><p> //存儲(chǔ)密碼的數(shù)組 </p><p> int p[100]={3,1,7,2,4,7,4,6,3,6,8,3,5,4,2,1,6,3,4,
34、2,</p><p> 4,1,7,2,4,7,4,6,3,6,8,3,5,4,2,1,6,3,4,2,</p><p> 3,1,7,2,4,7,4,6,3,6,8,3,5,4,2,1,6,3,4,2,</p><p> 1,1,7,2,4,7,4,6,3,6,8,3,5,4,2,1,6,3,4,2,</p><p> 2,1,7,
35、2,4,7,4,6,3,6,8,3,5,4,2,1,6,3,4,2</p><p><b> };</b></p><p> PNode *people; //定義結(jié)點(diǎn)指針</p><p> people=NULL;//指針指向?yàn)榭?</p><p> people=Creat_clist(pe
36、ople,n,p); //建立人的循環(huán)鏈表</p><p> printf("\n");</p><p> printf("從1--%d的人對(duì)應(yīng)密碼為:",n);</p><p> for(i=0;i<n;i++)</p><p><b> {</b></p
37、><p> printf("%d ",p[i]);</p><p><b> }</b></p><p> printf("\n");</p><p> Goout(people,n,m);//按照出列的順序輸出各個(gè)人的編號(hào)</p><p>
38、printf("\n");</p><p> system("pause");</p><p><b> return 0;</b></p><p><b> }</b></p><p> //創(chuàng)建循環(huán)鏈表函數(shù)</p><p>
39、 struct Pnode* Creat_clist(PNode *clist2,int a,int b[])</p><p><b> {</b></p><p> PNode *p,*q;//定義兩個(gè) PNode型指針</p><p> int i,j=a-1;</p><p> clist2=NULL
40、;//結(jié)點(diǎn)置空 </p><p> for(i=a;i>=1;i--)</p><p><b> {</b></p><p> p=(PNode*)malloc(sizeof(PNode));////開(kāi)辟內(nèi)存空間</p><p> p->data=i;//人的編號(hào)</p>
41、<p> p->num=b[j];//人對(duì)應(yīng)的密碼</p><p><b> j--; </b></p><p> p->next=clist2;</p><p><b> clist2=p;</b></p><p><b> if(i==a)&
42、lt;/b></p><p> q=p; //用q指向鏈表最后一個(gè)結(jié)點(diǎn),頭插法 </p><p><b> }</b></p><p> q->next=clist2;//構(gòu)成循環(huán)鏈表</p><p> return clist2; //clist即為指向第一個(gè)結(jié)點(diǎn)的指針</
43、p><p><b> }</b></p><p> //運(yùn)算并輸出人的出列順序函數(shù) </p><p> int Goout(PNode*clist2,int a,int b)</p><p><b> {</b></p><p> PNode *p,*q;//定義
44、兩個(gè) PNode型指針 </p><p><b> p=clist2;</b></p><p><b> int i;</b></p><p> printf("人依次出列的編號(hào)順序?yàn)椋?quot;);</p><p><b> do</b></p>
45、;<p><b> {</b></p><p> for(i=1;i<b-1;i++)</p><p> { p=p->next; }</p><p> printf("%d ",p->next->data);</p><p> b=p->ne
46、xt->num;</p><p> q=p->next; //q節(jié)點(diǎn)為要?jiǎng)h除的結(jié)點(diǎn)</p><p> p->next=p->next->next;//P指向下下個(gè)結(jié)點(diǎn) </p><p> p=p->next;</p><p> free(q);//刪除q</p>&
47、lt;p><b> i=1;</b></p><p> }while(p!=p->next);//是否只剩下最后一個(gè)結(jié)點(diǎn)</p><p> printf("%d\n",p->data);//輸出最后一個(gè)人的編號(hào) </p><p><b> return 0;</b>&l
48、t;/p><p><b> }</b></p><p><b> 。</b></p><p> 程序模塊及其接口描述</p><p> 1、函數(shù)名:list2()</p><p><b> 調(diào)用參數(shù):無(wú)</b></p><p&g
49、t; 調(diào)用方式:main()調(diào)用</p><p><b> 返回值:0</b></p><p> 2、函數(shù)名:Creat_clist(PNode *clist2,int a,int b[])</p><p> 調(diào)用參數(shù):people,n,p//people:指向第一個(gè)結(jié)點(diǎn)的指針;n:人的個(gè)數(shù);p:</p><p&g
50、t;<b> 密碼數(shù)組首地址</b></p><p> 調(diào)用方式:list2()調(diào)用</p><p> 返回值:people //people:指向第一個(gè)結(jié)點(diǎn)的指針</p><p> 3、函數(shù)名:Goout(PNode*clist2,int a,int b)</p><p> 調(diào)用參數(shù):people,n,m
51、 // people:指向第一個(gè)結(jié)點(diǎn)的指針; n:人的個(gè)數(shù);m:第一個(gè)任意給定的密碼值</p><p> 調(diào)用方式:list2()調(diào)用</p><p><b> 返回值:0</b></p><p> 程序的輸入與輸出描述</p><p><b> 輸入:人的數(shù)量n</b></p&g
52、t;<p><b> 初始密碼值m</b></p><p> 輸出:從1—n的人對(duì)應(yīng)密碼</p><p> 人依次出列的編號(hào)順序</p><p><b> 調(diào)試分析或程序測(cè)試</b></p><p><b> 。</b></p><p
53、> 尚未解決的問(wèn)題或改進(jìn)方向</p><p><b> 無(wú)</b></p><p><b> 對(duì)軟件的使用說(shuō)明</b></p><p> 在主菜單輸入2,可進(jìn)入joseph環(huán)模塊。根據(jù)提示輸入要輸入的數(shù)值,敲回車(chē)后,輸出結(jié)果。</p><p><b> 紙牌游戲</b
54、></p><p> 對(duì)設(shè)計(jì)任務(wù)內(nèi)容的概述</p><p> 任務(wù):編號(hào)為1-52張牌,正面向上,從第2張開(kāi)始,以2為基數(shù),是2的倍數(shù)的牌翻一次,直到最后一張牌;然后,從第3張開(kāi)始,以3為基數(shù),是3的倍數(shù)的牌翻一次,直到最后一張牌;然后…從第4張開(kāi)始,以4為基數(shù),是4的倍數(shù)的牌翻一次, 直到最后一張牌;...再依次5的倍數(shù)的牌翻一次,6的,7的直到以52為基數(shù)的翻過(guò),輸出:這時(shí)正
55、面向上的牌有哪些?</p><p><b> 需求分析或功能描述</b></p><p> 首先要定義數(shù)據(jù)類(lèi)型,定義一個(gè)結(jié)構(gòu)體, 包含撲克牌的編號(hào),標(biāo)記和指向下一張撲克牌的指針。</p><p> 然后,根據(jù)猴子的數(shù)量k=52創(chuàng)建一個(gè)單鏈表,再調(diào)用Turn()函數(shù),從2-52,按操作要求反轉(zhuǎn)。</p><p>
56、最后根據(jù)count的值是否為0,輸出此時(shí)標(biāo)號(hào)為o的撲克牌編號(hào)。</p><p> 概要設(shè)計(jì)或程序流程圖</p><p> 詳細(xì)設(shè)計(jì)或源代碼說(shuō)明</p><p> typedef struct node//創(chuàng)建結(jié)構(gòu)體</p><p> {int data; //撲克牌的編號(hào) </p><p> in
57、t count; //撲克牌標(biāo)記 </p><p> struct node *next;//指向下一張撲克牌的指針 </p><p> }LinkList;</p><p><b> //函數(shù)聲明</b></p><p> LinkList *creat(int k);</p><
58、p> LinkList *Turn(LinkList *head,int k);</p><p> void Display(LinkList *head) ;</p><p> int list3()</p><p><b> {</b></p><p> int i,k=52; </p>
59、<p> LinkList *head,*p;//定義結(jié)點(diǎn)指針</p><p> p=creat(k); //創(chuàng)建單鏈表 </p><p> p=Turn(p,k);//從2-52,按操作要求反轉(zhuǎn) </p><p> printf("\n");</p><p> Display(p);
60、//輸出最后正面向上的牌 </p><p> printf("\n");</p><p> system("pause");</p><p><b> return 0;</b></p><p><b> }</b></p>&l
61、t;p> LinkList *creat(int k) //創(chuàng)建單鏈表 </p><p> {LinkList *head,*p,*q;//定義結(jié)點(diǎn)指針</p><p><b> int i=0;</b></p><p> head=(LinkList *)malloc(sizeof(LinkList));//分配內(nèi)存
62、空間 </p><p> p=head; //p指向頭結(jié)點(diǎn) </p><p> q=(LinkList *)malloc(sizeof(LinkList));//分配內(nèi)存空間 </p><p> while(i<k)//從1-k建立單鏈表,并設(shè)定其初始count為0 (朝上) </p><p>
63、{q->data=i+1; </p><p> q->count=0; </p><p> p->next=q; </p><p><b> p=q;</b></p><p> q=q->next;</p><p> q=(LinkList *)malloc(si
64、zeof(LinkList));//分配內(nèi)存空間 </p><p><b> i++;}</b></p><p> p->next=NULL;//尾結(jié)點(diǎn)的next置空 </p><p> return(head);</p><p><b> }</b></p>
65、<p> //從2-52,按操作要求反轉(zhuǎn) </p><p> LinkList *Turn(LinkList *head,int k)</p><p> {LinkList *p;</p><p> for(int i=2;i<=k;i++)</p><p><b> {</b></p
66、><p> p=head->next;</p><p> while(p!=NULL)</p><p><b> {</b></p><p> if((p->data)%i==0)//判斷是否為i的倍數(shù) </p><p><b> {</b></p
67、><p> if(p->count==0)//count是1則變?yōu)? ,count是0則變?yōu)? </p><p><b> {</b></p><p> p->count=1;</p><p><b> }</b></p><p><b> e
68、lse</b></p><p><b> {</b></p><p> p->count=0;</p><p><b> }</b></p><p><b> }</b></p><p> p=p->next;}<
69、/p><p><b> }</b></p><p> return(head);</p><p><b> }</b></p><p> //輸出最后正面向上的牌的函數(shù) </p><p> void Display(LinkList *head) </p>
70、<p><b> {</b></p><p> LinkList *q;</p><p> q=head->next; </p><p> printf("正面向上的牌編號(hào)為:");</p><p> while(q!=NULL)</p><p>&
71、lt;b> {</b></p><p> if(q->count==0) //若標(biāo)號(hào)為0則輸出</p><p> printf("%d ",q->data);</p><p> q=q->next;</p><p><b> }</b></p>
72、;<p> printf("\n");</p><p><b> }</b></p><p> 程序模塊及其接口描述</p><p> 1、函數(shù)名:list3()</p><p><b> 調(diào)用參數(shù):無(wú)</b></p><p>
73、調(diào)用方式:main()調(diào)用</p><p><b> 返回值:0</b></p><p> 2、函數(shù)名:creat(int k);</p><p> 調(diào)用參數(shù):k //k=52,52張牌的編號(hào)</p><p> 調(diào)用方式:list3()調(diào)用</p><p> 返回值:p //p
74、:指向第一個(gè)結(jié)點(diǎn)的指針;</p><p> 3、函數(shù)名:Turn(LinkList *head,int k)</p><p> 調(diào)用參數(shù):p,k //p:指向第一個(gè)結(jié)點(diǎn)的指針;k:52張牌編號(hào)</p><p> 調(diào)用方式:list3()調(diào)用</p><p> 返回值:p //p:指向第一個(gè)結(jié)點(diǎn)的指針;</p>
75、<p> 4、函數(shù)名:Display(LinkList *head);</p><p> 調(diào)用參數(shù):p //p:指向第一個(gè)結(jié)點(diǎn)的指針</p><p> 調(diào)用方式:list3()調(diào)用</p><p><b> 返回值:0</b></p><p> 程序的輸入與輸出描述</p>&
76、lt;p><b> 輸入:無(wú)</b></p><p> 輸出:輸出最后正面向上的牌</p><p><b> 調(diào)試分析或程序測(cè)試</b></p><p> 尚未解決的問(wèn)題或改進(jìn)方向</p><p><b> 無(wú)</b></p><p>&
77、lt;b> 對(duì)軟件的使用說(shuō)明</b></p><p> 在主菜單輸入3,回車(chē),可進(jìn)入紙牌游戲模塊,輸出最后正面向上的牌。</p><p><b> 幫助</b></p><p> 對(duì)設(shè)計(jì)任務(wù)內(nèi)容的概述</p><p> 對(duì)項(xiàng)目的內(nèi)容進(jìn)行說(shuō)明。</p><p><b
78、> 需求分析或功能描述</b></p><p> 幫助中還有對(duì)3個(gè)項(xiàng)目的說(shuō)明:</p><p><b> 1、猴子選大王</b></p><p><b> 2、joseph環(huán)</b></p><p><b> 3、紙牌游戲</b></p>
79、<p> 概要設(shè)計(jì)或程序流程圖</p><p> 詳細(xì)設(shè)計(jì)或源代碼說(shuō)明</p><p> int Display1();</p><p> int Display2();</p><p> int Display3();</p><p> int list4()</p><
80、p><b> {int i;</b></p><p> printf("\n");</p><p> printf(" 幫助菜單 \n");</p><p> printf(" ************
81、*******************\n\n");</p><p> printf(" * 1.猴子選大王 *\n\n");</p><p> printf(" * 2.joseph環(huán) *\n\n");</p>&
82、lt;p> printf(" * 3.紙牌游戲 *\n\n");</p><p> printf(" *******************************\n\n");</p><p> printf("
83、 請(qǐng)選擇:");</p><p> while (true)</p><p><b> {</b></p><p> scanf("%d",&i);</p><p> if (i>=1&& i<=3)</p><p&g
84、t;<b> break;</b></p><p><b> else</b></p><p> printf("輸入錯(cuò)誤,");</p><p> printf("請(qǐng)選擇1--3:");</p><p><b> }</b>&
85、lt;/p><p> switch (i)</p><p><b> {</b></p><p> case 1:{Display1();break;}</p><p> case 2:{Display2();break;}</p><p> case 3:{Display3();break
86、;}</p><p><b> }</b></p><p><b> }</b></p><p> int Display1()</p><p><b> {</b></p><p> printf(" 猴子選大王
87、 \n\n");</p><p> printf(" ************************************************\n\n");</p><p> printf(" *任務(wù):一堆猴子都有編號(hào),編號(hào)是1,2,3 ,...m ,*\n\n");</p&
88、gt;<p> printf(" * 這群猴子(m個(gè))按照1-m的順序圍坐一圈,從*\n\n");</p><p> printf(" * 第1開(kāi)始數(shù),每數(shù)到第N個(gè),該猴子就要離開(kāi)此*\n\n");</p><p> printf(" * 圈,這樣依次下來(lái),直到圈中只剩下最后一只*\n
89、\n");</p><p> printf(" * 猴子,則該猴子為大王. *\n\n");</p><p> printf(" *要求:輸入數(shù)據(jù):輸入m,n m,n 為整數(shù),n<m。 *\n\n");</p><p> printf("
90、 *輸出形式:中文提示按照m個(gè)猴子,數(shù)n 個(gè)數(shù)的方法,*\n\n");</p><p> printf(" * 輸出為大王的猴子是幾號(hào) ,建立一個(gè)函數(shù)來(lái) *\n\n");</p><p> printf(" * 實(shí)現(xiàn)此功能 . *\n\n");</p&
91、gt;<p> printf(" ************************************************\n\n");</p><p> system("pause");</p><p><b> return 0;</b></p><p><b>
92、; }</b></p><p> int Display2()</p><p><b> {</b></p><p> printf(" joseph環(huán) \n\n");</p><p> printf("
93、 ************************************************\n\n");</p><p> printf(" *任務(wù):編號(hào)是1,2,……,n的n個(gè)人按照順時(shí)針?lè)较?*\n\n");</p><p> printf(" * 圍坐一圈,每個(gè)人只有一個(gè)密碼(正整數(shù))。一*\n\n");&l
94、t;/p><p> printf(" * 開(kāi)始任選一個(gè)正整數(shù)作為報(bào)數(shù)上限值m,從第一*\n\n");</p><p> printf(" * 個(gè)人開(kāi)始順時(shí)針?lè)较蜃?開(kāi)始順序報(bào)數(shù),報(bào)到 *\n\n");</p><p> printf(" * m時(shí)停止報(bào)數(shù)。報(bào)m的人出列,將他的密碼
95、作 *\n\n");</p><p> printf(" * 為新的m值,從他在順時(shí)針?lè)较虻南乱粋€(gè)人開(kāi) *\n\n");</p><p> printf(" * 始重新從1報(bào)數(shù),如此下去,直到所有人全部 *\n\n");</p><p> printf(" * 出
96、列為止。設(shè)計(jì)一個(gè)程序來(lái)求出出列順序。 *\n\n");</p><p> printf(" * 實(shí)現(xiàn)此功能. *\n\n");</p><p> printf(" *要求:利用單向循環(huán)鏈表存儲(chǔ)結(jié)構(gòu)模擬此過(guò)程,按照*\n\n");</p><p&g
97、t; printf(" * 出列的順序輸出各個(gè)人的編號(hào)。 *\n\n");</p><p> printf(" *測(cè)試數(shù)據(jù):m的初值為20,n=7 ,7個(gè)人的密碼依次為 *\n\n");</p><p> printf(" * 3,1,7,2,4,7,4,首先m=6,則正確的輸 *\n\
98、n");</p><p> printf(" * 出是什么? *\n\n");</p><p> printf(" * 要求:輸入數(shù)據(jù):建立輸入處理輸入數(shù)據(jù),輸入m *\n\n");</p><p> printf(" *
99、 的初值,n ,輸入每個(gè)人的密碼,建立單循 *\n\n");</p><p> printf(" * 環(huán)鏈表。 *\n\n");</p><p> printf(" *輸出形式:建立一個(gè)輸出函數(shù),將正確的輸出序列 *\n\n");</p>
100、<p> printf(" ************************************************\n\n");</p><p> system("pause");</p><p><b> return 0;</b></p><p><b> }
101、</b></p><p> int Display3()</p><p><b> {</b></p><p> printf(" 紙牌游戲 \n\n");</p><p> printf(" ***
102、*********************************************\n\n");</p><p> printf(" *任務(wù):編號(hào)為1-52張牌,正面向上,從第2張開(kāi)始, *\n\n");</p><p> printf(" * 以2為基數(shù),是2的倍數(shù)的牌翻一次,直 到最 *\n\n");</
103、p><p> printf(" * 后一張牌;然后,從第3張開(kāi)始,以3為基數(shù),*\n\n");</p><p> printf(" * 是3的倍數(shù)的牌翻一次,直到最后一張牌;然 *\n\n");</p><p> printf(" * 后,從第4張開(kāi)始,以4為基數(shù),是4的倍數(shù)的
104、*\n\n");</p><p> printf(" * 牌翻一次, 直到最后一張牌;...再依次5的 *\n\n");</p><p> printf(" * 倍數(shù)的牌翻一次,6的,7的直到以52為基數(shù)的*\n\n");</p><p> printf(" * 翻
105、過(guò),輸出:這時(shí)正面向上的牌有哪些? *\n\n");</p><p> printf(" ************************************************\n\n");</p><p> system("pause");</p><p><b> return
106、0;</b></p><p><b> }</b></p><p> 程序模塊及其接口描述</p><p> 1、函數(shù)名:list4()</p><p><b> 調(diào)用參數(shù):無(wú)</b></p><p> 調(diào)用方式:main()調(diào)用</p>
107、<p><b> 返回值:0</b></p><p> 2、函數(shù)名:Display1()</p><p><b> 調(diào)用參數(shù):無(wú)</b></p><p> 調(diào)用方式:list4()調(diào)用</p><p><b> 返回值:0</b></p>&l
108、t;p> 3、函數(shù)名:Display2()</p><p> 調(diào)用參數(shù):people,n,m</p><p> 調(diào)用方式:list4()調(diào)用</p><p><b> 返回值:0</b></p><p> 4、函數(shù)名:Display3()</p><p><b> 調(diào)用
109、參數(shù):無(wú)</b></p><p> 調(diào)用方式:list4()調(diào)用</p><p><b> 返回值:0</b></p><p> 程序的輸入與輸出描述</p><p> 輸入:輸入對(duì)應(yīng)數(shù)字(1/2/3)</p><p> 輸出:輸出對(duì)應(yīng)的項(xiàng)目的文字說(shuō)明</p>
110、<p><b> 調(diào)試分析或程序測(cè)試</b></p><p> 尚未解決的問(wèn)題或改進(jìn)方向</p><p><b> 無(wú)</b></p><p><b> 對(duì)軟件的使用說(shuō)明</b></p><p> 在幫助菜單輸入1/2/3,回車(chē),會(huì)輸出對(duì)應(yīng)項(xiàng)目的說(shuō)明。<
111、;/p><p><b> 結(jié)論及體會(huì)</b></p><p> 經(jīng)過(guò)一個(gè)星期的課程設(shè)計(jì),過(guò)程曲折可謂一語(yǔ)難盡。整天都是對(duì)著電腦,不然就是翻閱資料。在此期間我失落過(guò),也曾一度熱情高漲。點(diǎn)點(diǎn)滴滴令我回味無(wú)長(zhǎng)。這次課程設(shè)計(jì)使我體會(huì)到只有做到細(xì)心耐心,恒心才能做好事情。 這次的課程設(shè)計(jì),加強(qiáng)了我們動(dòng)手、思考和解決問(wèn)題的能力。鞏固和加深了對(duì)數(shù)據(jù)結(jié)構(gòu)的理解,提高綜合運(yùn)用本
112、課程所學(xué)知識(shí)的能力。培養(yǎng)了我選用參考書(shū),查閱手冊(cè)及文獻(xiàn)資料的能力。培養(yǎng)獨(dú)立思考,深入研究,分析問(wèn)題、解決問(wèn)題的能力。通過(guò)實(shí)際編譯系統(tǒng)的分析設(shè)計(jì)、編程調(diào)試,掌握應(yīng)用軟件的分析方法和工程設(shè)計(jì)方法。通過(guò)課程設(shè)計(jì),培養(yǎng)了我嚴(yán)肅認(rèn)真的工作作風(fēng),逐步建立正確的生產(chǎn)觀(guān)念、經(jīng)濟(jì)觀(guān)念和全局觀(guān)念。而且做課程設(shè)計(jì)同時(shí)也是對(duì)課本知識(shí)的鞏固和加強(qiáng),平時(shí)看課本時(shí),有些問(wèn)題就不是很能理解,做完課程設(shè)計(jì),那些問(wèn)題就迎刃而解了。而且還可以記住很多東西。認(rèn)識(shí)來(lái)源于實(shí)踐,實(shí)
113、踐是認(rèn)識(shí)的動(dòng)力和最終目的,實(shí)踐是檢驗(yàn)真理的唯一標(biāo)準(zhǔn)。所以這個(gè)期末測(cè)試之后的課程設(shè)計(jì)對(duì)我們的作用是非常大的。 這次的課程設(shè)計(jì)使我懂得了理論與實(shí)際相結(jié)合是很非常重要的,只有理論知識(shí)是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識(shí)與實(shí)踐相結(jié)合起來(lái),從理論中得出結(jié)論,</p><p><b> 主函數(shù)流程圖</b></p><p><b> 附錄1:參考文獻(xiàn)</
114、b></p><p> [1] 《數(shù)據(jù)結(jié)構(gòu)教程(第3版)》,李春葆,清華大學(xué)出版社,2010</p><p> [2]《數(shù)據(jù)結(jié)構(gòu)》,楊劍,清華大學(xué)出版社,2011</p><p> [3]《數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言版)》,嚴(yán)蔚敏 吳偉民,清華大學(xué)出版社,1997</p><p> [4]《Data Structures Using C數(shù)
115、據(jù)結(jié)構(gòu)(C語(yǔ)言版)》,R Krishnamoorthy、G Indirani Kumaravel,清華大學(xué)出版社,2009-9</p><p> [5]《C++數(shù)據(jù)結(jié)構(gòu)與程序設(shè)計(jì) (美)Robert L.Kruse/Alexander J.Ryba著/錢(qián)麗萍譯》, </p><p> 清華大學(xué)出版社,2004 </p><p> [6]《計(jì)算機(jī)算法設(shè)計(jì)與分析(
116、第2版)》,王曉東, 電子工業(yè)出版社, 2004</p><p> 附錄2:部分源代碼清單</p><p> 本課程設(shè)計(jì)共有5份代碼:“main.cpp”“l(fā)ist1.cpp”“l(fā)ist2.cpp”“l(fā)ist3.cpp”“l(fā)ist4.cpp”</p><p> “main.cpp”</p><p> #include <stdi
117、o.h></p><p> #include <stdlib.h></p><p> #include "list1.cpp"</p><p> #include "list2.cpp"</p><p> #include "list3.cpp"</p
118、><p> #include "list4.cpp"</p><p> int main()</p><p><b> {</b></p><p> int i,flag=1;</p><p> while (flag)</p><p> {L1
119、:printf(" 主菜單 \n");</p><p> printf(" *******************************\n\n");</p><p> printf(" * 1.猴子選大王
120、 *\n\n");</p><p> printf(" * 2.joseph環(huán) *\n\n");</p><p> printf(" * 3.紙牌游戲 *\n\n");</p><p> print
121、f(" * 4.幫助 *\n\n");</p><p> printf(" * 0.退出 *\n\n");</p><p> printf(" *******************
122、************\n\n");</p><p> printf(" 請(qǐng)選擇:");</p><p> while (true)</p><p><b> {</b></p><p> scanf("%d",&am
123、p;i);</p><p> if (i>=0 && i<=4)</p><p><b> break;</b></p><p><b> else</b></p><p> printf("輸入錯(cuò)誤,");</p><p&
124、gt; printf("請(qǐng)選擇0--4:\n");</p><p><b> }</b></p><p> switch (i)</p><p><b> {</b></p><p> case 1:{list1();break;}</p><p&g
125、t; case 2:{list2();break;}</p><p> case 3:{list3();break;}</p><p> case 4:{list4();break;}</p><p> case 0:{ flag=0;break;}</p><p><b> }</b></p>
126、<p><b> }</b></p><p><b> }</b></p><p> “l(fā)ist1.cpp”</p><p> typedef int Elemtype;</p><p> typedef struct Mnode</p><p><
127、b> {</b></p><p> Elemtype data;</p><p> struct Mnode *next;</p><p><b> }MNode;</b></p><p> struct Mnode* Creat_clist1(MNode *clist1,int a);<
128、;/p><p> int Kingmonkey(MNode*clist1,int a,int b);</p><p> int list1()</p><p><b> {</b></p><p><b> int m,n;</b></p><p> S1:print
129、f("請(qǐng)輸入猴群的數(shù)量m:");</p><p> scanf("%d",&m);</p><p> printf("請(qǐng)輸入每數(shù)到第N個(gè)n:");</p><p> scanf("%d",&n);</p><p><b> if(
130、m<=n)</b></p><p><b> {</b></p><p><b> goto S1;</b></p><p><b> }</b></p><p> printf("\n");</p><p>
131、; MNode *monkey; </p><p> monkey=NULL;</p><p> monkey=Creat_clist1(monkey,m); //建立猴群的循環(huán)鏈表</p><p> Kingmonkey(monkey,m,n);</p><p> system("pause");&
132、lt;/p><p> return 0; </p><p><b> }</b></p><p> struct Mnode* Creat_clist1(MNode *clist1,int a)</p><p><b> {</b></p><p> MNode *p,
133、*q;</p><p><b> int i;</b></p><p> clist1=NULL;</p><p> for(i=a;i>=1;i--)</p><p><b> {</b></p><p> p=(MNode*)malloc(sizeof(M
134、Node));</p><p> p->data=i;</p><p> p->next=clist1;</p><p><b> clist1=p;</b></p><p><b> if(i==a)</b></p><p> q=p; /
135、/用q指向鏈表最后一個(gè)節(jié)點(diǎn)</p><p><b> }</b></p><p> q->next=clist1; //構(gòu)成循環(huán)鏈表</p><p> return clist1; //clist即為指向第一個(gè)節(jié)點(diǎn)的指針</p><p><b> }</b></p>
136、;<p> int Kingmonkey(MNode*clist1,int a,int b)</p><p><b> {</b></p><p> MNode *p,*q;</p><p><b> p=clist1;</b></p><p><b> int i
137、;</b></p><p> printf("猴子依次離開(kāi)此圈的編號(hào)順序?yàn)椋?quot;);</p><p><b> do</b></p><p><b> {</b></p><p> for(i=1;i<b-1;i++)</p><p&g
138、t; { p=p->next; }</p><p> printf("%d ",p->next->data);</p><p> q=p->next; //q節(jié)點(diǎn)為要?jiǎng)h除的節(jié)點(diǎn)</p><p> p->next=p->next->next;</p><p>
139、p=p->next;</p><p><b> free(q);</b></p><p> }while(p!=p->next);</p><p> printf("\n");</p><p> printf("猴王的編號(hào)是:%d\n",p->data);
140、</p><p> printf("\n");</p><p><b> return 0;</b></p><p><b> }</b></p><p> “l(fā)ist2.cpp”</p><p> typedef int Elemtype;&l
141、t;/p><p> typedef struct Pnode</p><p><b> {</b></p><p> Elemtype data;</p><p><b> int num;</b></p><p> struct Pnode *next;</p&
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告---猴子選大王
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---joseph環(huán)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)——紙牌游戲
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-紙牌游戲
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)“紙牌游戲”
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--紙牌游戲
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--- 約瑟夫(joseph)環(huán)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告---joseph環(huán)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告-紙牌游戲
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)約瑟夫(joseph)環(huán)問(wèn)題
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---約瑟夫(joseph)環(huán)問(wèn)題
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告-- joseph環(huán)程序設(shè)計(jì)
- 猴子選大王課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-猴子吃桃
- 猴子選大王課程設(shè)計(jì)說(shuō)明書(shū)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---猴子吃桃子問(wèn)題
- 猴子吃桃問(wèn)題數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 選猴王數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 迷宮游戲數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)---joseph環(huán)
評(píng)論
0/150
提交評(píng)論