鱼C论坛

 找回密码
 立即注册
查看: 3131|回复: 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……凑活用吧
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;
                }
            }
        }
    }
}

最佳答案

查看完整内容

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

使用道具 举报

发表于 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;
                }
            }
        }
    }
}
想知道小甲鱼最近在做啥?请访问 -> 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();
这样最后才有猜对。


更新:
当非法输入时不会发生错误。
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;
            }
        }
    }
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-15 17:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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