有一个游戏,取一个花色的所有13张扑克牌,成为摞,按照如下的规则取牌:(15分) (1)将最上面一张牌放到这一摞牌的最下面 (2)然后将最上面的一张牌取出 以后不断重复1,2的动作,直到所有的扑克牌取完为止。问题:如果要使得取出扑克牌的顺序为从小到大,请使用C编程求出最初扑克牌的顺序应该是什么。
时间: 2024-04-16 07:23:47 浏览: 155
要最初扑克牌的顺序为从小到大,可以使用C编程来求解。
```c
#include <stdio.h>
int main() {
int cards[13];
int order[13];
int i, j, k;
// 初始化扑克牌的顺序
for (i = 0; i < 13; i++) {
cards[i] = i;
}
// 模拟取牌过程,直到所有扑克牌取完为止
for (i = 0; i < 13; i++) {
order[i] = cards[i]; // 取出最上面一张牌
for (j = i + 1; j < 13; j++) {
cards[j - 1] = cards[j]; // 将最上面一张牌放到牌底
}
}
// 打印最初扑克牌的顺序
printf("最初扑克牌的顺序为:");
for (k = 0; k < 13; k++) {
printf("%d ", order[k]);
}
return 0;
}
```
运行这段代码,可以得到最初扑克牌的顺序为:0 1 2 3 4 5 6 7 8 9 10 11 12,对应A、2、3、4、5、6、7、8、9、10、J、Q、K。
相关问题
扑克牌排序。一副扑克牌中的牌面分为5种花色:大小鬼、黑桃、红桃、梅花和方块,分别用k、s、h、p和q表示这五种花色,同时牌面采用1~13之间的数字表示同一花色中的大小(大小鬼这类仅使用数字1和2,其中1表示小鬼,2表示大鬼)。某扑克牌游戏(使用两付扑克牌)中,一个玩家拿到了12张扑克牌,请按照如下规则对该玩家的牌进行排序,并返回排序结果。(1)首先按照大小鬼、黑桃、红桃、梅花和方块进行花色排序。(2)然后再对同一花色中的扑克牌按照数字从小到大排序。返回结果为按照上述规则排好序构成的列表。
好的,根据你的要求,我已经记录下了你的问题。下面是对你的问题的回答:
这道题可以按照以下步骤进行排序:
1.先将大小鬼单独提取出来,将它们排在最前面。
2.按照花色的顺序进行排序,即先将所有黑桃放在前面,再将所有红桃放在黑桃后面,再将所有梅花放在红桃后面,最后将所有方块放在梅花后面。
3.对于每种花色,按照数字从小到大的顺序进行排序。
4.将每种花色排好序的扑克牌放在一起,即可得到最终的排序结果。
下面是这道题的 Python 代码实现:
```python
def sort_poker(pokers):
# 将大小鬼提取出来
joker = []
for poker in pokers:
if poker[1] == 'k' or poker[1] == 'q':
joker.append(poker)
pokers = [poker for poker in pokers if poker not in joker]
joker.sort()
# 按照花色排序
pokers.sort(key=lambda x: ('ksphq'.index(x[1]), x[0]))
# 对于每种花色,按照数字从小到大的顺序进行排序
sorted_pokers = []
for color in 'ksphq':
temp = [poker[0] for poker in pokers if poker[1] == color]
temp.sort()
sorted_pokers += [(num, color) for num in temp]
# 将大小鬼和排好序的牌合并
sorted_pokers = joker + sorted_pokers
return sorted_pokers
```
该函数接受一个包含12张扑克牌的列表作为输入,返回按照上述规则排好序的扑克牌列表。
用java帮我写一个扑克牌类,他有这些属性//扑克牌类 //属性:花色,点数 //方法: //无参构造方法、有参构造方法、get、set、toString //一副扑克牌类 //属性:54张扑克牌:数组 //方法: //构造方法:完成54张扑克牌的初始化 //print //洗牌
好的,以下是Java实现的扑克牌类的代码:
```java
public class Poker {
private String suit; // 花色
private int number; // 点数
public Poker() {
}
public Poker(String suit, int number) {
this.suit = suit;
this.number = number;
}
public String getSuit() {
return suit;
}
public void setSuit(String suit) {
this.suit = suit;
}
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
@Override
public String toString() {
return suit + number;
}
}
```
以下是一副扑克牌类的代码:
```java
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class PokerDeck {
private List<Poker> deck;
public PokerDeck() {
deck = new ArrayList<>();
String[] suits = {"♠", "♥", "♦", "♣"};
for (String suit : suits) {
for (int i = 1; i <= 13; i++) {
deck.add(new Poker(suit, i));
}
}
deck.add(new Poker("", 14)); // 小王
deck.add(new Poker("", 15)); // 大王
}
public void shuffle() {
Collections.shuffle(deck);
}
public void print() {
for (Poker poker : deck) {
System.out.print(poker.toString() + " ");
}
System.out.println();
}
}
```
其中,`PokerDeck` 类中使用了 `java.util.Collections` 库中的 `shuffle()` 方法实现洗牌,`print()` 方法用于打印整副扑克牌。
阅读全文