码迷,mamicode.com
首页 > 其他好文 > 详细

第五章作题业

时间:2016-04-06 00:30:51      阅读:337      评论:0      收藏:0      [点我收藏+]

标签:

5.5

下面将给出两个人玩的扑克牌游戏的一种玩法,试设计一个模拟程序,它的基本功能是:

(一)(1)发两手牌(利用随机数产生器)。

(二)(2)确定赢者和赢牌的类型。

 扑克牌游戏规则如下:

1)有两个人玩分别为AB

2)一副扑克牌有52张牌,4种花色(黑桃、红桃、梅花、方块),每种花色的牌的点数按升序排列有2,    3,4.........10J,Q,K,A13种。

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);

 }

 

第五章作题业

标签:

原文地址:http://www.cnblogs.com/ichengcheng/p/5357528.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!