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

一付扑克牌52张共4种花色,用户可选择“1---发牌”将这52张牌随机发成4敦;或选择“0----退出”退出程序。提示:用一个具有52个元素的数组(如charp[52][... 一付扑克牌52张共4种花色,用户可选择“1---发牌”将这52张牌随机发成4敦;或选择“0----退出”退出程序。
提示:
用一个具有52个元素的数组(如char p[52][5])存放这52张牌的内容,如P_i表示黑桃、H_i表示红桃、C_i表示梅花、D-i表示方块;程序中可以首先初始化该数组,然后显示菜单等待用户选择输入,用户选择“发牌”,程序调用“发牌”函数;在发牌函数中,可使用C 中的产生随机数的函数(参看rand(),srand(),random()等函数的使用说明)一个随机数m,选取一张牌{p[m]},将其与最前面的牌交换位置,即将选取的牌放在最前面;然后对数组p余下的牌重复选取操作,直到所有牌均重排列;最后按13行*4列输出发牌结果
展开
 我来答
风骚的可乐
2007-12-20 · TA获得超过1550个赞
知道小有建树答主
回答量:412
采纳率:0%
帮助的人:608万
展开全部
发牌原程序见我的空间(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=0; i1<total; i1++ )
{
iArr[i1]=rand()%total;
if( i1==0 ) continue;
do {
tag = 0;
for( j=0; j<i1; j++ )
if( iArr[j] == iArr[i1] )
{
iArr[i1]=rand()%total;
tag = 1;
}
} while( tag==1 );
}

for( i1=0; i1<total; i1++ )
{
printf("%s%s\t",pok_C[iArr[i1]%4],pok_N[iArr[i1]%13]);
if(i1%4==3) printf("\n");
}

free(iArr);

}
杭州一知智能科技有限公司
2022-03-17 广告
电话机器人主要就是用来模拟人工通话的一组程序,一般由,CRM系统,语义识别,转换文字,话术体系,这是软的部分,再加上底层软交换和通信模块一起,合并起来就是一套完整的电话机器人系统。电话机器人可以代替真人进行电话工作的,像是电话营销、售后回访... 点击进入详情页
本回答由杭州一知智能科技有限公司提供
百度网友82b03a4
2007-12-20 · TA获得超过1420个赞
知道小有建树答主
回答量:378
采纳率:0%
帮助的人:407万
展开全部
#include <stdio.h>
#include <vector>
#include <algorithm>

using namespace std;

void DealCards();

int main()
{
// step 1: input state.
printf("please input 1 for deal cards, 0---exit.");
int i = 0;
scanf("%i", &i);
printf("\n");

if (i == 0)
{
return 0;
}
else
{
// step 2: deal cards
DealCards();

}
return 0;
}

void DealCards()
{
// step 1: initial cards
char p[52][5];
vector<int> vip;
int i, j;
for (i = 1; i <= 13; i++)
{
for (j = 0; j < 4; j++)
{
switch (j)
{
case 0:
sprintf(p[j * 13 + i - 1], "%s_%2i", "P", i);
break;
case 1:
sprintf(p[j * 13 + i - 1], "%s_%2i", "H", i);
break;
case 2:
sprintf(p[j * 13 + i - 1], "%s_%2i", "C", i);
break;
case 3:
sprintf(p[j * 13 + i - 1], "%s_%2i", "D", i);
break;
default:
break;
}
}
}

// step 2: generate random number
for (i = 0; i < 52; i++)
{
vip.push_back(i);
}
random_shuffle(vip.begin(), vip.end());

// step 3: output cards
for (i = 1; i <= 13; i++)
{
for (j = 0; j < 4; j++)
{
printf(p[vip[j * 13 + i - 1]]);
printf(" ");
}
printf("\n");
}

}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
?>

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式