我是靠谱客的博主 神勇大米,最近开发中收集的这篇文章主要介绍c++ 巧妙利用二进制,猜出你的生日 猜生日游戏,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

现在,我们看一下

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

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

最后

以上就是神勇大米为你收集整理的c++ 巧妙利用二进制,猜出你的生日 猜生日游戏的全部内容,希望文章能够帮你解决c++ 巧妙利用二进制,猜出你的生日 猜生日游戏所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(54)

评论列表共有 0 条评论

立即
投稿
返回
顶部