以下为改过的版本,不包含大小王(即总数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")
}
帮你编了一个,加了解释,看看吧
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)