繁华落幕 发表于 2015-11-14 21:28

【原创源码】猜数游戏源代码以及猜数秘诀

本帖最后由 繁华落幕 于 2015-11-14 22:00 编辑

{:1_936:}本宝宝刚学C语言,只能把这个程序做成这样了,附猜数秘诀。大牛勿喷,纯属新(po)手(shi)帖(shui)



其实,有了这个秘诀以后,猜1-100内的数只需要7次就可以猜出哦~
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()

{
      system("title 非正常人类研究所开发的猜数游戏");//本宝宝程序的标题,我一定不会告诉你title后面的空格不能丢

      srand(time(0));

      int number = rand()%100+1;//随机产生的1-100之间变量   %100则是对100取余   x%n的结果是的一个整数
      int count = 0;//猜想的次数
      int a = 0;//输入的数

    printf("本宝宝已经想好一个1到100之间的整数。\n");

      do{
                printf("请猜想这个数:");
                scanf("%d", &a);//输入的数(a)
                count ++;//每输入一次则让count+1
                if ( a > number ){//判断a是否大于number
                        printf("您所猜想的这个数大了\n");//如果大于则输出该行
                } else if ( a < number ){//否则继续判断a是否小于number
                        printf("您所猜想的这个数小了\n");//如果小于则输出该行
                }
      } while ( a != number );//如果输入的数为随机产生的数则走出判定,执行下面的代码,反之将继续进行do-while循环
   
      printf("恭喜,你用了%d次成功将本数[%d]猜出,游戏结束!\n", count, number);//输出猜想的次数以及正确答案

      system("pause");//防止编译出来的exe文件在执行完后就一闪而"退",代码作用:按任意键继续...

      return 0;

}
其实猜数秘诀就是“二分法”,也就是说对半分嘛,二分法,就是通过不断的分割(其实就是中分法),从而求出零点的近似值。

例如:先猜100的一半,猜出50:

      如果大了就把50对半分,猜出50-25=25:
             如果大了就把25对半分,得到12/13,猜出25-12/13=13/12
                  <以此类推>
             如果小了就把25对半分,得到12/13,猜出25+12/13=37/38
                  <以此类推>

      如果小了也把50对半分,猜出50+25=75:
             如果大了就把25对半分,得到12/13,猜出75-12/13=63/62
                  <以此类推>
             如果小了就把25对半分,得到12/13,猜出75+12/13=87/88
                  <以此类推>

萋小磊 发表于 2017-1-9 14:31

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class Program
    {
      static void Main(string[] args)
      {
            Random ran = new Random();
            int num = ran.Next(1,100);
            //储存一个数 你输入的
            int guess = -1 ;
            // i 来记录你猜了多少次
            int i = 0;
            Console.WriteLine("欢迎来到猜数字游戏:");
            Console.WriteLine("我们将产生一个随机数1-100");
            Console.WriteLine("猜对了即可退出游戏");
            do{
                Console.WriteLine("请输入你要猜的数字:");
                guess = int.Parse(Console.ReadLine());
                i++;
                if(num>guess){
                  Console.WriteLine("你猜的小了");
                }else if(num<guess){
                  Console.WriteLine("你猜的大了");
                }else if(num==guess){
                  Console.WriteLine("恭喜你猜对了");
                }
            }while(guess!=num);
            Console.WriteLine("你一共猜了" + i + "次!");
            Console.ReadLine();
      }
    }
}

萋小磊 发表于 2017-1-8 20:32

import java.util.Scanner;


public class Demo {

        public static void main(String[] args) {
                Scanner in = new Scanner(System.in);
                //产生一个随机数Num随机数取1-100之间
                int num = (int)(Math.random()*100+1);
                //储存一个数 你输入的
                int guess = -1 ;
                // i 来记录你猜了多少次
                int i = 0;
                System.out.println("欢迎来到猜数字游戏:");
                System.out.println("我们将产生一个随机数1-100");
                System.out.println("猜对了即可退出游戏");
                do{
                        System.out.print("请输入你要猜的数字:");
                        guess = in.nextInt();
                        i++;
                        if(num>guess){
                                System.out.println("你猜的小了");
                        }else if(num<guess){
                                System.out.println("你猜的大了");
                        }else if(num==guess){
                                System.out.println("恭喜你猜对了");
                        }
                }while(guess!=num);
                System.out.println("你一共猜了"+i+"次!");
        }

}

Dicker 发表于 2015-11-14 21:41

本帖最后由 Dicker 于 2015-11-14 22:14 编辑

虽然是 新手贴 ,,但我是个 菜鸟 谢谢楼主 的贴 。。每一个 新手贴 都会帮到 很多 人的!!

E式丶男孩 发表于 2015-11-14 21:47

想方法不错啊,支持你

xieyuanqiu 发表于 2015-11-14 21:48

感谢发布原创作品,吾爱破解论坛因你更精彩.

其他倪称 发表于 2015-11-14 21:55

不错当初我一个朋友就当着面给我写了这个代码,当时我还不懂

caxzan 发表于 2015-11-14 22:09

楼主,这个代码感觉是你来浑水的,好简单的逻辑

Cizel 发表于 2015-11-14 22:31

给你加油,这个二分的思路还是很好的。以后二分的东西还会很多~

babmf 发表于 2015-11-14 23:36

代码注释不错

Cizel 发表于 2015-11-15 18:12

你怎么自己接触置顶了~

aaron 发表于 2015-11-15 18:25

2的7次方就128了。
这个方法效率非常高,数越多越能体现。
看过一节公开课,哈佛的老师讲CS50
我不知道那是什么,不过他用两个实例也是这个思路。
在一本厚厚的电话本上查找某个人的电话,一次撕掉一半。
数讲堂里的人数,也是一次翻一倍。数完后,如果再进来同样多的人,仅仅需再进行一次计算。
页: [1] 2
查看完整版本: 【原创源码】猜数游戏源代码以及猜数秘诀