如何用c语言编写纸牌发牌程序

如何用c语言编写纸牌发牌程序,第1张

发牌原程序见我的空间(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)

}

#include<stdio.h>

void main()

{

int i,j,flag[52]

for(i=0i<52i++)//52张牌所有状态均为1,即均咐并为正面

flag[i]=1

for(j=2j<=52j++) //对52张牌(序号放在i里)对2,3...52(放在j里)按i+1是否是j的倍数进行状态翻转。

for(i=0i<52i++)

if((i+1)%j==0)

flag[i]=flag[i]?0:1

printf("positive card are:")

for(i=0i<52i++)//对翻转处理后状悄斗态启简磨仍然是正面的(flag保持为1)的将其编号输出。

{

if(flag[i])

printf("%d ",i+1)

}

printf("\n")

}

帮你编了一个,加了解释,看看吧


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

原文地址: http://outofmemory.cn/yw/12435673.html

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

发表评论

登录后才能评论

评论列表(0条)

保存