第五章作题业
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第五章作题业相关的知识,希望对你有一定的参考价值。
5.5
下面将给出两个人玩的扑克牌游戏的一种玩法,试设计一个模拟程序,它的基本功能是:
(一)(1)发两手牌(利用随机数产生器)。
(二)(2)确定赢者和赢牌的类型。
扑克牌游戏规则如下:
(1)有两个人玩分别为A和B。
(2)一副扑克牌有52张牌,4种花色(黑桃、红桃、梅花、方块),每种花色的牌的点数按升序排列有2, 3,4,.........,10,J,Q,K,A等13种。
(3)给每个人发三张牌,牌面向上,赢者立即可以确定。
(4)最高等级的一手牌成为同花,即3张牌均为同一种花色,最大的同花是同一种花色的Q,K,A。
(5)第二等级的牌称为顺子,即点数连续的3张牌,最大的顺子是花色不同的Q,K,A
(6)第三等级的牌是同点,即点数相同的三张牌,最大的同点是AAA。
(7)第四等级的牌是对子,即3张牌中有两张点数相同,最大的对子是A,A,K。
(8)第五等级的牌是杂牌,即除去上列4等之外的任何一手牌,最大的杂牌是不同花色的A.K,J。
(9)若两个人的牌类型不同,则等级高者胜;若等级相同,则点数高者胜;若点数也相同,则为平局。
程序如下:
#include "stdio.h"
int rabl(int a,int b,int *r)
{
int l,k,m,i,p;
k=b-a+1;
l=2;
while(i<=1)
{
k=k+k+k+k+k;
k=k%m;
l=k/4+a;
if(l<=b)
{
p=l;i=i+1;
}
}
*r=k;
return(p);
}
int max(int T[10][10])
{
int t=0;
if(T[0][0]>T[1][0])
t=T[0][0];
else t=T[1][0];
if(t<T[2][0])
t=T[2][0];
return t;
}
int E1(int T[10][10])
{
if(T[0][1]==T[1][1]&&T[1][1]==T[2][1])
return 1;
else
return 0;
}
int E2(int T[10][10])
{
int q=0;
if(((max(T[10][10])-1)
==T[0][0]||(max(T[10][10])-1)
==T[1][0]||(max(T[10][10])-1)
==T[2][0])&&((max(T[10][10])-2)
==T[0][0]||(max(T[10][10])-2)
==T[1][0]||(max(T[10][10])-2)
==T[2][0]))
if(q=max(T[][10]))
return 1;
else
return 0;
}
int E3(int T[10][10])
{
if(T[0][0]==T[1][0]==T[2][0])
return 1;
else
return 0;
}
int E4(int T[10][10])
{
if(T[0][0]==T[1][0]&&T[0][0]!=T[2][0])
return 1;
else if(T[0][0]==T[2][0]&&T[0][0]!=T[1][0])
return 1;
else if(T[1][0]==T[2][0]&&T[1][0]!=T[0][0])
return 1;
else
return 0;
}
void main()
{
int times=0,e1=0,e2=0,e3=0,e4=0,e5=0;
int A[10][10],B[10][10];
int r1=2,r2=3;
printf("请输入游戏的次数\n");
scanf("%d",×);
for(int j=0;j<times;j++)
{
for(int i=0;i<3;i++)
{
A[i][0]=rabl(1,13,&r1);
A[i][1]=rabl(14,17,&r2);
B[i][0]=rabl(1,13,&r1);
B[i][1]=rabl(14,17,&r2);
}
if(E1(A[][10])>E1(B[][10]))
{
e1++;
printf("A赢,同花顺\n");
}
else if(E1(A[][10])<E1(B[][10]))
{
e1++;
printf("B赢,同花顺\n");
}
else if(E1(A[][10])==E1(B[][10])&&E1(B[][10])==1)
{
e1++;
if(max(A[][10])>max(B[][10]))
printf("A赢,同花顺\n");
else
printf("B赢,同花顺\n");
}
else if(E2(A[][10])>E2(B[][10]))
{
e2++;
printf("A赢,顺子\n");
}
else if(E2(A[][10])<E2(B[][10]))
{
e2++;
printf("B赢,顺子\n");
}
else if(E2(A[][10])==E2(B[][10])&&E2(B[][10])==1)
{
e2++;
if(max(A[][10])>max(B[][10]))
printf("A赢,顺子\n");
else
printf("B赢,顺子\n"); }
else if(E3(A[][10])>E3(B[][10]))
{
e3++;
printf("A赢,同点\n");
}
else if(E3(A[][10])<E3(B[][10]))
{
e3++;
printf("B赢,同点\n");
}
else if(E3(A[][10])==E3(B[][10])&&E3(B[][10])==1)
{
e3++;
if(max(A[][10])>max(B[][10]))
printf("A赢,同点\n");
else
printf("B赢,同点\n");
}
else if(E4(A[][10])>E4(B[][10]))
{
e4++;
printf("A赢,对子\n");
}
else if(E4(A[][10])>E4(B[][10]))
{
e4++;
printf("B赢,对子\n");
}
else if(E4(A[][10])==E4(B[][10])&&E4(B[][10])==1)
{
e4++;
if(max(A[][10])>max(B[][10]))
printf("A赢,对子\n");
else
printf("B赢,对子\n");
}
else
{
if(max(A[][10])>max(B[][10]))
printf("A赢,杂牌\n");
else
printf("B赢,杂牌\n");
}
}
printf("同花顺赢牌概率为%d\n,
顺子赢牌概率 为%d\n,
同点赢牌概率 为%d\n,
对子赢牌概率 为%d\n,
杂牌赢牌概率 为%d\n"
,e1/times,e2/times,e3/times,e4/times,e5/times);
}
以上是关于第五章作题业的主要内容,如果未能解决你的问题,请参考以下文章