c语言一副扑克牌除去大小王以外共有五十二张牌,包含黑桃(spade),红心(heart),梅花(club),方块(diamond)四种类型,每种类型有编号为1~13的十三张牌。 现在Josie想要和朋友一起玩牌,但手上的牌她不确定是否完整。请你编写程序,帮她计算一下缺少的牌有哪些。 输入 第一行输入为现有牌数n,接下来的n行为现有卡牌的信息(包含卡牌类型,卡牌数字),可能有重复的牌出现。 输出 输出缺少的牌,按照spade, heart, club, diamond的顺序依次输出。若两张牌类型一样,则按照数字大小依次输出。
时间: 2023-07-16 18:15:54 浏览: 172
以下是C语言代码实现:
```c
#include <stdio.h>
int main() {
int n, card[4][13] = {0}; // card数组记录每种牌的数量
char type;
int number;
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf(" %c%d", &type, &number);
switch (type) {
case 'S':
card[0][number - 1]++; // 黑桃
break;
case 'H':
card[1][number - 1]++; // 红心
break;
case 'C':
card[2][number - 1]++; // 梅花
break;
case 'D':
card[3][number - 1]++; // 方块
break;
}
}
// 输出缺少的牌
for (int i = 0; i < 4; i++) { // 四种花色
for (int j = 0; j < 13; j++) { // 13种数字
if (card[i][j] == 0) { // 缺少的牌
switch (i) {
case 0:
printf("S %d\n", j + 1); // 黑桃
break;
case 1:
printf("H %d\n", j + 1); // 红心
break;
case 2:
printf("C %d\n", j + 1); // 梅花
break;
case 3:
printf("D %d\n", j + 1); // 方块
break;
}
}
}
}
return 0;
}
```
程序中使用一个二维数组`card`记录每种牌的数量,首先根据输入信息更新`card`数组,然后遍历`card`数组,输出缺少的牌。在输出时,根据花色和数字分别进行判断并输出。
阅读全文