You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#抛硬币程序问题:需实现连续三次抛出同一面才停止

如何修改抛硬币程序,直到某一面连续出现三次才停止?

你的问题很典型——刚开始写逻辑的时候很容易把「累计次数」和「连续次数」搞混,我来帮你理清楚怎么改。

先看你原来代码的核心问题:你用tail和head统计的是总共出现的次数,所以只要某一面总共出现3次就会停止,不管是不是连续的。但我们需要的是跟踪「连续出现的次数」,而不是总数。

修改思路

我们只需要两个额外的变量:

  • lastFlip:记录上一次抛硬币的结果(初始设为0,表示还没开始抛)
  • currentStreak:记录当前连续出现同一面的次数(初始为0)

每次抛硬币后:

  1. 如果这次的结果和上一次一样,就把currentStreak加1
  2. 如果不一样,就把currentStreak重置为1,同时更新lastFlip为当前结果
  3. 循环的停止条件改成currentStreak == 3——只要连续出现3次就停止

修改后的完整代码

int lastFlip = 0; // 0表示还没抛过,1代表反面,2代表正面
int currentStreak = 0;
int counter = 0;
Random rnd = new Random();

do
{
    int throwing = rnd.Next(1, 3);
    Console.WriteLine(throwing); // 修正了你原来的变量名拼写错误:是throwing不是bacanje
    counter++;

    if (throwing == lastFlip)
    {
        currentStreak++;
    }
    else
    {
        currentStreak = 1;
        lastFlip = throwing;
    }

} while (currentStreak != 3);

Console.WriteLine($"总共抛了{counter}次,连续出现3次的是{(lastFlip == 1 ? "反面" : "正面")}");

额外说明

  • 我修正了你代码里的小错误:Console.WriteLine(bacanje);里的变量名拼写错误,应该是throwing
  • 最后加了一行输出,方便你验证最终结果:显示总共抛的次数,以及连续三次的是哪一面

这样修改后,程序就会一直抛硬币,直到某一面连续出现三次才停止,完全符合你的需求啦。

内容的提问来源于stack exchange,提问作者KacaMat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:18:50