鱼C论坛

 找回密码
 立即注册
查看: 2852|回复: 5

[已解决]C#用折半算法找随机整数

[复制链接]
发表于 2020-6-19 18:37:09 | 显示全部楼层 |阅读模式
50鱼币

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

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

最佳答案
2020-6-19 18:37:10
本帖最后由 永恒的蓝色梦想 于 2020-6-19 20:06 编辑

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

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

  11.             for (; ; guess = int.Parse(Console.ReadLine()))
  12.             {
  13.                 if (guess > randint)
  14.                 {
  15.                     --guess;

  16.                     if (guess < max)
  17.                     {
  18.                         max = guess;
  19.                     }

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

  22.                 else if (guess < randint)
  23.                 {
  24.                     ++guess;

  25.                     if (guess > min)
  26.                     {
  27.                         min = guess;
  28.                     }

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

  31.                 else
  32.                 {
  33.                     Console.WriteLine("猜对了");
  34.                     Console.ReadKey();
  35.                     break;
  36.                 }
  37.             }
  38.         }
  39.     }
  40. }
复制代码

最佳答案

查看完整内容

我实在是不太擅长 Csharp……凑活用吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-19 18:37:10 | 显示全部楼层    本楼为最佳答案   
本帖最后由 永恒的蓝色梦想 于 2020-6-19 20:06 编辑

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

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

  11.             for (; ; guess = int.Parse(Console.ReadLine()))
  12.             {
  13.                 if (guess > randint)
  14.                 {
  15.                     --guess;

  16.                     if (guess < max)
  17.                     {
  18.                         max = guess;
  19.                     }

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

  22.                 else if (guess < randint)
  23.                 {
  24.                     ++guess;

  25.                     if (guess > min)
  26.                     {
  27.                         min = guess;
  28.                     }

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

  31.                 else
  32.                 {
  33.                     Console.WriteLine("猜对了");
  34.                     Console.ReadKey();
  35.                     break;
  36.                 }
  37.             }
  38.         }
  39.     }
  40. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-19 19:42:43 | 显示全部楼层
话说竟然还有C#版……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-6-19 20:03:58 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-6-19 19:42
我实在是不太擅长 Csharp……凑活用吧

代码不错呀,我菜鸟级,不过在41行后加console.readkey();
这样最后才有猜对。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

哦,我用 CTRL+F5 执行,不加 ReadKey 也不会退出。
不过还是感谢提醒~
顺便给个最佳吧~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-19 20:15:42 | 显示全部楼层
本帖最后由 永恒的蓝色梦想 于 2020-7-24 17:49 编辑
HJX54088 发表于 2020-6-19 20:03
代码不错呀,我菜鸟级,不过在41行后加console.readkey();
这样最后才有猜对。


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



  2. class Program
  3. {
  4.     static int GetNumber()
  5.     {
  6.         for(; ; )
  7.         {
  8.             try
  9.             {
  10.                 return int.Parse(Console.ReadLine());
  11.             }
  12.             catch
  13.             {
  14.                 Console.WriteLine("非法的输入,请重试:");
  15.             }
  16.         }
  17.     }


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

  22.         for (; ; guess = GetNumber())
  23.         {
  24.             if (guess > randint)
  25.             {
  26.                 --guess;

  27.                 if (guess < max)
  28.                 {
  29.                     max = guess;
  30.                 }

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

  33.             else if (guess < randint)
  34.             {
  35.                 ++guess;

  36.                 if (guess > min)
  37.                 {
  38.                     min = guess;
  39.                 }

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

  42.             else
  43.             {
  44.                 Console.WriteLine("猜对了!");
  45.                 Console.ReadKey();
  46.                 break;
  47.             }
  48.         }
  49.     }
  50. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-25 11:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表