C语言编程——发牌洗牌模拟,求帮助


一、C语言编程——发牌洗牌模拟,求帮助

#include

#include

#include

#include

#define SUIT 52

#define HALF 26

#define COLOR ((char)13)

// 扑克牌的编码是一组13进制的数据,从0编到51

// 函数tell用于解释编码的内容

int tell(char card, char * description)

{

char i=0, j=0;

char *suit[]={"Spades","Hearts","Clubs","Diamonds"};

char *face[] = {"A","2","3","4","5","6","7","8","9",

"10","Jack","Queen","King"};

//题干比较奇怪,要求扣8张底牌,但是含大小王。正确的规则应该是不含大小王的情况下扣8张牌,每人11张牌就对了

//否则应该扣10张牌或者6张牌,否则每人发牌得到的牌数不相同(不是4的倍数)

//如需要,可自行定义JB=52,JA=53,SUIT=54,HALF=27即可。

//if (card > JB || card < 0 || !description) return 0;

//if (card == JB) { sprintf(description, "Big Joker"); return 1; }

//if (card == JA) { sprintf(description, "Little Joker"); return 1; }

i = card / COLOR; j = card % COLOR;

sprintf(description, "%s %s", suit[i], face[j]);

return 1;

}

//初始化牌,形成一个顺序牌

int init(char *poker)

{

char i = 0;

if (!poker) return 0;

for (i=0; i

srand((unsigned)time(0));

return 1;

}

//洗牌,将当前牌分成上下两组,然后交叉,有右手先和左手先两种可能,这一个是左手先交换法

int wash_left_hand(char *poker)

{

char i=0, j=0, k=0;

char boker[SUIT];

if(!poker) return 0;

for(i=0; i

j = i * 2; //上半组

boker[j] = poker[i];

k = i + HALF; //下半组

boker[j+1]=poker[k];

}//next i

memcpy(poker, boker, SUIT);

return 1;

}

//洗牌,将当前牌分成上下两组,然后交叉,有右手先和左手先两种可能,这一个是右手先交换法

//注意左右手先后顺序的区别在于变量j的奇偶变化

int wash_right_hand(char *poker)

{

char i=0, j=0, k=0;

char boker[SUIT];

if(!poker) return 0;

for(i=0; i

j = i * 2; //上半组

boker[j+1] = poker[i];

k = i + HALF; //下半组

boker[j]=poker[k];

}//next i

memcpy(poker, boker, SUIT);

return 1;

}

//在当前牌的基础上洗一次牌,主要用随机函数的奇偶性确定用左手洗还是右手洗

int wash_once(char *poker)

{

return rand()%2?wash_left_hand(poker):wash_right_hand(poker);

}

//在当前牌的基础上随机洗若干次牌,至少8次,最多18次

int wash_full(char *poker)

{

int i = 0, j = 0, k = 0;

i = rand() % 10 + 8;

printf("\nTry to wash %d times.\n", i);

for (j=0; j < i ; j++) k+=wash_once(poker);

return k;

}

int main(void)

{

char choice = 0, i = 0, j = 0; char poker[SUIT], card[16];

init(poker);

do {

printf("\n\tWelcome to My Poker Game!\n");

printf("\t0-Wash.\n");

printf("\t1-Show A.\n");

printf("\t2-Show B.\n");

printf("\t3-Show C.\n");

printf("\t4-Show D.\n");

printf("\tany other number-quit.\n");

printf("Your Choice?");

scanf("%d", &choice);

if(choice <0 || choice >4) break;

if(choice ==0) {

wash_full(poker);

continue;

}//end if

i = (choice - 1) * 11; //注意用11张牌,扣8张底牌

printf("His card is...\n");

for(j = i; j

tell(poker[j], card);

printf("%s\t", card);

}//next

printf("\n");

}while(1);

return 0;

}

二、设计一个物流实训室的物流设施与设备的配置方?

以现在的国内物流公司为例,可以布置一个模拟营业厅; 需要的设施及设备有:柜台、电脑、打印机、传真机、电话机、POS机、托运书、验钞机、饮水机、凳子(员工凳、客户凳两种)、水杯、包装工具(如:封口胶、纸箱、纤袋、纤条、打包机、电锯、锤子、钉子、木条)、托盘、叉车等; 可以开展的项目有:模拟客户接待、模拟称重量方、模拟给货物加包装、模拟制单、模拟收款、模拟电话营销、模拟店面营销、模拟上门拜访、模拟网络营销、模拟客户异常处理、模拟标签制作与粘贴、模拟货物码放、模拟货物搬运等等!

三、c语言课程设计模拟pos机

去csdn找下,或者程序员联合开发网,csdn的博客也可以找,下载那可以找相关资料找找

www.csdn.net

www.pudn.com

希望对你有帮助

@@四、C语言课程设计

C语言程序:

#include

#define N 100

void main()

{

int a[N][N];

int i, j, k;

int n;

printf("n : ");

scanf("%d", &n);

for(i=0; i=1; j--)

{

if(k > a[i][j] && k % a[i][j] == 0)

{

a[i+1][++a[i+1][0]] = k;

i = 0;

break;

}

}

}

}

for(i=0; i

本文来自用户投稿,不代表POS机办理网立场,如若转载,请注明出处:https://tlx668.com/poszx/1027.html

打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023年06月30日
下一篇 2023年06月30日

相关推荐

  • 支付宝自动发pos机《支付宝自动发pos机安全吗》

    一、pos机是发电机吗POS机是一种收款终端,用于实现信用卡、借记卡等银行卡的联机消费。它不是一种发电机。 二、pos机易宝支付Pos机易宝支付是一种通过易宝支付平台进行交易的POS机。易宝支付是易宝公司与金融机构合作,为用户提供的一种第三

    2024-03-01 10:00:49
    68 0
  • pos机的妙用{pos机干啥用}

    一、pos机商户代码是什么POS机商户代码是由收单行代码、地区码、行业代码和序列号组成的15位数字。 例如,中国银联商户号(15位)= 收单行代码(3位)+ 地区码(市级4位)+ 行业代码(4位)+ 序列号(4位)。二、pos机 教育PO

    2024-02-25 14:00:09
    43 0
  • 电脑启动了,但是屏幕显示英文怎么办 《电脑启动显示英文字母是什么原因》

    笔记本电脑开机显示屏上全是英文字母,开不了系统,要怎么解决?重新启动电脑,尝试进入安全模式重启,可以用于排除一些简单的硬件问题。 通过WinPE启动盘,查看计算机是否存在系统文件损坏的问题,并进行修复和还原。重启电脑:按住电源键长按十秒钟,

    2023-12-24 18:01:06
    84 0
  • 为什么有些iPhone的微信显示wechat有些显示微信

    跟手机国行版,美版是没有关系的。这是使用者更改了系统语言为英文,所以软件会自适应为英文,微信就是wechat。也可以在微信的通用设置里把“多语言”选项改成英文。一、苹果6微信删了后在下载一直出现WeChat怎么办?wechat是微信的英文名

    2023-12-24 11:00:28
    101 0
  • 马来西亚境外机POS

    云闪付刷境外消费需要手续费吗?不需要。云闪付APP用户已可在15个国家和地区扫码支付,尤其在东南亚地区的支付体验不断提升。其中,泰国有1600多家商家支持银联二维码支付,包括知名免税店King Power、知名连锁百货Central;新加坡

    2023-12-21 20:01:18
    82 0
  • 智能pos机怎么调中文

    智能POS机调中文的方法如下:1. 进入设置菜单。2. 选择语言选项。3. 选择中文语言。4. POS机会提示需要重新启动才能生效。

    2023-12-20 19:00:36
    64 0

发表回复

8206

评论列表(0条)

    暂无评论