【问题标题】:C Programming integerC编程整数
【发布时间】:2015-04-18 08:01:16
【问题描述】:

我需要制作一个二十一点程序。问题是,正如您在代码中看到的那样,有一个循环用于生成卡片而不重复......

如果我按下一个键,它会打印如下一行: “五钻” 然后按另一个键,例如它打印: 《八叶草》

那么如何在不弄乱代码的情况下将这两者相加。因为我想检查这两者之和的值。我需要做什么?

int cards()
{
    int card[51];
    int used[51];

    int x = 0;
    int playerhand = 0;
    int dealerhand = 0;
    int sum = 0;

    while(!kbhit())
        x++;

    srand(x % 100000);

    for(int i = 0; i <= 51; i++)
        used[i] = 0;

    for(;;)
    {
        int w;
        do
        {
            w = rand() % 52;
        }
        while(used[w] == 1);

        used[w] = 1;

        int value = w % 13 + 1;

        if(value >= 2 && value <= 10)
            printf("%d-", value);
        else
        {
            if(value == 1)
                printf("Ace ");
            if(value == 11)
                printf("Jack ");
            if(value == 12)
                printf("Queen ");
            if(value == 13)
                printf("King ");
        }

        int suit = (int)(w / 13);

        if(suit == 0)
            printf("Clover");
        if(suit == 1)
            printf("Spade");
        if(suit == 2)
            printf("Heart");
        if(suit == 3)
            printf("Diamond");

        printf("\n");
        getch();
    }
}

【问题讨论】:

  • 通过举例说明你想要的输出。
  • 第一个for 循环应该是for(int i=0;i&lt;51;i++),而不是for(int i=0;i&lt;=51;i++)w=rand()%52; 应该是w=rand()%51;
  • @Cool Guy:从编程的角度来看是正确的,但由于我从未见过只有 51 张牌的二十一点游戏,建议将牌数组扩展到 52 个元素并保留其余元素可能更合适原来如此……
  • 如果程序从卡片随机发生器打印两个值,我只需要知道如何添加两个值。就像我写的一样。

标签: c loops integer


【解决方案1】:

您应该计算值的sum 和 A 的计数。

如果牌是 A,则添加 11,如果是 King、Queen 或 Jack,则添加 10,否则添加 value

如果sum 大于21 并且您看到A,则为每个A 减去10,直到您回落到22 以下。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-02
    • 1970-01-01
    • 2023-03-23
    • 2017-10-08
    • 2020-06-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多