C#用折半算法找随机整数
需求:计算机首先从( 1~100 )随机定义一个要猜的整数,用户从键盘随机获取一个( 1~100 )的整数,提示用户猜大了还是小了,并告知新的范围。猜对显示恭喜您猜对了!
例如:
提示:随机数的产生
Random random = new Random();
int key = random.Next(1, 101);//产生区间内的随机数
本帖最后由 永恒的蓝色梦想 于 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;
}
}
}
}
} 话说竟然还有C#版…… 永恒的蓝色梦想 发表于 2020-6-19 19:42
我实在是不太擅长 Csharp……凑活用吧
代码不错呀,我菜鸟级,不过在41行后加console.readkey();
这样最后才有猜对。 HJX54088 发表于 2020-6-19 20:03
代码不错呀,我菜鸟级,不过在41行后加console.readkey();
这样最后才有猜对。
哦,我用 CTRL+F5 执行,不加 ReadKey 也不会退出。
不过还是感谢提醒~
顺便给个最佳吧~ 本帖最后由 永恒的蓝色梦想 于 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]