现在,我们看一下

1 3 5 7

9 11 13 15

17 19 21 23

25 27 29 31

这一组数有什么规律?

他们看似没有任何规律,但是,把他们变成二进制,就会发现,他们的二进制第0位都是1!

2 3 6 7

10 11 14 15

18 19 22 23

26 27 30 31

看这一组,没错!他们的二进制第一位都是1!

所以,假如小明的生日是在当月第三天,那么第一组数和第二组数都有他的那一天!

那知道这个有什么用呢?

我们看一下,第一组是第0位二进制为1的数,那用一个变量存起来,第0位代表1,那就让那个变量的值加1(注意初始化),第二组第一位是1,第一位对应二进制的2,所以那个变量的值要加2,这样就是3,我们就知道了小明的那一天,另外几组都没有3这个数字,就可以确定小明就是3那一天,运用这个原理,我们就可以做猜生日游戏!

上代码:

#include <iostream>
#include <windows.h>
using namespace std;int main() {char answer;int b = 0, m = 0;cout << "你生日的那一月有在这几个数字里吗?\n";cout << " 1  3  5\n 7  9 11\n输入 Y 代表有,输入 N 代表没有:\n";cin >> answer;if(answer == 'Y') m += 1;system("cls");cout << "你生日的那一月有在这几个数字里吗?\n";cout << " 2  3  6\n 7 10 11\n输入 Y 代表有,输入 N 代表没有:\n";cin >> answer;if(answer == 'Y') m += 2;system("cls");cout << "你生日的那一月有在这几个数字里吗?\n";cout << " 4  5  6\n 7 12\n输入 Y 代表有,输入 N 代表没有:\n";cin >> answer;if(answer == 'Y') m += 4;system("cls");cout << "你生日的那一月有在这几个数字里吗?\n";cout << "8  9 10\n11 12\n输入 Y 代表有,输入 N 代表没有:\n";cin >> answer;if(answer == 'Y') m += 8;system("cls");cout << "继续回答问题:\n"; cout << "你生日的那一天有在这几个数字里吗?\n";cout << " 1  3  5  7\n 9 11 13 15\n17 19 21 23\n25 27 29 31\n输入 Y 代表有,输入 N 代表没有:\n";cin >> answer;if(answer == 'Y') b += 1;system("cls");cout << "你生日的那天有在这几个数字里吗?\n";cout << " 2  3  6  7\n10 11 14 15\n18 19 22 23\n26 27 30 31\n输入 Y 代表有,输入 N 代表没有:\n";cin >> answer;if(answer == 'Y') b += 2;system("cls");cout << "你生日的那天有在这几个数字里吗?\n";cout << " 4  5  6  7\n12 13 14 15\n20 21 22 23\n28 29 30 31\n输入 Y 代表有,输入 N 代表没有:\n";cin >> answer;if(answer == 'Y') b += 4;system("cls");cout << "你生日的那天有在这几个数字里吗?\n";cout << " 8  9 10 11\n12 13 14 15\n24 25 26 27\n28 29 30 31\n输入 Y 代表有,输入 N 代表没有:\n";cin >> answer;if(answer == 'Y') b += 8;system("cls");cout << "你生日的那天有在这几个数字里吗?\n";cout << "16 17 18 19\n20 21 22 23\n24 25 26 27\n28 29 30 31\n输入 Y 代表有,输入 N 代表没有:\n";cin >> answer;if(answer == 'Y') b += 16;system("cls");cout << "你生日的在 " << m << " 月 "<< b << " 日!";return 0;
} 

这个游戏巧妙地利用了二进制的性质,十分的奇妙,感谢阅读!

c++ 巧妙利用二进制,猜出你的生日 猜生日游戏相关推荐

  1. 利用Python语言编程,完成猜数游戏,系统随机产生一个1到100的数字num1,用户输入一个数字guess,如果没有猜对,根据系统给出的提示重新猜数,直到才对为止。

    利用Python语言编程,完成猜数游戏,系统随机产生一个1到100的数字num1,用户输入一个数字guess,如果没有猜对,根据系统给出的提示重新猜数,直到才对为止. 要求:(1)系统每次都要给出新的 ...

  2. 利用random生成1-100里面的随机数,使用程序猜出这个数是多少

    利用random生成1-100里面的随机数,使用程序猜出这个数是多少 Random r = new Random(); int number = r.nextInt(100)+1; Scanner s ...

  3. python中词云图怎样变成特殊图案_如何利用python画出一个多变的词云图?(1)...

    问题描述: 如何利用python画出一个多变的词云图? 解决方法:import numpy as np import matplotlib import matplotlib.pyplot as pl ...

  4. 黑客观察手机倾斜角度就能猜出你的密码,首次命中率高达74%!

    本文讲的是黑客观察手机倾斜角度就能猜出你的密码,首次命中率高达74%!, 近日,安全研究人员发现了一种黑客入侵智能手机的新方式,即使用户手机有PIN码和密码保护,黑客也只需要通过窥探其输入手机密码时倾 ...

  5. kdj值应用口诀_KDJ应用口诀,一文教你巧妙利用KDJ买卖股票

    原标题:KDJ应用口诀,一文教你巧妙利用KDJ买卖股票 KDJ指标由三条曲线组成,它在软件中的默认显示颜色是:K线为白色,D线为黄色,J线为紫色. KDJ指标三条曲线的状态体现了三大应用法则,这三个法 ...

  6. c语言程序立体几何计算机,立体几何教学中巧妙利用信息技术 -----培养高中学生数学学习的兴趣   张芬     2014年11月10日...

    立体几何教学中巧妙利用信息技术 -----培养高中学生数学学习的兴趣 西安市第四十七中学 张芬 摘要 : 本文从立体几何教学内容的特点及几何概念的理解掌握,命题的推理论证过程,命题的理解和公式的推导与 ...

  7. 仅凭脑电波就能猜出密码?这款耳机暴露了脑机接口的大问题

    脑机接口听起来颇具未来感,Facebook和伊隆·马斯克的Neuralink都在进行相关研发,但是,其背后的隐私泄露问题也不容小觑,一款脑电波感应耳机就证明了这种风险的可能性. Epoc +是一款脑电 ...

  8. 利用二分法查找 设计人与计算机猜数游戏,计算机游戏教学法第十一章.ppt

    <计算机游戏教学法第十一章.ppt>由会员分享,可在线阅读,更多相关<计算机游戏教学法第十一章.ppt(72页珍藏版)>请在装配图网上搜索. 1.第十一章 计算机游戏教学法,方 ...

  9. 封装利用libwebsockets写出的客户端、服务端程序为客户端服务端类

    封装利用libwebsockets写出的客户端.服务端程序为客户端服务端类 文章目录 封装利用libwebsockets写出的客户端.服务端程序为客户端服务端类 1.封装 2.封装后写wss客户端.服 ...

最新文章

  1. 【ACM】杭电OJ 1106 函数atoi
  2. 浏览器获取设备信息_过滤获取日志和浏览器信息
  3. 腾讯开源国际化新突破,将紧密参与全球开源治理
  4. Windows消息ID号查看
  5. 利用Theme自定义Activity进入退出动画
  6. 微信小程序开发之普通链接二维码
  7. ubuntu 使用apt-get install安装特定版本
  8. (十)用于面部识别的混合边缘人工智能:下一步
  9. python安装 + pycharm安装和入门学习 +安装配置TensorFlow
  10. vSphere vsan 6.5部署之一VCSA6.5安装
  11. CentOS 6.2 虚拟机 mail邮件信息: crash:[abrt] full crash report
  12. 【TiDB DevCon 2020】金融专题论坛演讲视频汇总
  13. 【JAVA】tomcat 支持excel07下载
  14. 数据库实验 实验一 数据库创建与管理
  15. 基于动物性去思考人性
  16. 在安装office2003时,出现安装程序包的语言不受系统支持的错误,如何解决?
  17. phpmyadmin没有接收到要导入的数据.可能是文件名没有提交,也可能是文件大小超出 PHP 限制.
  18. Halcon学习笔记-工业相机千兆网线和USB优劣对比
  19. 为什么不建议把数据库部署在 Docker 容器内?
  20. Gensim之Word2Vec使用手册

热门文章

  1. 总投资460亿!陈十一院士任校长,东方理工大学年薪40-60万招人
  2. JAVA课程设计——彩票抽奖购买系统
  3. 如何管理好工厂,生意人值得收藏。
  4. manjaro安装tim
  5. 【C++】类的6个默认成员函数详解
  6. 微信公众帐号开发教程第18篇-应用实例之音乐搜索
  7. WordPress 函数大全
  8. mc服务器怎么传送到我位置,我的世界联机怎么传送到队友身边_我的世界联机怎么传送到队友位置哪里身边手机版_攻略...
  9. 《计算机是怎样跑起来的》优化使用VBScript语言编写的石头剪刀布游戏
  10. C++ 递归实现汉诺塔