题目描述 一副扑克牌除去大小王以外共有五十二张牌,包含黑桃(spade),红心(heart),梅花(club),方块(diamond)四种类型,每种类型有编号为1~13的十三张牌。 现在Josie想要和朋友一起玩牌,但手上的牌她不确定是否完整。请你编写程序,帮她计算一下缺少的牌有哪些。 输入 第一行输入为现有牌数n,接下来的n行为现有卡牌的信息(包含卡牌类型,卡牌数字),可能有重复的牌出现。 输出 输出缺少的牌,按照spade, heart, club, diamond的顺序依次输出。若两张牌类型一样,则按照数字大小依次输出。 题目描述 一副扑克牌除去大小王以外共有五十二张牌,包含黑桃(spade),红心(heart),梅花(club),方块(diamond)四种类型,每种类型有编号为1~13的十三张牌。 现在Josie想要和朋友一起玩牌,但手上的牌她不确定是否完整。请你编写程序,帮她计算一下缺少的牌有哪些。 输入 第一行输入为现有牌数n,接下来的n行为现有卡牌的信息(包含卡牌类型,卡牌数字),可能有重复的牌出现。 输出 输出缺少的牌,按照spade, heart, club, diamond的顺序依次输出。若两张牌类型一样,则按照数字大小依次输出。
时间: 2024-02-22 15:59:01 浏览: 59
纸牌游戏比大小一。创建一副扑克牌类花色:黑红梅方点数:
以下是使用C语言实现的代码:
```c
#include <stdio.h>
#include <string.h>
int main() {
int cards[4][13] = {0}; // 初始化牌面状态
// 处理现有牌信息
int n;
scanf("%d", &n);
for (int i = 0; i < n; i++) {
char card_type[10];
int card_num;
scanf("%s %d", card_type, &card_num);
card_num--; // 将1~13转化为0~12
if (strcmp(card_type, "spade") == 0) {
cards[0][card_num] = 1;
} else if (strcmp(card_type, "heart") == 0) {
cards[1][card_num] = 1;
} else if (strcmp(card_type, "club") == 0) {
cards[2][card_num] = 1;
} else if (strcmp(card_type, "diamond") == 0) {
cards[3][card_num] = 1;
}
}
// 输出缺失的牌
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 13; j++) {
if (cards[i][j] == 0) {
if (i == 0) {
printf("spade %d\n", j + 1);
} else if (i == 1) {
printf("heart %d\n", j + 1);
} else if (i == 2) {
printf("club %d\n", j + 1);
} else {
printf("diamond %d\n", j + 1);
}
}
}
}
return 0;
}
```
代码思路:
1. 首先创建一个二维数组,用于记录每张牌的状态,初始化为0。
2. 处理输入的现有牌信息,根据牌的类型和数字,将相应位置的状态改为1。
3. 遍历二维数组,输出状态为0的牌,根据类型和数字输出。
阅读全文