c# 编写程序,从一副52张的牌中选出4张,然后计算它们的和。A、J、Q和K 分别表示1、11、12和13。程序应该显示得到和24的选牌次数。
时间: 2024-10-29 13:24:53 浏览: 12
在C#中编写程序,可以利用数组或列表来模拟扑克牌,并使用循环和条件判断来找出满足和为24的不同组合。这里是一个简单的示例,展示了如何通过遍历所有可能的四张牌组合并计算总和来解决这个问题:
```csharp
using System;
using System.Collections.Generic;
class Card
{
public int Value { get; }
public override string ToString() => Value switch
{
1 => "A",
11 => "J",
12 => "Q",
13 => "K",
_ => Value.ToString(),
};
}
class Program
{
static void Main(string[] args)
{
List<Card> deck = new List<Card>
{
// 添加所有A到K的实例
new Card { Value = 1 },
new Card { Value = 11 },
new Card { Value = 12 },
new Card { Value = 13 },
// 其他剩余的牌...
// ...总共52张牌
};
int targetSum = 24;
int count = 0;
foreach (var card1 in deck)
foreach (var card2 in deck)
foreach (var card3 in deck)
foreach (var card4 in deck)
{
if (!IsSameCard(card1, card2) && !IsSameCard(card1, card3) &&
!IsSameCard(card1, card4) && !IsSameCard(card2, card3) &&
!IsSameCard(card2, card4) && !IsSameCard(card3, card4))
{
int sum = card1.Value + card2.Value + card3.Value + card4.Value;
if (sum == targetSum)
{
count++;
}
}
}
Console.WriteLine($"共有 {count} 种组合的和为{targetSum}.");
}
// 辅助方法检查是否是同一张牌
static bool IsSameCard(Card card1, Card card2) => card1.ToString() == card2.ToString();
}
```
阅读全文