小弟简单的写了一个,但并不完整。你可以参考一下。
Runtime: VC6
复制程式
#include <stdio.h>
#include <time.h>
#include <vector>
#include <algorithm>
#define CARDCOUNT 52 // 52张牌
using namespace std;
vector<int> pk_card(CARDCOUNT);
// 初始化整付牌
void Initialize() {
for(int i=0; i<CARDCOUNT; i++)
pk_card[i] = i+1;
srand(time(NULL));
}
// 随机取得一张牌
int GetCard() {
int retVal = -1;
int remover = rand() % pk_card.size();
retVal = pk_card[remover];
pk_card.erase(pk_card.begin() + remover);
return retVal;
}
// 判断花色
char GetPattern(int card) {
char retVal = 'N'
double temp = card / 13.0;
if(temp > 0.0 && temp <= 1.0)
retVal = 6; // ascii code
else if(temp > 1.0 && temp <= 2.0)
retVal = 3; // ascii code
else if(temp > 2.0 && temp <= 3.0)
retVal = 4; // ascii code
else if(temp > 3.0 && temp <= 4.0)
retVal = 5; // ascii code
return retVal;
}
// 判断数字
char* GetNumber(int card) {
char *retVal = (char *)malloc(2);
int temp = card % 13;
if(temp == 0)
retVal = "K";
else if(temp == 12)
retVal = "Q";
else if(temp == 11)
retVal = "J";
else {
itoa(temp, retVal, 10);
}
return retVal;
}
// 判断重复
char* DetermineDuplicate(int cards[], int card_size) {
char *retVal = (char *)malloc(100);
int maxDup = 0, maxDupLoc = 0;
int dupCount[13] = {0};
for(int i=0; i<card_size; i++)
dupCount[(cards[i]-1) % 13]++;
for(int j=0; j<13; j++) {
if(maxDup < dupCount[j]) {
maxDup = dupCount[j];
maxDupLoc = j;
}
}
if(maxDup < 2)
retVal = "There are no duplicate cards";
else
sprintf(retVal, "There are %d cards with the same point %s", dupCount[maxDupLoc], GetNumber(maxDupLoc+1));
return retVal;
}
int main(int argc, char **argv) {
Initialize();
int card_a[5], card_b[5];
for(int i=0; i<5; i++) {
card_a[i] = GetCard();
card_b[i] = GetCard();
}
printf("A's card: ");
for(int j=0; j<5; j++) {
printf("%c%s ", GetPattern(card_a[j]), GetNumber(card_a[j]));
}
printf("\n");
printf("B's card: ");
for(int k=0; k<5; k++) {
printf("%c%s ", GetPattern(card_b[k]), GetNumber(card_b[k]));
}
printf("\n");
printf("For A: %s\n", DetermineDuplicate(card_a, 5));
printf("For B: %s\n", DetermineDuplicate(card_b, 5));
return 0;
}