拖拉机判定C语言程序
来源:互联网 发布:年度工作总结 知乎 编辑:程序博客网 时间:2024/04/27 06:57
#include<stdbool.h>
#include<stdio.h>
#include<stdlib.h>
#include<stdio.h>
#include<stdlib.h>
#define NUM_RANKS 13
#define NUM_SUITS 4
#define NUM_CARDS 5
bool straight, flush, four, three;
int pairs;
#define NUM_SUITS 4
#define NUM_CARDS 5
bool straight, flush, four, three;
int pairs;
void read_cards(int num_in_rank[],int num_in_suit[]);
void analyze_hand(int num_in_rank[],int num_in_suit[]);
void print_result(void);
void analyze_hand(int num_in_rank[],int num_in_suit[]);
void print_result(void);
int main(void)
{
int num_in_rank[NUM_RANKS];
int num_in_suit[NUM_SUITS];
{
int num_in_rank[NUM_RANKS];
int num_in_suit[NUM_SUITS];
for(;;){
read_cards(num_in_rank,num_in_suit);
analyze_hand(num_in_rank,num_in_suit);
print_result();
}
}
analyze_hand(num_in_rank,num_in_suit);
print_result();
}
}
void read_cards(int num_in_rank[],int num_in_suit[])
{
bool card_exists[NUM_RANKS][NUM_SUITS];
char ch, rank_ch, suit_ch;
int rank, suit;
bool bad_card;
int cards_read=0;
{
bool card_exists[NUM_RANKS][NUM_SUITS];
char ch, rank_ch, suit_ch;
int rank, suit;
bool bad_card;
int cards_read=0;
for(rank=0;rank<NUM_RANKS;rank++)
{
num_in_rank[rank]=0;
for(suit=0;suit<NUM_SUITS;suit++)
{
card_exists[rank][suit]=false;
}
}
for(suit=0;suit<NUM_SUITS;suit++)
{
num_in_suit[suit]=0;
}
while (cards_read<NUM_CARDS)
{
bad_card=false;
{
num_in_rank[rank]=0;
for(suit=0;suit<NUM_SUITS;suit++)
{
card_exists[rank][suit]=false;
}
}
for(suit=0;suit<NUM_SUITS;suit++)
{
num_in_suit[suit]=0;
}
while (cards_read<NUM_CARDS)
{
bad_card=false;
printf("Enter a card: ");
rank_ch=getchar();
switch(rank_ch)
{
case'0': exit(EXIT_SUCCESS);
case'2': rank=0;break;
case'3': rank=1;break;
case'4': rank=2;break;
case'5': rank=3;break;
case'6': rank=4;break;
case'7': rank=5;break;
case'8': rank=6;break;
case'9': rank=7;break;
case't':case 'T': rank=8;break;
case'j':case 'J': rank=9;break;
case'q':case 'Q': rank=10;break;
case'k':case 'K': rank=11;break;
case'a':case 'A': rank=12;break;
default: bad_card=true;
}
{
case'0': exit(EXIT_SUCCESS);
case'2': rank=0;break;
case'3': rank=1;break;
case'4': rank=2;break;
case'5': rank=3;break;
case'6': rank=4;break;
case'7': rank=5;break;
case'8': rank=6;break;
case'9': rank=7;break;
case't':case 'T': rank=8;break;
case'j':case 'J': rank=9;break;
case'q':case 'Q': rank=10;break;
case'k':case 'K': rank=11;break;
case'a':case 'A': rank=12;break;
default: bad_card=true;
}
suit_ch=getchar();
switch (suit_ch)
{
case 'c':case 'C':suit=0;break;
case 'd':case 'D':suit=1;break;
case 'h':case 'H':suit=2;break;
case 's':case 'S':suit=3;break;
default: bad_card=true;
}
switch (suit_ch)
{
case 'c':case 'C':suit=0;break;
case 'd':case 'D':suit=1;break;
case 'h':case 'H':suit=2;break;
case 's':case 'S':suit=3;break;
default: bad_card=true;
}
while((ch=getchar()) != '\n')
if (ch !=' ')
bad_card=true;
if (ch !=' ')
bad_card=true;
if(bad_card)
printf("Bad card; ignore.\n");
else if (card_exists[rank][suit])
printf("Duplicate card; ignore.\n");
else
{
num_in_rank[rank]++;
num_in_suit[suit]++;
card_exists[rank][suit]=true;
cards_read++;
}
}
}
void analyze_hand(int num_in_rank[],int num_in_suit[])
{
int num_consec=0;
int rank, suit;
printf("Bad card; ignore.\n");
else if (card_exists[rank][suit])
printf("Duplicate card; ignore.\n");
else
{
num_in_rank[rank]++;
num_in_suit[suit]++;
card_exists[rank][suit]=true;
cards_read++;
}
}
}
void analyze_hand(int num_in_rank[],int num_in_suit[])
{
int num_consec=0;
int rank, suit;
straight=false;
flush=false;
four=false;
pairs=0;
flush=false;
four=false;
pairs=0;
for(suit=0;suit<NUM_SUITS;suit++)
if(num_in_suit[suit]==NUM_CARDS)
flush=true;
if(num_in_suit[suit]==NUM_CARDS)
flush=true;
rank=0;
while(num_in_rank[rank]==0)rank++;
for(;rank<NUM_RANKS&&num_in_rank[rank]>0;rank++)
num_consec++;
if (num_consec==NUM_CARDS)
{
straight=true;
return;
}
while(num_in_rank[rank]==0)rank++;
for(;rank<NUM_RANKS&&num_in_rank[rank]>0;rank++)
num_consec++;
if (num_consec==NUM_CARDS)
{
straight=true;
return;
}
for(rank=0;rank<NUM_RANKS;rank++)
{
if (num_in_rank[rank]==4)
four=true;
if (num_in_rank[rank]==3)
three=true;
if (num_in_rank[rank]==2)
pairs++;
}
{
if (num_in_rank[rank]==4)
four=true;
if (num_in_rank[rank]==3)
three=true;
if (num_in_rank[rank]==2)
pairs++;
}
}
void print_result(void)
{
if (straight && flush)
printf("Straight flush");
else if(four)
printf("Four of a kind");
else if(three && pairs==1)
printf("Full house");
else if(flush)
printf("Flush");
else if(straight)
printf("Straight");
else if(three)
printf("Three of a kind");
else if(pairs==2)
printf("Two pairs");
else if(pairs==1)
printf("Pair");
else
printf("High card");
{
if (straight && flush)
printf("Straight flush");
else if(four)
printf("Four of a kind");
else if(three && pairs==1)
printf("Full house");
else if(flush)
printf("Flush");
else if(straight)
printf("Straight");
else if(three)
printf("Three of a kind");
else if(pairs==2)
printf("Two pairs");
else if(pairs==1)
printf("Pair");
else
printf("High card");
printf("\n\n");
}
}
0 0
- 拖拉机判定C语言程序
- C语言简单程序判定大小端
- 拖拉机小程序
- C语言大小端判定
- 二分图的判定(C语言)
- Solovay-Strassen素性判定----C语言
- MFC写的单人拖拉机游戏程序
- C语言判定是整数还是浮点数
- C语言 - 水仙花~十全十美数全部都可以判定
- 【C语言】五子棋胜负判定算法及源代码
- 第十周—C语言 回文数的判定
- c语言图形程序
- C语言-预处理程序
- C语言-预处理程序
- C语言-预处理程序
- C语言-预处理程序
- C语言小程序
- C语言实例程序
- Java基础学习总结——equals方法
- (Java)面向对象编程六大基本原则
- c语言
- 使用百度地图定位当前位置并获取附近poi -- Android学习之路
- 14实践项目1.3
- 拖拉机判定C语言程序
- Eclipse去除 js 验证错误
- 强大的SpannableStringBuilder并封装
- 关于C++模板类
- PAT A1055
- 博客已经迁移
- Mybatis的缓存
- PAT A1058
- scala中的偏应用函数(Partially Applied Function)