用C实现如下描述:描述 输入描述 空格分隔的牌的信息 每张牌用{花色,牌面}表示 花色有 MNOP 四种 牌面有:A 2 3 4 5 6 7 8 9 10 J Q K 不包括两张King 例如: MA M2 O9 O10 OK 输出描述 将牌均分为两部分,如果牌总数是奇数,那么多出的一张放在第一份内 交替从第一份、第二份取牌输出 例如,原来牌的顺序为 MA M2 M3 M8 M9,洗牌后为 MA M8 M2 M9 M3
时间: 2023-12-29 12:02:48 浏览: 141
C语言中计算字符串长度与分割字符串的方法
好的,我明白了。这是一个简单的洗牌问题,可以用数组来存储牌的信息,然后交替输出即可。以下是用C语言实现的代码:
```c
#include <stdio.h>
#include <string.h>
#define MAXN 54
#define MAXLEN 3
char card[MAXN][MAXLEN]; // 存储牌的信息
int main() {
int n, k, i, j;
scanf("%d", &n);
k = n / 2 + n % 2; // 第一份牌的数量
for (i = 0; i < n; i++) {
scanf("%s", card[i]);
}
for (i = 0, j = k; i < k; i++, j++) {
printf("%s ", card[i]);
if (j < n) {
printf("%s ", card[j]);
}
}
printf("\n");
return 0;
}
```
我们首先读入牌的数量,然后根据题目要求计算出第一份牌的数量。接着,我们用一个二维字符数组 `card` 来存储牌的信息,每张牌用一个长度为 3 的字符串来表示。然后,我们用两个指针 `i` 和 `j` 分别指向第一份牌和第二份牌的第一张牌。接着,我们交替从两份牌中取牌输出,直到第一份牌或第二份牌中的牌取完为止。
注意,如果牌的数量是奇数,那么多出的一张牌应该放在第一份牌中,因此在计算第一份牌的数量时需要加上余数部分。
阅读全文