C語(yǔ)言實(shí)現(xiàn)斗地主發(fā)牌程序_第1頁(yè)
C語(yǔ)言實(shí)現(xiàn)斗地主發(fā)牌程序_第2頁(yè)
C語(yǔ)言實(shí)現(xiàn)斗地主發(fā)牌程序_第3頁(yè)
C語(yǔ)言實(shí)現(xiàn)斗地主發(fā)牌程序_第4頁(yè)
C語(yǔ)言實(shí)現(xiàn)斗地主發(fā)牌程序_第5頁(yè)
已閱讀5頁(yè),還剩4頁(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)介

實(shí)驗(yàn)四、斗地主發(fā)牌程序的實(shí)現(xiàn)一、實(shí)驗(yàn)?zāi)康?.了解線性表的順序存儲(chǔ)與基本操作;2.了解線性表的鏈接存儲(chǔ)與基本操作;二、實(shí)驗(yàn)工具VC6.0三、實(shí)驗(yàn)練習(xí)和要求3.1實(shí)驗(yàn)內(nèi)容:1)考慮好紙牌的存儲(chǔ)結(jié)構(gòu),定義好紙牌大小的比較規(guī)則;2)分別建立順序線性表和鏈接線性表,可以進(jìn)行定位刪除,可以進(jìn)行保序插入,可以進(jìn)行順序輸出……;3)利用上述線性表類,構(gòu)造若干個(gè)線性表的實(shí)例,構(gòu)造一個(gè)含有全部紙牌的線性表,從中隨機(jī)抽取……隨機(jī)發(fā)給三家(每家17張),并保留底牌3張;4)按大小順序分別輸出各家的牌和底牌。3.2實(shí)驗(yàn)要求:1)利用????王顯示每家發(fā)得的牌和底牌(ASCII:\5\4\3\6);2)每家的牌要求有序排列(數(shù)字中3最小,2最大,不同的花色按?,?,?,?,王漸大處理);3)所發(fā)的牌是隨機(jī)的;4)順序線性表和鏈接線性表都要用到。3.3實(shí)驗(yàn)難點(diǎn):1)如何存儲(chǔ)一張牌;2)如何比較牌的大?。?45678910JQKA2);3)如何實(shí)現(xiàn)順序表與鏈接表的無(wú)差別性?3.4實(shí)現(xiàn)提示1)54張牌可以用整數(shù):0--53來(lái)表示,也可以用兩個(gè)獨(dú)立的整數(shù)來(lái)表示;2)用利用C語(yǔ)言的RAND()函數(shù)來(lái)產(chǎn)生隨機(jī)數(shù);3)牌的大小比較規(guī)則,除王比較大外,一般的牌先比較點(diǎn)兒數(shù),再比較花色;4)建議用保序插入,而不要使用最后排序。3.5注意事項(xiàng)1)順序表和鏈接表的操作接口要盡量一致;2)345678910JQKA2中的10占兩位?3)大王與小王的特殊處理。3.6本次實(shí)驗(yàn)可以三人構(gòu)成學(xué)習(xí)小組,上交一份作業(yè),并給出每一個(gè)人貢獻(xiàn)分?jǐn)?shù)。四、實(shí)驗(yàn)內(nèi)容本次實(shí)驗(yàn)分別使用順序表和單鏈表實(shí)現(xiàn),三人手中的牌都已經(jīng)按照大小以及花色從小到大排序。代碼如下:順序表實(shí)現(xiàn)隨機(jī)發(fā)牌#include<stdio.h>#include<malloc.h>#include<time.h>#include<stdlib.h>#defineMaxSize100typedefintdataType;typedefstruct{ dataTypedata[MaxSize]; intsize; }SqList;SqList*CreateList(dataTypea[],intn){ SqList*t=(SqList*)malloc(sizeof(SqList)); for(inti=0;i<n;i++) t->data[i]=a[i]; t->size=n; returnt;}SqList*CreateListemp(){ SqList*t=(SqList*)malloc(sizeof(SqList)); t->size=0; returnt;} voidExchange(SqList*l,inti,intj){ inttemp; temp=l->data[i]; l->data[i]=l->data[j]; l->data[j]=temp;}intMin(SqList*l){ intmin=l->data[0]; for(inti=1;i<l->size;i++){ if(l->data[i]<min)min=l->data[i]; } returnmin;}voidDelete(SqList*l,intk){ if(k<1||k>l->size)exit(1); for(inti=k;i<l->size;i++) l->data[i-1]=l->data[i]; l->size--;}intLocate(SqList*l,dataTypex){ for(inti=0;i<l->size;i++) if(l->data[i]==x)returni+1; return0;}voidPrint(SqList*l){ for(inti=0;i<l->size;i++) printf("%d",l->data[i]);}SqList*Sort(SqList*pa){ SqList*pb=CreateListemp(); intM; for(inti=0;i<17;i++){ M=Min(pa); pb->data[i]=M; Delete(pa,Locate(pa,M)); pb->size++; }returnpb;}intmain(){ inta[54],i,j,N; intone[17];inttwo[17];intthree[17];intcover[3]; char*poker[]={"梅花3","方塊3","紅桃3","黑桃3","梅花4","方塊4","紅桃4", "黑桃4","梅花5","方塊5","紅桃5","黑桃5","梅花6","方塊6","紅桃6","黑桃6", "梅花7","方塊7","紅桃7","黑桃7","梅花8","方塊8","紅桃8","黑桃8","梅花9", "方塊9","紅桃9","黑桃9","梅花10","方塊10","紅桃10","黑桃10","梅花J","方塊J", "紅桃J","黑桃J","梅花Q","方塊Q","紅桃Q","黑桃Q","梅花K","方塊K","紅桃K", "黑桃K","梅花A","方塊A","紅桃A","黑桃A","梅花2","方塊2","紅桃2","黑桃2", "小王","大王"}; printf("順序表實(shí)現(xiàn):3個(gè)人,每人隨機(jī)發(fā)17張牌,留3張底牌。\n\n"); for(i=0,j=1;i<54;i++){ a[i]=j; j++;} SqList*pl=CreateList(a,54); srand((unsigned)time(0)); for(N=0;N<MaxSize;N++) { i=rand()%54; j=rand()%54; Exchange(pl,i,j); } for(i=0,j=0;j<17;j++,i++){one[i]=pl->data[j];} for(i=0,j=17;j<34;j++,i++){two[i]=pl->data[j];} for(i=0,j=34;j<51;j++,i++){three[i]=pl->data[j];} for(i=0,j=51;j<54;j++,i++){cover[i]=pl->data[j];} SqList*first=CreateList(one,17); SqList*second=CreateList(two,17); SqList*third=CreateList(three,17); SqList*left=CreateList(cover,3); printf("--------------------------------\n"); printf("按照大小以及花色排序后的結(jié)果\n"); printf("--------------------------------\n"); SqList*sortedfirst=Sort(first); SqList*sortedsecond=Sort(second); SqList*sortedthird=Sort(third); printf("第一個(gè)人的牌:"); for(i=0;i<17;i++){printf("%s",poker[sortedfirst->data[i]-1]);} printf("\n"); printf("第二個(gè)人的牌:"); for(i=0;i<17;i++){printf("%s",poker[sortedsecond->data[i]-1]);} printf("\n"); printf("第三個(gè)人的牌:"); for(i=0;i<17;i++){printf("%s",poker[sortedthird->data[i]-1]);} printf("\n"); printf("底牌:"); for(i=0;i<3;i++){printf("%s",poker[left->data[i]-1]);} return0;}運(yùn)行兩次結(jié)果截圖:?jiǎn)捂湵韺?shí)現(xiàn)隨機(jī)發(fā)牌#include<stdio.h>#include<malloc.h>#include<time.h>#include<stdlib.h>typedefintElemType;typedefstructnode{ElemTypedata;structnode*next;}slink;slink*creslink(ElemTypea[],intn){slink*head,*p,*s;inti;p=head=(slink*)malloc(sizeof(slink));for(i=1;i<=n;i++){s=(slink*)malloc(sizeof(slink)); s->data=a[i-1]; p->next=s; p=s;} p->next=NULL; returnhead;}slink*creslinkemp(){ slink*head,*p; p=head=(slink*)malloc(sizeof(slink)); p->next=NULL; returnhead;}intgetelem(slink*head,inti,ElemType*e){slink*p;intj;p=head->next;j=1;while(p!=NULL&&j<i){ p=p->next;j++;}if(p==NULL)return0;*e=p->data;return1;}intinsert(slink*head,inti,ElemTypex){slink*p,*q;intj;p=head;j=0;while(p!=NULL&&j<(i-1)){p=p->next;j++;}if(p==NULL)return0;q=(slink*)malloc(sizeof(slink));q->data=x;q->next=p->next;p->next=q;return1;}intDelete(slink*head,inti){slink*p,*q;intj;if(i<1)return0;p=head;j=0;while(p->next!=NULL&&j<i-1){p=p->next;j++;}if(p->next==NULL)return0;q=p->next;p->next=q->next;free(q);return1;}voidsort(inta[],intsize){ for(inti=0;i<size-1;i++){ inttmpmin=i; for(intj=i+1;j<size;j++){ if(a[j]<a[tmpmin])tmpmin=j; } inttmp=a[i]; a[i]=a[tmpmin]; a[tmpmin]=tmp; }}voidPrint(slink*head,char*a[]){slink*p;p=head->next;while(p!=NULL){printf("%s",a[(p->data)-1]);p=p->next;}printf("\n");}intmain(){ inta[54],r,R; intone[17];inttwo[17];intthree[17];intcover[3]; printf("單鏈表實(shí)現(xiàn):3個(gè)人,每人隨機(jī)發(fā)17張牌,留3張底牌。\n"); for(inti=0,j=1;i<54;i++){a[i]=j;j++;} char*poker[]={"梅花3","方塊3","紅桃3","黑桃3","梅花4","方塊4","紅桃4", "黑桃4","梅花5","方塊5","紅桃5","黑桃5","梅花6","方塊6","紅桃6","黑桃6", "梅花7","方塊7","紅桃7","黑桃7","梅花8","方塊8","紅桃8","黑桃8","梅花9", "方塊9","紅桃9","黑桃9","梅花10","方塊10","紅桃10","黑桃10","梅花J","方塊J", "紅桃J","黑桃J","梅花Q","方塊Q","紅桃Q","黑桃Q","梅花K","方塊K","紅桃K", "黑桃K","梅花A","方塊A","紅桃A","黑桃A","梅花2","方塊2","紅桃2","黑桃2", "小王","大王"}; slink*paNum=creslink(a,54); slink*pbNum=creslinkemp(); for(intx=1,n=54;x<=54;x++,n--){ srand((unsigned)time(0)); r=(rand()%n)+1; getelem(paNum,r,&R); insert(pbNum,x,R); Delete(paNum,r); } printf("\n"); slink*pone=pbNum->next; for(inti=0;i<17;i++){ one[i]=pone->data; pone=pone->next; } slink*ptwo=pbNum->next; for(inti=0;i<17;i++){ptwo=ptwo->next;} for(inti=0;i<17;i++){ two[i]=ptwo->data; ptwo=ptwo->next; } slink*pthree=pbNum->next; for(inti=0;i<34;i++){pthree=pthree->next;} for(inti=0;i<17;i++){ three[i]=pthree->data; pthree=pthree->next; } slink*pcover=pbNum->next; for(inti=0;i<51;i++){pcover=pcover->next;} for(inti=0;i<3;i++){ cover[i]=pcover->data; pcover=pcover->next; } sort(one,17);sort(two,17);sort(three,17);slink*sortedfirst=creslink(one,17); slink*sortedsecond=creslink(two,17); slink*sortedthird=creslink(three,17); slink*Cover=creslink(cover,3); printf("--------------------------------\n"); printf("按照大小以及花色排序后的結(jié)果\n"); prin

溫馨提示

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