吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5831|回复: 19
收起左侧

[其他原创] 【原创源码】猜数游戏源代码以及猜数秘诀

  [复制链接]
繁华落幕 发表于 2015-11-14 21:28
本帖最后由 繁华落幕 于 2015-11-14 22:00 编辑

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

猜数截图.png

其实,有了这个秘诀以后,猜1-100内的数只需要7次就可以猜出哦~
[C++] 纯文本查看 复制代码
#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的结果是[0,n-1]的一个整数
        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
                    <以此类推>

免费评分

参与人数 5威望 +1 热心值 +5 收起 理由
黑桃J + 1 不错!二分法的前提是有序
北鱼何为 + 1 竟然没人评分?差评!
楚轩 + 1 我很赞同!
Cizel + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩.
Dicker + 1 感谢发布原创作品,吾爱破解论坛因你更精彩.

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

萋小磊 发表于 2017-1-9 14:31
[C#] 纯文本查看 复制代码
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
[Java] 纯文本查看 复制代码
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+"次!");
	}

}

免费评分

参与人数 1吾爱币 +3 热心值 +1 收起 理由
繁华落幕 + 3 + 1 Java石头牛啊

查看全部评分

Dicker 发表于 2015-11-14 21:41
本帖最后由 Dicker 于 2015-11-14 22:14 编辑

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

免费评分

参与人数 1热心值 +1 收起 理由
繁华落幕 + 1 感谢支持~

查看全部评分

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
给你加油,这个二分的思路还是很好的。以后二分的东西还会很多~

免费评分

参与人数 1热心值 +1 收起 理由
繁华落幕 + 1 谢谢小Z的鼓励,我一定会继续努力~

查看全部评分

babmf 发表于 2015-11-14 23:36
代码注释不错
Cizel 发表于 2015-11-15 18:12
你怎么自己接触置顶了~

点评

我感觉我这个新手帖可能代码有点简单,有技术的置顶就好~  发表于 2015-11-15 18:19
aaron 发表于 2015-11-15 18:25
2的7次方就128了。
这个方法效率非常高,数越多越能体现。
看过一节公开课,哈佛的老师讲CS50
我不知道那是什么,不过他用两个实例也是这个思路。
在一本厚厚的电话本上查找某个人的电话,一次撕掉一半。
数讲堂里的人数,也是一次翻一倍。数完后,如果再进来同样多的人,仅仅需再进行一次计算。

免费评分

参与人数 1热心值 +1 收起 理由
繁华落幕 + 1 我很赞同!

查看全部评分

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-14 20:32

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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