HJX54088 发表于 2020-6-19 18:37:09

C#用折半算法找随机整数


需求:计算机首先从( 1~100 )随机定义一个要猜的整数,用户从键盘随机获取一个( 1~100 )的整数,提示用户猜大了还是小了,并告知新的范围。猜对显示恭喜您猜对了!
例如:


提示:随机数的产生
Random random = new Random();
int key = random.Next(1, 101);//产生区间内的随机数

永恒的蓝色梦想 发表于 2020-6-19 18:37:10

本帖最后由 永恒的蓝色梦想 于 2020-6-19 20:06 编辑

我实在是不太擅长 Csharp……凑活用吧using System;

namespace csharp
{
    class Program
    {
      static void Main(string[] args)
      {
            int randint = new Random().Next(0, 101), guess, min = 1, max = 100;
            Console.WriteLine("请您输入1-100之间要猜的整数:");
            guess = int.Parse(Console.ReadLine());

            for (; ; guess = int.Parse(Console.ReadLine()))
            {
                if (guess > randint)
                {
                  --guess;

                  if (guess < max)
                  {
                        max = guess;
                  }

                  Console.WriteLine("大了重新输入,猜的数范围在{0}-{1}之间", min, max);
                }

                else if (guess < randint)
                {
                  ++guess;

                  if (guess > min)
                  {
                        min = guess;
                  }

                  Console.WriteLine("小了重新输入,猜的数范围在{0}-{1}之间", min, max);
                }

                else
                {
                  Console.WriteLine("猜对了");
                  Console.ReadKey();
                  break;
                }
            }
      }
    }
}

永恒的蓝色梦想 发表于 2020-6-19 19:42:43

话说竟然还有C#版……

HJX54088 发表于 2020-6-19 20:03:58

永恒的蓝色梦想 发表于 2020-6-19 19:42
我实在是不太擅长 Csharp……凑活用吧

代码不错呀,我菜鸟级,不过在41行后加console.readkey();
这样最后才有猜对。

永恒的蓝色梦想 发表于 2020-6-19 20:04:58

HJX54088 发表于 2020-6-19 20:03
代码不错呀,我菜鸟级,不过在41行后加console.readkey();
这样最后才有猜对。

哦,我用 CTRL+F5 执行,不加 ReadKey 也不会退出。
不过还是感谢提醒~
顺便给个最佳吧~

永恒的蓝色梦想 发表于 2020-6-19 20:15:42

本帖最后由 永恒的蓝色梦想 于 2020-7-24 17:49 编辑

HJX54088 发表于 2020-6-19 20:03
代码不错呀,我菜鸟级,不过在41行后加console.readkey();
这样最后才有猜对。

更新:
当非法输入时不会发生错误。
using System;



class Program
{
    static int GetNumber()
    {
      for(; ; )
      {
            try
            {
                return int.Parse(Console.ReadLine());
            }
            catch
            {
                Console.WriteLine("非法的输入,请重试:");
            }
      }
    }


    static void Main(string[] args)
    {
      Console.WriteLine("请您输入1-100之间要猜的整数:");
      int randint = new Random().Next(0, 101), guess = GetNumber(), min = 1, max = 100;

      for (; ; guess = GetNumber())
      {
            if (guess > randint)
            {
                --guess;

                if (guess < max)
                {
                  max = guess;
                }

                Console.WriteLine("大了重新输入,猜的数范围在{0}-{1}之间:", min, max);
            }

            else if (guess < randint)
            {
                ++guess;

                if (guess > min)
                {
                  min = guess;
                }

                Console.WriteLine("小了重新输入,猜的数范围在{0}-{1}之间:", min, max);
            }

            else
            {
                Console.WriteLine("猜对了!");
                Console.ReadKey();
                break;
            }
      }
    }
}
页: [1]
查看完整版本: C#用折半算法找随机整数