當前位置:首頁 » 編程語言 » 發牌c語言

發牌c語言

發布時間: 2025-10-06 05:37:14

❶ 54張撲克牌,留5張底牌,其它分給四個人,求代碼實現我圖片上的內容

我這里有個模擬發牌52張的代碼,稍微改改就可以了,供你參考

#include<stdio.h>
#include<time.h>
#include<stdlib.h>
intmain(void)
{
intaim,i;
intpoker[52]={0};/*已發的牌在數組中,初始狀態為0,表示沒發過,置為1表示已發過,避免重復發放*/

srand((unsigned)time(NULL));/*隨機數初始化*/

/*產生一個隨機數0-51,並保存到aim變數中*/
aim=rand()%52;

/*模擬發不含大小王牌的撲克牌,
將生成的隨機數映射為每張撲克牌。
按照花色(梅花、方塊、紅桃、黑桃)和大小(2~10、J、Q、K、A)順序進行映射。
映射規則如下:
梅花:0-12
方塊:13-25
紅桃:26-38
黑桃:39-51
*/


/*以下模擬發52張牌,可以根據需要修改循環次數發任意張*/
for(i=1;i<=52;i++)
{
aim=rand()%52;
/*已發的牌在數組中置為1,避免重復發放*/
while(poker[aim]==1)
{
aim=rand()%52;
}
poker[aim]=1;

printf(" 第%2d張牌:",i);
switch(aim/13)
{
case0:
printf("梅花");
break;
case1:
printf("方塊");
break;
case2:
printf("紅桃");
break;
case3:
printf("黑桃");
break;
default:break;
}
switch(aim%13+1)
{
case2:
case3:
case4:
case5:
case6:
case7:
case8:
case9:
case10:
printf("%2d",aim%13+1);
break;
case1:
printf("A");
break;
case11:
printf("J");
break;
case12:
printf("Q");
break;
case13:
printf("K");
break;
default:break;
}
}
return0;
}

❷ C語言,撲克牌發牌程序。要求運用結構體。多謝幫忙^o^

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
structPOKE
{
intnum;//小王-1,大王-2,A:1,J:11,Q:12,K:13
intcolor;//黑1,紅2,梅3,方4,小王5,大王6
}s[54];

intmain()
{
inti,num,color;
memset(s,0,sizeof(structPOKE)*54);
srand((unsigned)time(0));
i=rand()%54;
s[i].num=-1;//小王
s[i].color=5;
while(1)
{
i=rand()%54;
if(s[i].num==0)
{
s[i].num=-2;//大王
s[i].color=6;
break;
}
}
intcount=2;
while(1)
{
num=rand()%13+1;
color=rand()%4+1;
i=rand()%54;
if(s[i].num==0)
{
s[i].num=num;
s[i].color=color;
count++;
if(count>=54)
{
break;
}
}
}
printf(" 順序為: ");
for(i=0;i<54;i++)
{
switch(s[i].num)
{
case-1:putchar(1);break;
case-2:putchar(2);break;
case1:putchar('A');break;
case11:putchar('J');break;
case12:putchar('Q');break;
case13:putchar('K');break;
default:printf("%d",s[i].num);
}
switch(s[i].color)
{
case1: putchar(6);break;
case2:putchar(3);break;
case3:putchar(5);break;
case4:putchar(4);break;
default:printf("");
}
printf("");
}
return0;
}

❸ 如何求C語言撲克牌洗牌發牌,發的牌要從大到小排序,每個部分都要用

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define N 52 //牌張總數
#define M 13 //每花色張數
char hs[4]={5,4,3,6}; //花色數組:梅花、紅心、方塊、黑桃字元對應的ASCII碼
char hx[]={"JQKA"}; // 對應11,12,13,14共四張大於10的牌符號
//生成順序撲克牌數組: 1~52,梅花1~13,紅心14~26,方塊27~39,黑桃40~52

void newDeck(int *a) { int i; for ( i=0;i<N;i++ ) a[i]=i+1; }
//洗牌,將花色和順序打亂
void Shuffle(int *a) { int s,i,j,t;
srand((unsigned int)time(NULL)); //利用當前時間生成隨機數種子
s=rand()%11+5; printf("隨機洗牌%d遍\n",s); //第1個隨機數當成洗牌次數, 洗牌次數大於等於5,小於等於15
for ( i=0;i<s;i++ ) {
for ( j=0;j<N;j++ ) {
s=rand()%52; //隨機數范圍0~51,對應a數組下標
t=a[j]; a[j]=a[s]; a[s]=t; //第j張牌和第s張牌交換
}
}
}
//發牌並顯示
void Deal(int a[N],int b[4][M]) { int i,j;
for ( i=0;i<4;i++ ) for ( j=0;j<M;j++ ) b[i][j]=a[i*M+j];
}
//理牌
void Collating(int a[4][M]) { int i,j,k,h;
for ( h=0;h<4;h++ )
for ( i=0;i<M-1;i++ )
for ( j=i+1;j<M;j++ )
if ( a[h][i]<a[h][j] ) {
k=a[h][i]; a[h][i]=a[h][j]; a[h][j]=k;
}
}
//顯示
void Display(int a[4][M]) { int i,j,s;
for ( i=0;i<4;i++ ) {
for ( j=0;j<M;j++ ) {
s=a[i][j]-1; printf("%c",hs[s/M]);
s%=M; if ( s<9 ) printf("%d ",s+2); else printf("%c ",hx[s-9]);
}
printf("\n");
}
}
void main() { int Deck[N],hands[4][M];
newDeck(Deck); //新撲克牌
Shuffle(Deck); //洗牌
Deal(Deck,hands); //發牌
Collating(hands); //理牌
Display(hands); //顯示
printf("\n\n"); system("pause");

}

❹ C語言鬥地主發牌程序,急求,謝謝

這是以隨機的形式發牌的。希望能幫到你。
int main(){ int a[60]; int b[60]; int w = 0; int wi,wj,wii; int i,j,index,x=0,m; for(i=0;i<54;i++) a[i]=i+1; srand((unsigned)time(0)); for(i=0;i<54;) { index=rand()%54; if(a[index]!=0) { b[i]=a[index]; //printf("%d ",b[i]); a[index]=0; ++i; } } printf("\n說明:\n"); printf("*******************\n"); printf("** 紅桃 %c ",3); printf("**\n"); printf("** 方塊 %c ",4); printf("**\n"); printf("** 梅花 %c ",5); printf("**\n"); printf("** 黑桃 %c ",6); printf("**\n"); printf("** 大王 A **\n** 小王 a **\n"); printf("*******************\n"); printf("\n請輸入打牌人數:\n"); scanf("%d",&w); wi = 54/w; wj = 54%w; //printf("%d,%d",wi,wj); for (j = 0;j < w;j++) { m = 0; printf("\n\n第%d個人的牌\n",j+1); wj --; if (wj>=0) wii = wi + 1; else wii = wi; //紅桃 printf("紅桃 %c ",3); printf(":"); for(i = j*wii;i<(j+1)*wii;i++) { if (b[i]<=13&&b[i]>0) { m++; if (b[i]==11) printf("J "); else if (b[i]==12) printf("Q "); else if (b[i]==13) printf("K "); else printf("%d ",b[i]); } } //方塊 printf("\n方塊 %c ",4); printf(":"); for(i = j*wii;i<(j+1)*wii;i++) { if (b[i]<=26&&b[i]>13) { m++; b[i] = b[i]-13; if (b[i]==11) printf("J "); else if (b[i]==12) printf("Q "); else if (b[i]==13) printf("K "); else printf("%d ",b[i]); } } //梅花 printf("\n梅花 %c ",5); printf(":"); for(i = j*wii;i<(j+1)*wii;i++) { if (b[i]<=39&&b[i]>26) { m++; b[i] = b[i]-26; if (b[i]==11) printf("J "); else if (b[i]==12) printf("Q "); else if (b[i]==13) printf("K "); else printf("%d ",b[i]); } } //黑桃 printf("\n黑桃 %c ",6); printf(":"); for(i = j*wii;i<(j+1)*wii;i++) { if (b[i]<=52&&b[i]>39) { m++; b[i] = b[i]-39; if (b[i]==11) printf("J "); else if (b[i]==12) printf("Q "); else if (b[i]==13) printf("K "); else printf("%d ",b[i]); } } //大小王 printf("\n大小王 A or a :"); for(i = j*wii;i<=(j+1)*wii;i++) { if (b[i]==53) { m++; printf("A "); } if (b[i]==54) { m++; printf("a "); } } printf("\n總共:%d張牌!!!",m); } }

熱點內容
安卓解壓rar提示錯誤 發布:2025-10-06 07:31:49 瀏覽:819
139文件夾 發布:2025-10-06 07:12:42 瀏覽:45
資料庫在中的應用 發布:2025-10-06 07:08:01 瀏覽:279
android查看網卡 發布:2025-10-06 07:00:49 瀏覽:83
貼吧簽到腳本 發布:2025-10-06 07:00:41 瀏覽:926
訪問一個模擬 發布:2025-10-06 06:42:31 瀏覽:756
psv存儲卡有什麼用 發布:2025-10-06 06:36:02 瀏覽:879
linuxnginx免編譯 發布:2025-10-06 06:35:17 瀏覽:488
編譯程序屬於系統軟體嗎 發布:2025-10-06 06:22:14 瀏覽:89
騰訊雲伺服器建網站 發布:2025-10-06 05:47:51 瀏覽:469