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