c语言纸牌发牌程序源代码(附注释)

c语言纸牌发牌程序源代码(附注释),第1张

其实发牌问题里有个随机的问题,就是模拟洗牌的问题,我来尝试下这个程序吧(每个花色的代码分别是:红桃 \x3,方块\x4,梅花\x5,黑桃\x6

#include <stdio.h>

#include <time.h>

char hua_se[4]={'\x3','\x4','\x5','\x6'} //定义一个数组来存放花色

char *dight[14]={"Ace","two","three","four","中毁搜five","six","seven","eight","nine","ten","jack","queen","king"}/余悔/定义一个指针型的数组来存放数字

int fa_pai[4][13]={0}//定义一个二维数组来发牌

void move(int fa_pai[4][13])

void deal(int fa_pai[4][13],char huase[4],char *dight[4][13])

int main(void){srand(time(NULL))

move(fa_pai)

deal(hua_se,dight,fa_pai)

printf("你是否卖历想结束发牌?Y/N")

getch()return 0}void move(int fa_pai[4][13]){int r,card,row,column

for(card=1card<=52card++)

{

r=rand()

row=r%4

r=rand()

column=r%13

while(fa_pai[4][13]!=0)

{

r=rand()

row=r%4

r=rand()

column=r%13

}

fa_pai[row][column]=card

}

}

void deal(int fapai[4][13],char hua_se[3],char *dight[13])

{

char cint card,row,column

for(card=1card<=52card++)

{

for(row=0row<=3row++)

{

for(column=0column<=12column++)

{

if(fapai[row][column]==card)

{

if(card%3=0)c='\n'

elsec='\t'

printf("%5sof%-8s%c",hua_se[row],dight[column],c)

}

}

}

}

}

发牌原程序见我的空间(http://hi.baidu.com/crazycola/blog/item/52402bd4b3f68705a08bb746.html),可选是否包含大小王,可选发牌列数。

以下为改过的版本,不包含大小王(即总数52张),丛誉只能发4堆。

另外附加了用户菜单,原程猜洞序中不含菜单部分。

代码如下:

---------------------------------------

#include <stdlib.h>

#include <time.h>

#include <stdio.h>

int menu()

{

int choice

printf("渗兆段1 发牌/0 退出:")

scanf("%d",&choice)

return choice

}

void main( void )

{

int i1, j, total

int *iArr

int tag = 0

char* pok_C[] = { "黑桃", "红桃", "梅花", "方块" }

char* pok_N[] = { "A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K" }

if(!menu()) exit(0)

total = 52

srand( (unsigned)time( NULL ) )

iArr = (int*)malloc(total*sizeof(int))

for( i1=0i1<totali1++ )

{

iArr[i1]=rand()%total

if( i1==0 ) continue

do {

tag = 0

for( j=0j<i1j++ )

if( iArr[j] == iArr[i1] )

{

iArr[i1]=rand()%total

tag = 1

}

} while( tag==1 )

}

for( i1=0i1<totali1++ )

{

printf("%s%s\t",pok_C[iArr[i1]%4],pok_N[iArr[i1]%13])

if(i1%4==3) printf("\n")

}

free(iArr)

}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12249702.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-22
下一篇 2023-05-22

发表评论

登录后才能评论

评论列表(0条)

保存