题目原文
题目描述
一副扑克牌除去大小王以外共有五十二张牌,包含黑桃(spade),红心(heart),梅花(club),方块(diamond)四种类型,每种类型有编号为1~13的十三张牌。
现在Josie想要和朋友一起玩牌,但手上的牌她不确定是否完整。请你编写程序,帮她计算一下缺少的牌有哪些。
输入
第一行输入为现有牌数n,接下来的n行为现有卡牌的信息(包含卡牌类型,卡牌数字),可能有重复的牌出现。
输出
输出缺少的牌,按照spade, heart, club, diamond的顺序依次输出。若两张牌类型一样,则按照数字大小依次输出。
样例
输入样例1
47
S 10
S 11
S 12
S 13
H 1
H 2
S 6
S 7
S 8
S 9
H 6
H 8
H 9
H 10
H 11
H 4
H 5
S 2
S 3
S 4
S 5
H 12
H 13
C 1
C 2
D 1
D 2
D 3
D 4
D 5
D 6
D 7
C 3
C 4
C 5
C 6
C 7
C 8
C 9
C 10
C 11
C 13
D 9
D 10
D 11
D 12
D 13
输出样例1
S 1
H 3
H 7
C 12
D 8
AC代码
#include <stdio.h>
int spade[20], heart[20], club[20], diamond[20];
void print(int a[], char c)
{
for (int i = 1; i <= 13; i++)
if (a[i] == 0)
printf("%c %d\n", c, i);
}
int main()
{
int n;
scanf("%d", &n);
getchar();
while (n--)
{
char c;
int x;
scanf("%c %d", &c, &x);
getchar();
if (c == 'S')
spade[x] = 1;
else if (c == 'H')
heart[x] = 1;
else if (c == 'C')
club[x] = 1;
else if (c == 'D')
diamond[x] = 1;
}
print(spade, 'S');
print(heart, 'H');
print(club, 'C');
print(diamond, 'D');
return 0;
}