方法一
计算机解决实际问题常用数据模拟和构造的方法。借助于数组,数据模拟和构造可以很方便地实现。
随机产生扑克牌的思路:
1、定义字符数组,构造一副顺序存放的新牌,包括花色与牌值。
2、根据随机数把新牌打乱。
3、按数组分发新牌(根据规则显示)。
代码如下:
#include
#includevoid main(void)
{
int i,j;
char ch1,ch2;
char s[104];/* 存放一副牌 */
char a[]="hdsc";/* 定义花色 *//* 定义牌值 */
char b[14] = "akqj1098765432";/* 生成一副新牌 */
for(i=0;i<4;i++)
{
for(j=0;j<13;j++)
{
s[2*j+26*i] = a[i];
s[2*j+26*i+1] = b[j];
}
}randomize(); /* 初始化随机数发生器 */
for(i=0;i<52;i++)
{
j = random(52-i);
ch1 = s[2*j]; /* 与最后一张牌交换花色 */
s[2*j] = s[102-2*i];
s[102-2*i] = ch1;
ch2 = s[2*j+1]; /* 与最后一张牌交换牌值 */
s[2*j+1] = s[103-2*i];
s[103-2*i] = ch2;
}printf("nn");
for(i=0,j=0;i<104;i+=2,j++) /* 显示大乱后新牌 */
{
if(!(j%13))
{
printf("nnn"); /* 13张牌为一组 */
}
printf(" %c%c",s[i],s[i+1]);
}
getch();
}
方法二
#include
#include
#include
#include// using namespace std;
int main()
{
const char *c = "0123456789abcdefghijklmnopqrstuvwxyz";srand(static_cast
(time(null)));
std::cout << "the random char array is:";
for(int i = 0; i < 5; ++i)
{
std::cout << std::endl;
int index = 0 ;
for(int j = 0; j < 5; ++j)
{
index = rand() % strlen(c);
std::cout << c[index ]
<< c[index]
<< " ";
}
}
std::cout << std::endl;
return 0;
}
运行效果如下:
the random char array is:
00 qq 88 ii zz
qq bb oo 00 yy
rr yy tt ww ll
ss rr aa bb oo
11 yy tt 33 uu
敢达决战官方正版 安卓版v6.7.9
下载敢达决战 安卓版v6.7.9
下载像素火影骨架佐助 (Perseverance Fire Shadow)手机版v1.16
下载要塞英雄 安卓版v33.20.0-39082670-Android
下载梦想城镇vivo最新版本 安卓版v12.0.1
梦想城镇vivo版是这款卡通风模拟经营类手游的渠道服版本,玩
怦然心动的瞬间 安卓版v1.0
怦然心动的瞬间是一款真人向的恋爱互动游戏,在游戏中玩家将扮演
曼尼汉堡店游戏 安卓版v1.0.3
曼尼汉堡店是一款非常好玩的精品恐怖类型冒险游戏,在这款游戏中
现代总统模拟器去广告版 安卓版v1.0.46
现代总统模拟器是一款休闲养成类游戏,可能对于不少的玩家来说都
现代总统模拟器付费完整版 安卓版v1.0.46
现代总统模拟器高级版在商店是需要付费的,相对于普通版本,高级