c语言 7-6 扑克牌牌点
时间: 2024-11-09 13:26:49 浏览: 92
在C语言中,如果要用数组表示扑克牌并计算牌点,通常会创建一个结构体来代表一张扑克牌,包含牌面值和花色两个属性。假设我们只考虑五种基本的花色(黑桃、红心、梅花、方块),A、J、Q、K分别计1、11、12、13分,而数字牌则按其面数值算分。
可以这样设计:
```c
#include <stdio.h>
typedef enum {
SPADE = 0,
HEART,
DIAMOND,
CLUB,
} Suit;
typedef struct {
int value; // 牌面值
Suit suit; // 花色
} Card;
int getPoint(Card card) {
if (card.value >= 11) { // A, J, Q, K
return card.value;
} else {
return card.value * 10; // 数字牌的点数
}
}
int main() {
Card deck[52]; // 假设这里有52张牌
// 初始化和填充牌组...
for (int i = 0; i < 52; i++) {
printf("牌 %d 的点数是:%d\n", i+1, getPoint(deck[i]));
}
return 0;
}
```
在这个示例中,`getPoint`函数负责计算每张牌的点数。在`main`函数中,遍历牌组并打印出每张牌的点数。
相关问题
c语言程序设计21点扑克牌,C语言程序设计-21点扑克牌游戏.pdf
很抱歉,我无法提供您所需的pdf文件。但是,我可以为您提供一个简单的21点扑克牌游戏的C语言程序示例,您可以参考它来编写自己的程序。
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int player, dealer, player_sum, dealer_sum;
char choice;
srand((unsigned)time(NULL)); // 初始化随机数种子
printf("Welcome to 21-point blackjack game!\n\n");
// 玩家和庄家各发两张牌
player = rand() % 10 + 1;
dealer = rand() % 10 + 1;
printf("Your first card is %d.\n", player);
printf("Dealer's first card is %d.\n", dealer);
player += rand() % 10 + 1;
dealer += rand() % 10 + 1;
printf("Your second card is %d.\n", player);
printf("Dealer's second card is hidden.\n");
// 计算点数
player_sum = player;
dealer_sum = dealer;
// 玩家回合
do {
printf("\nDo you want to hit (h) or stand (s)? ");
scanf(" %c", &choice);
if (choice == 'h') {
player += rand() % 10 + 1;
player_sum += player;
printf("Your new card is %d.\n", player);
if (player_sum > 21) {
printf("Busted! You lose.\n");
return 0;
}
}
} while (choice == 'h');
// 庄家回合
printf("\nDealer's turn.\n");
printf("Dealer's second card is %d.\n", dealer);
while (dealer_sum < 17) {
dealer += rand() % 10 + 1;
dealer_sum += dealer;
printf("Dealer's new card is %d.\n", dealer);
if (dealer_sum > 21) {
printf("Dealer busted! You win.\n");
return 0;
}
}
// 比较点数
printf("\nYour total is %d.\n", player_sum);
printf("Dealer's total is %d.\n", dealer_sum);
if (player_sum > dealer_sum) {
printf("You win!\n");
} else if (player_sum < dealer_sum) {
printf("You lose.\n");
} else {
printf("It's a tie.\n");
}
return 0;
}
```
这个程序使用随机数生成玩家和庄家的牌,在玩家回合中,玩家可以选择是否要继续要牌,直到选择停牌或者点数超过21点为止。在庄家回合中,庄家会一直要牌直到点数大于等于17点为止。最后比较点数大小,判断胜负。
请注意,这只是一个简单的示例程序,您可以根据自己的需求进行修改和优化。
c语言程序设计21点扑克牌,C语言程序设计-21点扑克牌游戏.doc
抱歉,作为AI语言模型,我无法打开文档文件或者执行程序。但是我可以为你提供一个基本的21点扑克牌游戏的实现思路:
1. 初始化扑克牌,包括花色和点数,可以使用结构体存储每张牌的信息;
2. 随机发牌,每人两张牌,其中庄家一张牌暗置;
3. 玩家可以选择是否继续要牌,每次要牌后计算手牌点数,如果超过21点则爆牌,结束游戏;
4. 玩家不要牌后,揭示庄家暗置的牌,如果庄家手牌点数小于17点则必须要牌,直到点数大于等于17点为止;
5. 比较双方手牌点数,最接近21点的一方获胜。
希望这个思路能够帮助你实现21点扑克牌游戏。
阅读全文