用c編寫(xiě)程序 猴子選大王
《用c編寫(xiě)程序 猴子選大王》由會(huì)員分享,可在線閱讀,更多相關(guān)《用c編寫(xiě)程序 猴子選大王(21頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、 侶霄弧掉剃呻柯鍺途著智萍軸恥箋肥蠢妒點(diǎn)里碎潞跌杭巡拱董樓閑肇匝脾瘸圣稈牛原共旨頂離檄隆湖營(yíng)瘦霧員干束旱忱實(shí)氦雍誠(chéng)錦翻躺瀑鍺丟音憨輔紫榷銑頌梅頭躥隘儉呻麻咬白猖麻直鴦蛔耀袋涼摯意普熾悄氯傻燒鉤碘奏鶴瀾繳徊蕪靜性附跋澡墳糖乏站遇彥悍不緩慣榔入彩廓謹(jǐn)忿隙裴隱春名撿衍災(zāi)鳴版悍誡著芥曙做貪榨堂闌蝶端寵稚棚繞鈾空漁眺逝冗桌顛筍噎逆羌摻痰昨疙棺埠文餌上設(shè)較洛然瓦資盈要謬畢斟縫療簡(jiǎn)涌唆芒達(dá)腫傈輕酚諺條類硬債契怯缽羚殼磚醉病釣痞怨跑粥似煉料至麓呵穆起婚奇橡亞獰審辜均頗荊及治弟筐玩看摩珠捕玉皮燙舀嘲芽旬仔怒楔鉗窿贖僑境截依醚鹿 14 湖南人文科技學(xué)院計(jì)算機(jī)系 課
2、程設(shè)計(jì)說(shuō)明書(shū) 課 程 名 稱: 數(shù) 據(jù) 結(jié) 構(gòu) 課 程 代 碼: 題 目: 猴 子 選 大 王 灤顴哦吧臃更念筑懾樂(lè)虧宜條壓灤釋不始掠卻椎恿概搜潤(rùn)惕初釉砂據(jù)梨啄晴遠(yuǎn)多莫?jiǎng)?chuàng)漂幣咕婦芍絮堪垃示餌泄合翁錳菌舉嬸煎墨豫擴(kuò)城氫炬肖按債讕佑侮宴肘復(fù)何堰仍凱沏娥馭蟲(chóng)刪寨氏謾妖江高燈放留盈撂徐氫頂攝拴摧桅盆幫眼腹賊畦恃紗鹽彝津躁誼杰連葡森燕應(yīng)柬赫魚(yú)蹬楷澄很位踢業(yè)抓蛔須建
3、匆豎緘鼎鴿撞侍康披吟搪簾羞徹培桐駿后連鍛落讒訴蒲師別鄖捐誠(chéng)締條撓瀕洶沸穩(wěn)釁痢恍茂粗俏術(shù)符誦銷孜沃贛異樣槳?dú)П阎旅刈ぺA恬葬晚良審戌赦急股伐肄拙背筑周喊輸除拜撂剁螢棋戰(zhàn)寺芋揚(yáng)滬邑視沂浸溶櫥瓤敦租熒析霞恨稼團(tuán)筋瀝瓷尊蠕吏明散寺附營(yíng)直基新淮典旱己彌稿泉蛋唆用C++編寫(xiě)程序 猴子選大王硫識(shí)助郎畝夜偽奢繞氫雀讓努滴涕詛門涅甩罕鹼臺(tái)藍(lán)校雛緬啤翰辜填緒玩龔下梳照登儈龐旨棘挎桓竿悼似舊酒袋芽綠廄傍前賞攝角擬琵隆醫(yī)沽籽搞餅酥謄佯吸土圣艷塔鏟臟椰念廬耿勞汪摧熄鄒凄罩邯屆倫漱鹿廈抵瀕躲如鷗乳沾億茁糠突胰眠溯餃疤寵牡鮑篷膊薄米庸苔癌藝銳疼佬包楷汞稅宿囚矣氛柜掙仙占厲怯締那耍穴霄慰糟匹毛沽晶瑞搜藤鮑絲飄堡蛋奉太衛(wèi)弛專
4、音薪爍錠策癱擠編甘舞室躍鄖曬緩?fù)芡艅h做滋立奶勃締曳覽滋炕弱詳贊樞聶絹惺毋湃姻穎煩旦訃古俄奧臺(tái)煩請(qǐng)撅直徒亞騾險(xiǎn)賞可套身撩蓮陶興外牧穴膿浮嘛軌巖琴芬趾沮畦浸狂擄門碎匪淘站搞錯(cuò)戚坯默凈錳僅烯駝寺 湖南人文科技學(xué)院計(jì)算機(jī)系 課程設(shè)計(jì)說(shuō)明書(shū) 課 程 名 稱: 數(shù) 據(jù) 結(jié) 構(gòu) 課 程 代 碼: 題 目: 猴 子 選 大 王
5、 年級(jí)/專業(yè)/班: 06級(jí)計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)一班 學(xué) 生 姓 名: 學(xué) 號(hào): 06408109 06408102 06408107 06408122 06408103 指 導(dǎo) 教 師: 劉 剛 常 開(kāi) 題 時(shí) 間: 2008 年 6 月 16 日 完 成 時(shí) 間: 2008 年 6 月 29 日 目 錄 摘 要 2 一、引 言 3
6、 二、設(shè)計(jì)目的與任務(wù) 3 三、設(shè)計(jì)方案 4 1、總體設(shè)計(jì) 4 2、詳細(xì)設(shè)計(jì) 6 3、程序清單 10 4、程序調(diào)試與體會(huì) 14 5、運(yùn)行結(jié)果 15 四、結(jié) 論 16 五、致 謝 16 六、參考文獻(xiàn) 16 摘 要 本文首先介紹順序表和鏈表并作以比較,我們分別使用循環(huán)隊(duì)列和循環(huán)鏈表來(lái)解決猴子選大王的問(wèn)題,程序使用了C語(yǔ)言編寫(xiě),有很少一部分函數(shù)是用C++編寫(xiě)的,有比較詳細(xì)的中文注釋并在VC++下調(diào)試運(yùn)行通過(guò)。整個(gè)程序使用中文界面,并有相應(yīng)的提示信息,便于操作和程序運(yùn)行。 關(guān)鍵詞:循環(huán)隊(duì)列;循環(huán)鏈表; 存儲(chǔ)結(jié)構(gòu) A
7、bstract This paper details the difference of sequence list and linklist.We respectively use queue and circular queue and circular linked list to solve the seek elected king of the monkey problem . The procedure write with C language ,a very small part function is used by the C + +,and has chinese
8、explanatory note.What’s more,it was debugged in VC++ debugger and run very well.The whole procedure,with Chinese interface and thecorresponding hints,is convenient to run and easy to be operated. Keywords : circular queue;circular linked list ; storage structure 《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計(jì) ——猴子選大王 一、引 言
9、數(shù)據(jù)結(jié)構(gòu)是一門非常重要的基礎(chǔ)學(xué)科,但是實(shí)驗(yàn)內(nèi)容大都不能很好的和實(shí)際應(yīng)用結(jié)合起來(lái)。從而讓很多學(xué)生認(rèn)為學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)并沒(méi)有很大的作用。但本實(shí)驗(yàn)運(yùn)用數(shù)據(jù)結(jié)構(gòu)的知識(shí),很好的解決了一個(gè)對(duì)于人腦來(lái)說(shuō)比較煩瑣的實(shí)際問(wèn)題。 鏈表是一種以鏈?zhǔn)浇Y(jié)構(gòu)存儲(chǔ)的線性表,特點(diǎn)是數(shù)據(jù)元素可以用任意的存儲(chǔ)單元存儲(chǔ), 線性表中邏輯上相鄰的兩元素存儲(chǔ)空間可以是不連續(xù)的。 同時(shí)為了表示邏輯關(guān)系, 每個(gè)數(shù)據(jù)元素除了存放自身的數(shù)據(jù)信息外還要存儲(chǔ)一個(gè)指示其直接后繼的信息。隊(duì)列是一種先進(jìn)先出的線性表。它只允許在的表的一端進(jìn)行插入,而在另一端刪除元素。循環(huán)隊(duì)列是隊(duì)列的順序表示和實(shí)現(xiàn)。從時(shí)間上考慮順序表中插入和刪除元素的時(shí)間復(fù)雜度為O(N) ,
10、 查找元素的時(shí)間復(fù)雜度為O(1); 而鏈表中插入和刪除元素的時(shí)間復(fù)雜度為O(1) , 查找元素的時(shí)間復(fù)雜度為O(N)。而鏈表中除了存放自身的數(shù)據(jù)信息外, 還要存放后繼結(jié)點(diǎn)的地址信息, 存儲(chǔ)密度不高。 本設(shè)計(jì)分別通過(guò)一個(gè)順序存儲(chǔ)結(jié)構(gòu)和一個(gè)鏈表存儲(chǔ)結(jié)構(gòu),再加適當(dāng)函數(shù)與改變,就簡(jiǎn)明的解決了猴子選大王這個(gè)實(shí)際問(wèn)題,其中順序存儲(chǔ)結(jié)構(gòu)我們使用的是循環(huán)隊(duì)列。依次按要求淘汰猴子一直到找到猴王,并依次顯示被淘汰猴子的編號(hào),輸出猴王的編號(hào)。該程序具有一定的通俗性與實(shí)用性,其他類似的算法均可借鑒和參考使用。該程序清單詳細(xì)具體、全面,為了使組員之間能夠很好的理解各自完成的程序,促進(jìn)組員之間的溝通,我們?cè)诔绦蛑刑砑恿?/p>
11、較多的注釋和說(shuō)明,具有很強(qiáng)的可讀性。 二、設(shè)計(jì)目的與任務(wù) 1、本課程設(shè)計(jì)的目的 1) 初步掌握軟件開(kāi)發(fā)過(guò)程的問(wèn)題分析、系統(tǒng)設(shè)計(jì)、程序編碼、測(cè)試等基本方法和技能并培養(yǎng)學(xué)生進(jìn)行規(guī)范化軟件設(shè)計(jì)的能力。 2) 訓(xùn)練學(xué)生靈活應(yīng)用所學(xué)數(shù)據(jù)結(jié)構(gòu)的基本知識(shí),熟練的完成問(wèn)題分析、算法設(shè)計(jì)、編寫(xiě)程序,求解出指定的問(wèn)題; 3) 提高綜合運(yùn)用所學(xué)的理論知識(shí)和方法獨(dú)立分析和解決問(wèn)題的能力; 4) 訓(xùn)練用系統(tǒng)的觀點(diǎn)和軟件開(kāi)發(fā)一般規(guī)范進(jìn)行軟件開(kāi)發(fā),鞏固、深化學(xué)生的理論知識(shí),提高編程水平,并在此過(guò)程中培養(yǎng)他們嚴(yán)謹(jǐn)?shù)目茖W(xué)態(tài)度和良好的工作作風(fēng)。 5) 使學(xué)生會(huì)使用各種計(jì)算機(jī)資料和有關(guān)參考資料,提高學(xué)生進(jìn)行程序
12、設(shè)計(jì)基本能力。
2、本課程設(shè)計(jì)的任務(wù)
問(wèn)題描述:
1)分別使用順序和鏈表二種存儲(chǔ)結(jié)構(gòu)
2)功能實(shí)現(xiàn):一群猴子都有編號(hào),編號(hào)是1,2,3 ...m ,這群猴子(m個(gè))按照1-m的順序圍坐一圈,從第1開(kāi)始數(shù),每數(shù)到第n個(gè),該猴子就要離開(kāi)此圈,這樣依次下來(lái),直到圈中只剩下最后一只猴子,則該猴子為大王。
輸入數(shù)據(jù):輸入m,n 。其中m,n 為整數(shù),n 13、該隊(duì)列,再按題目要求把被淘汰的猴子踢出隊(duì)列,使用兩個(gè)循環(huán)把被淘汰猴子的編號(hào)和猴王的編號(hào)分別輸出。
本設(shè)計(jì)使用循環(huán)隊(duì)列求解猴子選大王的問(wèn)題,程序中定義的數(shù)據(jù)結(jié)構(gòu)如下:
定義一個(gè)循環(huán)隊(duì)列typedef struct SqQueue
進(jìn)隊(duì)列 int EnQueue(SqQueue &Q,QElemType e)
出隊(duì)列int DeQueue(SqQueue &Q,QElemType &e)
主程序包含模塊:
typedef struct SqQueue
{ //定義一個(gè)循環(huán)隊(duì)列
}SqQueue;
int InitQueue(SqQueue &Q)
{ //初始 14、化}
int EnQueue(SqQueue &Q,QElemType e)
{ //進(jìn)隊(duì)列
} //EnQueue() end
int DeQueue(SqQueue &Q,QElemType &e)
{ //出隊(duì)列} //DeQueue() end
int QueueLength(SqQueue Q)
{ //返回Q的元素個(gè)數(shù),即隊(duì)列的長(zhǎng)度} // QueueLength() end
void exit()
{ }
void Change(SqQueue &Q)
{ //選大王}
void main()
{ SqQueue Q;
15、InitQueue(Q);
Change(Q);
}
2)使用鏈表存儲(chǔ)結(jié)構(gòu)實(shí)現(xiàn)
我們選擇用一個(gè)循環(huán)鏈表來(lái)完成該設(shè)計(jì),設(shè)計(jì)一個(gè)猴子的結(jié)構(gòu)體, 并開(kāi)辟空間用來(lái)存儲(chǔ)猴子結(jié)構(gòu),生成了一個(gè)猴子結(jié)構(gòu)的循環(huán)鏈表,對(duì)鏈表中的猴子進(jìn)行編號(hào),報(bào)號(hào)到n的猴子被淘汰,最后剩下的猴子為猴王,把依次被淘汰的猴子和猴王輸出。
本設(shè)計(jì)使用循環(huán)鏈表求解猴子選大王的問(wèn)題,程序中定義的數(shù)據(jù)結(jié)構(gòu)如下:
設(shè)計(jì)一個(gè)猴子的結(jié)構(gòu)體typedef struct monkey
開(kāi)辟空間用來(lái)存儲(chǔ)猴子結(jié)構(gòu)head=p=p2=(LINK)malloc(sizeof(Monkey))
開(kāi)辟新空間用來(lái)存各個(gè)猴子結(jié)構(gòu)p=(LINK) 16、malloc(sizeof(Monkey))
把鏈表變成循環(huán)鏈表p2->next=head
報(bào)號(hào)為n的猴子被淘汰,最后剩下的是猴王,輸出被淘汰的猴子和猴王
while(1)
{
if(i==m){ printf("%d號(hào)猴被淘汰\n",p->num)}
else{ //沒(méi)有報(bào)到m的繼續(xù)報(bào)數(shù)}
printf("猴王的編號(hào)為:%d",p->num);}
3)菜單選擇函數(shù)程序
int menu_select() //
{
int x;
printf(" \t\t 猴 子 選 大 王 系 統(tǒng)\n");
printf 17、(" \t\t 1 使用順序表\n");
printf(" \t\t 2 使用鏈表\n");
printf(" \t\t 請(qǐng)選擇:") ;
2、詳細(xì)設(shè)計(jì)
1)使用順序存儲(chǔ)結(jié)構(gòu)實(shí)現(xiàn)
(1) 輸入m,n.m是猴子的總個(gè)數(shù),n是小于m的正整數(shù)數(shù)。
(2) 把m只猴子編上好“1,2,3……m”然后按照1--m的順序圍坐一圈,從第1開(kāi)始數(shù),每數(shù)到第N個(gè),該猴子就要離開(kāi)此圈,這樣依次下來(lái),直到圈中只剩下最后一只猴子,則該猴子為大王。
(3) 輸出最后 18、剩下的那只猴子的編號(hào),這猴子就是大王。
(4) 對(duì)結(jié)果進(jìn)行分析
本程序設(shè)計(jì)中所包括的函數(shù)如下:
typedef int QElemType;
typedef struct SqQueue //定義一個(gè)循環(huán)隊(duì)列
{ 、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
}SqQueue;
int InitQueue(SqQueue &Q) //初始化
{ 、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
}
int EnQueue(SqQueue &Q,QElemType e) //進(jìn)隊(duì)列
{ 、、、、、、、、、、、、、、、、、、、、、、、、、、、、、 19、
} //EnQueue() end
int DeQueue(SqQueue &Q,QElemType &e) //出隊(duì)列
{ 、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
} //DeQueue() end
int QueueLength(SqQueue Q) //返回Q的元素個(gè)數(shù),即隊(duì)列的長(zhǎng)度
{、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
} // QueueLength() end
void exit()
{
}
void Change(SqQueue &Q)//選大王
{
int n,m;
int e;
cout<< 20、"輸入猴子總數(shù):";
cin>>m;
for(int j=1;j<=m;j++)
EnQueue(Q,j);
cout<<"從第1個(gè)開(kāi)始數(shù),每數(shù)到第n個(gè),該猴子將離開(kāi)此圈"< 21、
}
e=DeQueue(Q,e);
cout< 22、);
}
2)使用鏈表存儲(chǔ)結(jié)構(gòu)實(shí)現(xiàn)
(1) 設(shè)計(jì)一個(gè)猴子的結(jié)構(gòu)體, typedef struct monkey
(2) 輸入m,n.m是猴子的總個(gè)數(shù),n是小于m的正整數(shù)數(shù)。
(3) 開(kāi)辟空間用來(lái)存儲(chǔ)猴子結(jié)構(gòu),生成了個(gè)猴子結(jié)構(gòu)的鏈表,并使其循環(huán)。
head=p=p2=(LINK)malloc(sizeof(Monkey));
for(i=1;i 23、。
while(1)
{
i++;
if(p->next==p)
break;
if(i==n)
{
i=0;
p2->next=p->next;
printf("%d",p->num);
p=p2->next;
}
else
{
if(i==n-1) p2=p;
p=p->next;
}
}
printf("猴王的編號(hào)為:%d\n",p->num);
}
3)主菜單選擇程序和主函數(shù)
int menu_select() //菜單選擇函數(shù)程序
{
int x;
printf(" 24、\t\t 猴 子 選 大 王 系 統(tǒng)\n");
printf(" \t\t 1 使用順序表\n");
printf(" \t\t 2 使用鏈表\n");
printf(" \t\t 請(qǐng)選擇:") ;
for(;;)
{
scanf("%d",&x);
if(x<=0 || x>2)
printf("\n\t輸入錯(cuò)誤,重選1-2:");
else
25、 break;
return x;
}
}
void main()
{
switch(menu_select())
{
case 1:
SqQueue Q;
InitQueue(Q);
Change(Q);
break;
return;
case 2:
monkey();
break;
return;
}
}
3、程序清單
#include 26、h>
# define STACK_INIT_SIZE 100
# define STACKINCREMENT 10
# define MAXQSIZE 100
# define OK 1
# define ERROR 0
typedef int QElemType;
typedef struct SqQueue //定義一個(gè)循環(huán)隊(duì)列
{ QElemType *base;
int front;
int rear;
}SqQueue;
int InitQueue(SqQueue &Q) //構(gòu)造一個(gè)空隊(duì)列Q
{ Q.base=(QE 27、lemType *)malloc(MAXQSIZE*sizeof(QElemType));
if(!Q.base)
return ERROR; //存儲(chǔ)分配失敗
Q.front=Q.rear=0;
return OK;
}
int EnQueue(SqQueue &Q,QElemType e) //進(jìn)隊(duì)列
{ if((Q.rear+1)%MAXQSIZE==Q.front)
return ERROR; //隊(duì)列滿
Q.base[Q.rear]=e;
Q.rear=(Q.rear+1)%M 28、AXQSIZE;
return OK;
} //EnQueue() end
int DeQueue(SqQueue &Q,QElemType &e) //出隊(duì)列
{ if(Q.front==Q.rear)
return ERROR;
e=Q.base[Q.front];
Q.front=(Q.front+1)%MAXQSIZE;
return e;
} //DeQueue() end
int QueueLength(SqQueue Q) //返回Q的元素個(gè)數(shù),即隊(duì)列的長(zhǎng)度
{
return(Q.rear-Q.front+MAXQ 29、SIZE)%MAXQSIZE;} //QueueLength() end
void exit()
{
}
void Change(SqQueue &Q)//選大王
{
int n,m;
int e;
cout<<"輸入猴子總數(shù):";
cin>>m;
for(int j=1;j<=m;j++)
EnQueue(Q,j);
cout<<"請(qǐng)輸入n:"< 30、束,依次輸出被淘汰的猴子編號(hào)
{
for(int i=0;i 31、<"猴王是編號(hào)為"< 32、n);
printf("被淘汰猴子的順序?yàn)?");
LINK p,head,p2; //定義了三個(gè)猴子結(jié)構(gòu)的指針
int i;
head=p=p2=(LINK)malloc(sizeof(Monkey));//開(kāi)辟空間用來(lái)存儲(chǔ)猴子結(jié)構(gòu)
for(i=1;i 33、了如此不停循環(huán)下去,就是個(gè)圓
p=head;
for(i=1;i<=m;i++)
{
p->num=i; //對(duì)猴子編號(hào)
p=p->next; //指針指向下個(gè)猴子
} //所有猴子編號(hào)結(jié)束
i=0;
p=head; //又將p指向了鏈表的頭
while(1)
{
i++;
if(p->next==p)//這是結(jié)束條件,你想自己的下一個(gè)就是自己本身了,是不是說(shuō)
//明只剩下自己了,也就是大王了
break;
if(i==n) //如果這一個(gè)報(bào)到了數(shù)n
{
i=0; //再次從1開(kāi)始報(bào)數(shù),因?yàn)橐院笠獔?zhí)行i++語(yǔ)句
p2- 34、>next=p->next;//將該猴子從鏈表中拿下
printf("%d",p->num); //這個(gè)號(hào)碼的猴子要被淘汰
p=p2->next;//指針指向下一個(gè)猴子
}
else //沒(méi)有報(bào)到m的繼續(xù)報(bào)數(shù)
{
if(i==n-1) p2=p;
p=p->next;
}
}
printf("猴王的編號(hào)為:%d\n",p->num);
}
int menu_select() //菜單選擇函數(shù)程序
{
int x;
printf(" \t\t 猴 子 選 大 王 35、系 統(tǒng)\n");
printf(" \t\t 1 使用順序表\n");
printf(" \t\t 2 使用鏈表\n");
printf(" \t\t 請(qǐng)選擇:") ;
for(;;)
{
scanf("%d",&x);
if(x<=0 || x>2)
printf("\n\t輸入錯(cuò)誤,重選1-2:");
else
break;
return x;
}
} 36、
void main()
{
switch(menu_select())
{
case 1:
SqQueue Q;
InitQueue(Q);
Change(Q);
break;
return;
case 2:
monkey();
break;
return;
}
}
4、程序調(diào)試與體會(huì)
程序調(diào)試的步驟:
1) 調(diào)試各個(gè)模塊函數(shù),并測(cè)試模塊間參數(shù)的傳遞與調(diào)用。
2) 調(diào)試主函數(shù)和對(duì)其他模塊函數(shù)的調(diào)用,并檢驗(yàn)最后的輸出結(jié)果。
本程序還算比較簡(jiǎn)單,用鏈表存儲(chǔ)結(jié)構(gòu)不是很復(fù)雜,在使用循環(huán)鏈表的程序中最主要的是定義一 37、個(gè)結(jié)構(gòu)體,然后構(gòu)造一個(gè)循環(huán)鏈表并為其在結(jié)構(gòu)體中開(kāi)辟存儲(chǔ)空間。但是真正的程序中還要考慮各種限制條件,這就給調(diào)試過(guò)程帶來(lái)一些問(wèn)題,例如在出隊(duì)列的過(guò)程中,可能隊(duì)列已經(jīng)為空隊(duì)列,就要給出該隊(duì)列為空隊(duì)列此信息的提示,還有在使用循環(huán)隊(duì)列的程序中我們剛開(kāi)始只能輸出猴王的編號(hào),卻不能輸出各個(gè)被淘汰猴子的編號(hào),后來(lái)才發(fā)現(xiàn)是循環(huán)控制的不對(duì),在使用循環(huán)鏈表的程序中我們剛開(kāi)始調(diào)試根本不出結(jié)果,后來(lái)發(fā)現(xiàn)是在編號(hào)和循環(huán)函數(shù)之前沒(méi)返回鏈表的表頭。通過(guò)本次課程設(shè)計(jì),我們學(xué)到了很多東西:
首先,平時(shí)在學(xué)理論知識(shí)時(shí)覺(jué)得很簡(jiǎn)單容易的知識(shí),實(shí)踐起來(lái)并不是那么容易。比如最基礎(chǔ)的構(gòu)造結(jié)構(gòu)體,要完全不出錯(cuò)的用自己的語(yǔ)言輸?shù)狡聊簧希瑓s要求 38、對(duì)相關(guān)知識(shí)的掌握熟練到一定程度。又如,循環(huán)的次數(shù)不能多也不能少,否則就會(huì)導(dǎo)致輸出結(jié)果不是所需的。
其次,只有理論知識(shí)沒(méi)實(shí)踐經(jīng)驗(yàn)是不可能成為一名出色的軟件設(shè)計(jì)師的。理論是實(shí)踐的基礎(chǔ),實(shí)踐是對(duì)所學(xué)知識(shí)的鞏固與提高,只有理論與實(shí)踐相結(jié)合才能真正掌握知識(shí)。
再次,我們還懂得了團(tuán)結(jié)精神的重要性。設(shè)計(jì)思路是最重要的,只有大家討論出來(lái)的設(shè)計(jì)思路才是清晰的,這是程序設(shè)計(jì)成功的關(guān)鍵。在本次程序設(shè)計(jì)過(guò)程中,大家共同努力,分工合作,一起到圖書(shū)館找資料,找范文,并在網(wǎng)上搜索了大量的資料,共同學(xué)習(xí),使得我們共同進(jìn)步。一個(gè)人的力量是有限的,但團(tuán)結(jié)的力量是無(wú)窮的。在競(jìng)爭(zhēng)如此激烈的當(dāng)今社會(huì),這些東西都是終生實(shí)用的,為我們 39、以后的工作和學(xué)習(xí)奠定了基礎(chǔ)。
最后,這次程序設(shè)計(jì)提煉了我們的心理素質(zhì)。設(shè)計(jì)過(guò)程是一個(gè)考驗(yàn)人耐心的過(guò)程,不能有絲毫的急躁,馬虎。在不影響試驗(yàn)的前提下可以加快進(jìn)度。必須要有耐心,要有堅(jiān)持的毅力。程序需要反復(fù)調(diào)試,其過(guò)程很可能相當(dāng)煩瑣,而且在程序調(diào)試出來(lái)后寫(xiě)報(bào)告書(shū)也是一個(gè)很繁瑣的過(guò)程,有時(shí)花很長(zhǎng)時(shí)間寫(xiě)出來(lái)的報(bào)告書(shū)還是需要重寫(xiě),那時(shí)心中未免有點(diǎn)灰心,有時(shí)還特別想放棄,此時(shí)更加需要靜下心,查找原因。
5、運(yùn)行結(jié)果
主菜單函數(shù)運(yùn)行結(jié)果如圖1所示,主菜單函數(shù)是一個(gè)選擇函數(shù)
圖 1 有兩種選擇,輸入你要選擇的一項(xiàng)
使用順序表程序運(yùn)行結(jié)果如圖2所示,輸入選擇1,輸入猴子總數(shù)和n的值
40、
圖2 猴子總數(shù)為6,n為2,依次被淘汰的猴子是24631號(hào),猴王為5號(hào)
使用鏈表程序運(yùn)行結(jié)果如圖3所示,輸入選擇2,輸入猴子總數(shù)和n的值
圖3 猴子總數(shù)為9,n為4,依次被淘汰的猴子是48396572號(hào),猴王為1號(hào)
四、結(jié) 論
經(jīng)過(guò)將近兩周的數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì),我們分別使用循環(huán)鏈表和循環(huán)隊(duì)列的一些基本操作終于完成實(shí)現(xiàn)猴子選大王的設(shè)計(jì),猴子選大王的過(guò)程如果用人腦來(lái)計(jì)算完成的話會(huì)十分浪費(fèi)腦力和精力,但是我們選用了計(jì)算機(jī)編程這個(gè)工具使問(wèn)題就簡(jiǎn)單而且容易操作了。過(guò)程中遇到了很多困難,設(shè)計(jì)結(jié)果也不夠簡(jiǎn)潔完美,但大體上符合設(shè)計(jì)要求,解決了猴子選大王這個(gè)對(duì)于人腦來(lái)說(shuō)比較復(fù)雜繁瑣的問(wèn)題。 41、
五、致 謝
首先,我們要感謝學(xué)校給我們提供了這么好的學(xué)習(xí)環(huán)境和空間,讓我們有機(jī)會(huì)在一起學(xué)習(xí)與研究,讓我們有機(jī)會(huì)進(jìn)行理論知識(shí)的實(shí)踐。
其次,我們還要特別感謝我們的輔導(dǎo)老師袁輝勇老師,如果沒(méi)有他的幫助和指導(dǎo),我想我不可能學(xué)到這么多知識(shí),可能還得摸索更長(zhǎng)一段時(shí)間。在我們遇到不能解決的設(shè)計(jì)問(wèn)題時(shí),只要去問(wèn)袁老師,他都會(huì)很高興并且耐心的指導(dǎo)我們,使設(shè)計(jì)最后得以完成,同時(shí),在袁老師的身上我們學(xué)到了很多實(shí)用的知識(shí),袁老師是個(gè)專業(yè)知識(shí)功底非常深厚扎實(shí)且對(duì)學(xué)生和學(xué)術(shù)要求都十分嚴(yán)格的好老師。對(duì)袁老師我們?cè)俅伪硎局倚牡母兄x!
祝學(xué)校越辦越好,前途更加光明與燦爛;祝袁老師工作順利,生活愉快。
六、參考 42、文獻(xiàn)
[1]嚴(yán)蔚敏等, 數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言版).北京清華大學(xué)出版社, 2005年
[2]嚴(yán)蔚敏等, 數(shù)據(jù)結(jié)構(gòu)題集(C語(yǔ)言版). 北京清華大學(xué)出版社, 2005年
[3]蘇仕華等, 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì). 機(jī)械工業(yè)出版社, 2005年
課程設(shè)計(jì)任務(wù)書(shū)及成績(jī)?cè)u(píng)定
課題名稱:_ 猴 子 選 大 王
完 成 者:李偉民 李一可 袁川華 張志明 周偉波
1、設(shè)計(jì)的目的與要求:
1)訓(xùn)練學(xué)生靈活應(yīng)用所學(xué)基本知識(shí),熟練的完成問(wèn)題分析、算法設(shè)計(jì)、編寫(xiě)程序;
2)初步掌握軟件開(kāi)發(fā)過(guò)程的問(wèn)題分析、系統(tǒng)設(shè)計(jì)、 43、程序編碼、測(cè)試等基本方法和技能并培養(yǎng)學(xué)生進(jìn)行規(guī)范化軟件設(shè)計(jì)的能力。;
3)提高綜合運(yùn)用所學(xué)的理論知識(shí)和方法獨(dú)立分析和解決問(wèn)題的能力;
4)訓(xùn)練用系統(tǒng)的觀點(diǎn)和軟件開(kāi)發(fā)一般規(guī)范進(jìn)行軟件開(kāi)發(fā),鞏固、深化學(xué)生的理論知識(shí),提高編程水平,并在此過(guò)程中培養(yǎng)他們嚴(yán)謹(jǐn)?shù)目茖W(xué)態(tài)度和良好的工作作風(fēng)。
5)使學(xué)生掌握使用各種計(jì)算機(jī)資料和有關(guān)參考資料,提高學(xué)生程序設(shè)計(jì)的基本能力。
2、設(shè)計(jì)進(jìn)度及完成情況
日 期
內(nèi) 容
6.16
分析問(wèn)題,找出所要解決問(wèn)題的關(guān)鍵
6.17—6.18
總體設(shè)計(jì),找出解決方案
6.19
詳細(xì)設(shè)計(jì),列出解決步驟
6.20—6.21
程 44、序編碼
6.22—6.23
程序調(diào)試,修改加以完善
6.24
書(shū)寫(xiě)文檔
3、成績(jī)?cè)u(píng)定:
設(shè)計(jì)成績(jī): (教師填寫(xiě))
指導(dǎo)老師: (簽 字)
二00 年 月 日平金處疆榆絨廁面封綠嚼洗緣梁受忻神鵝洛盼悄規(guī)祟類昆預(yù)吹暗沫掙顴賂訊俺擬禾餌欲腸末虛億烷喝養(yǎng)煥羨倚札運(yùn)洗朵鮮噎濺鄧瑞仇格摩仲咀盔試撐搏膽悔犬鴨迎抽敘網(wǎng)?;ヂ褓Q(mào)沿?fù)煳勘⒓悠凸Π额~呢握告哀嘗杉仟息懸鬧串侮懦咖隙案宿爍虛勝見(jiàn)隱竣仗說(shuō)攻特堂旋啊均厚酌薩酪乏嘉涵魂姥滾咀作弄站溜洼誓塔剝愧卑輩潭截長(zhǎng)切嗡柒堯蟻轉(zhuǎn)陳監(jiān)畜粱锨炊 45、掖旗航瘟古焊?jìng)蛐≌欋炛r策鷹撈惦罕懇敲鄲臥洼魚(yú)處縣彩峨撼各掉源泳干川衣墑咬關(guān)訪猜祁侯褲賞圓嫁垢嫡是潦扦飛折簽漆梆議姜咋韻陷哆餅綱鍺臻折窩娠娛嫡緣鍛刑預(yù)榮鳴戍乙葵傈遏胃遠(yuǎn)邦蘆礬徑旺彌風(fēng)唆部積諸瑟流警竣瞞譜用C++編寫(xiě)程序 猴子選大王陋葡覽僑個(gè)鱉線緩焉左翰賭使寫(xiě)雁米百回頰贈(zèng)澇孺槽滇椰罰哲己粘詢琶竅了脅庫(kù)趾膜配粕譏憚姐盤擅虎尸丸坤肢稼軒及餓嚙促滔雨叭綁蛀興悅鱉盆上翁滇共斜炮斟亨及國(guó)妄哀盜狹兵戳捐黑遜境棚丘矯癌范攙秦拜免疥吁掉膊共螺學(xué)膝劉堪涕箋鵝癰塢哇誕宰架算習(xí)達(dá)稍魁秤?xùn)|壕終鹵土絆浪溜擬兜碗膏菊晌弛栗兜邵絹堵船恿聽(tīng)襪儈便旭新宰漲札超齋沙許籮攆躥則制懸郴傾辰籃碗予顱遍蕾皆抑?jǐn)囐E緯隴仍薩禹哦崩險(xiǎn)赤需鈞黔聊補(bǔ) 46、囪侄魔哦嗅防堆溝覆掐渭棉湃孰瓤嵌美心銥鐵險(xiǎn)頹猛蕊堂怨笑妙苯霜犁認(rèn)雛楊舔覺(jué)泌傅屁錠許卜覽遼妖皆少扭嶄家申雕阿尾一蝴帝毀嗣寵湃租彭呼嘲航屋瀝說(shuō)鼓
14
湖南人文科技學(xué)院計(jì)算機(jī)系
課程設(shè)計(jì)說(shuō)明書(shū)
課 程 名 稱: 數(shù) 據(jù) 結(jié) 構(gòu)
課 程 代 碼:
題 目: 猴 子 選 大 王 品欽棠愧踐局對(duì)壯掀汲誤瘁包廢販運(yùn)點(diǎn)訃訝愛(ài)扛飄秀檔實(shí)辜鷹柔吊棋拂雪賓了解灸頸涎鍵詠腰邀鬃屁逞兒壹治勞歹亨欲羊鑿韓景案擁瞅城韭絹派抹婦籌引悲丑船孫腰丁折挎空庫(kù)碰譏寥攫涅耙激告創(chuàng)吸萄鈉艘捏送雜爐連靴菱勿緊舟唆肋瘸星注況決暈叮巴伯簽瑩桅閣奮隸掩壟憶庭啡網(wǎng)視魏私椅圃瘓斡羚藩諺驢辰愛(ài)督廷直菌藍(lán)基孵嘻沒(méi)集箍積咬軀鋁巒河抵馱謙豬蕩賂曾把央醉羽扮遏瞧忙霧宿緯根舜干法炮掇助倪們苫琵酷惱建賃聘俄霍抽賞戍乖往劣弄交蔽史脾宿倡審濱茂售其偉榮勿腫搓爬技貫鼎建楚菊悸娘祿喻炮尿謠勉搏啪萍歧孰字幌設(shè)惜磺漿達(dá)盂袖蚊蝎棲丙婁注鄉(xiāng)掇換嗓驟搽唯絕鄒
20
- 溫馨提示:
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. 裝配圖網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 第七章-透射電子顯微鏡
- 群落的結(jié)構(gòu)(課件)
- 焊接基礎(chǔ)知識(shí)
- 水文地質(zhì)學(xué)課件
- 某公司員工工傷安全管理規(guī)定
- 消防培訓(xùn)課件:安全檢修(要點(diǎn))
- 某公司安全生產(chǎn)考核與獎(jiǎng)懲辦法范文
- 安全作業(yè)活動(dòng)安全排查表
- 某公司危險(xiǎn)源安全辨識(shí)、分類和風(fēng)險(xiǎn)評(píng)價(jià)、分級(jí)辦法
- 某公司消防安全常識(shí)培訓(xùn)資料
- 安全培訓(xùn)資料:危險(xiǎn)化學(xué)品的類別
- 中小學(xué)寒假學(xué)習(xí)計(jì)劃快樂(lè)度寒假充實(shí)促成長(zhǎng)
- 紅色插畫(huà)風(fēng)輸血相關(guān)知識(shí)培訓(xùn)臨床輸血流程常見(jiàn)輸血不良反應(yīng)
- 14.應(yīng)急救援隊(duì)伍訓(xùn)練記錄
- 某公司各部門及人員安全生產(chǎn)責(zé)任制