一副扑克牌除去大小王以外共有五十二张牌,包含黑桃(spade),红心(heart),梅花(club),方块(diamond)四种类型,每种类型有编号为1~13的十三张牌,请使用c语言输入第一行输入为现有牌数n,接下来的n行为现有卡牌的信息(包含卡牌类型,卡牌数字),可能有重复的牌出现,输出缺少的牌,按照spade, heart, club, diamond的顺序依次输出(若两张牌类型一样,则按照数字大小依次输出)。
时间: 2023-09-05 22:08:03 浏览: 164
以下是一个简单的 C 语言程序实现:
```c
#include <stdio.h>
#include <stdlib.h>
#define CARD_NUM 13
#define CARD_TYPE 4
int main()
{
int n, i, j, card[CARD_TYPE][CARD_NUM] = {0};
char type;
int num;
scanf("%d", &n);
for (i = 0; i < n; i++) {
scanf(" %c%d", &type, &num);
switch (type) {
case 's':
card[0][num-1] = 1;
break;
case 'h':
card[1][num-1] = 1;
break;
case 'c':
card[2][num-1] = 1;
break;
case 'd':
card[3][num-1] = 1;
break;
default:
break;
}
}
for (i = 0; i < CARD_TYPE; i++) {
switch (i) {
case 0:
printf("spade: ");
break;
case 1:
printf("heart: ");
break;
case 2:
printf("club: ");
break;
case 3:
printf("diamond: ");
break;
default:
break;
}
for (j = 0; j < CARD_NUM; j++) {
if (card[i][j] == 0) {
printf("%d ", j+1);
}
}
printf("\n");
}
return 0;
}
```
程序中使用了一个二维数组 `card` 来记录每张牌是否出现过。其中数组的第一维表示牌的类型,第二维表示牌的数字。当输入一张牌时,将对应位置置为1。
最后按照题目要求输出缺少的牌,注意在输出时要先输出牌的类型,再输出数字。
阅读全文