S1E31洗牌发牌
#include <stdio.h>#include <stdlib.h>
#include <time.h>
int str;//用于存放随机数
//char str1 = {0};
const char *data[] = {"黑A","黑2","黑3","黑4","黑5","黑6","黑7","黑8","黑9","黑10",
"红A","红2","红3","红4","红5","红6","红7","红8","红9","红10",
"梅A","梅2","梅3","梅4","梅5","梅6","梅7","梅8","梅9","梅10",
"方A","方2","方3","方4","方5","方6","方7","方8","方9","方10",
"黑J","黑Q","黑K","红J","红Q","红K","梅J","梅Q","梅K","方J","方Q","方K",
"大王","小王"};
//洗牌
int Xipai()
{
int i, j;
time_t t;
srand((unsigned)time(&t));
//生成1-54的伪随机数
for (i = 0;i < 52;i++)
{
str = rand() % 54 + 1;
//printf("%d ",str);
}
printf("\n");
}
//发牌 一一对应
char Fapai()
{
int i, j, k = 0;
char *p;
//这里我想将洗牌后的地址对应的指针存入一个指针数组中,使数组中的指针指向洗牌后在data中对应的牌
for(i = 0;i < 52;i++)
{
*p++ =data + str;
}
while (*p++ != '\0')
{
printf("%s ", *p);
}
}
我想将洗牌后的地址对应的指针存入一个指针数组中,使数组中的指针指向洗牌后在data中对应的牌,请问该怎么写? 没看懂你的意图,你是想让本次发牌受前一次发牌的影响? jackz007 发表于 2021-10-18 17:21
没看懂你的意图,你是想让本次发牌受前一次发牌的影响?
之前我想的是,3个人一人14张牌,那就产生3X14=52个随机数,这52个随机数对应54张牌里面的52张,将这52个随机数作为存放54张牌数组的索引号,将随机数对应牌的地址通过指针存放在一个数组中,打印这52个指针指向的值就相当于洗牌了(当时没考虑到52个随机数可能会有重复) 雨中漫步~ 发表于 2021-10-18 17:34
之前我想的是,3个人一人14张牌,那就产生3X14=52个随机数,这52个随机数对应54张牌里面的52张,将这52个 ...
void Xipai(int d[])
{
int i , j , k ;
time_tt ;
srand((unsigned)time(& t)) ;
for(i = 0 ; i < 52 ; i ++) d = 0 ;
d = rand() % 52 + 1 ;
for(i = 1 ; i < 52 ;) {
k = rand() % 52 + 1 ;
for(j = 0 ; j < i ; j ++) if(d == k) break ;
if(j == i) d = k ;
}
}
调用这个函数,每次调用,数组 d 中都会有 52 个互相不重复,数值为 1 ~ 52 的不同数值。 #include <stdio.h>
#include <stdlib.h>
#include <time.h>
const char * data[] = {"黑A","黑2","黑3","黑4","黑5","黑6","黑7","黑8","黑9","黑10","黑J","黑Q","黑K" ,
"红A","红2","红3","红4","红5","红6","红7","红8","红9","红10" ,"红J","红Q","红K" ,
"梅A","梅2","梅3","梅4","梅5","梅6","梅7","梅8","梅9","梅10","梅J","梅Q","梅K",
"方A","方2","方3","方4","方5","方6","方7","方8","方9","方10","方J","方Q","方K",
"大王","小王"} ;
void Xipai(int d[])
{
int i , j , k ;
time_tt ;
srand((unsigned)time(& t)) ;
for(i = 0 ; i < 54 ; i ++) d = 0 ;
d = rand() % 54 + 1 ;
for(i = 1 ; i < 54 ;) {
k = rand() % 54 + 1 ;
for(j = 0 ; j < i ; j ++) if(d == k) break ;
if(j == i) d = k ;
}
}
int main(void)
{
int d = {0} , i ;
Xipai(d) ;
for(i = 0 ; i < 54 ; i ++) {
if(i) printf(",") ;
printf("%s" , data - 1]) ;
}
printf("\n") ;
} jackz007 发表于 2021-10-18 18:16
我何时才能如此优秀,感谢{:5_110:}
页:
[1]