如何用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列输出发牌结果 展开
提示:
用一个具有52个元素的数组(如char p[52][5])存放这52张牌的内容,如P_i表示黑桃、H_i表示红桃、C_i表示梅花、D-i表示方块;程序中可以首先初始化该数组,然后显示菜单等待用户选择输入,用户选择“发牌”,程序调用“发牌”函数;在发牌函数中,可使用C 中的产生随机数的函数(参看rand(),srand(),random()等函数的使用说明)一个随机数m,选取一张牌{p[m]},将其与最前面的牌交换位置,即将选取的牌放在最前面;然后对数组p余下的牌重复选取操作,直到所有牌均重排列;最后按13行*4列输出发牌结果 展开
展开全部
发牌原程序见我的空间(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);
}
以下为改过的版本,不包含大小王(即总数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 广告
2022-03-17 广告
电话机器人主要就是用来模拟人工通话的一组程序,一般由,CRM系统,语义识别,转换文字,话术体系,这是软的部分,再加上底层软交换和通信模块一起,合并起来就是一套完整的电话机器人系统。电话机器人可以代替真人进行电话工作的,像是电话营销、售后回访...
点击进入详情页
本回答由杭州一知智能科技有限公司提供
展开全部
#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");
}
}
#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");
}
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询