请用C语言根据下面的数学魔术原理编写一个小游戏。请根据下面的数学魔术原理编写一个小游戏。——数学魔术——情景:我有五张卡片,上面写着数字。一:1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31二:2,3,6,7,10,11,14,15,18,19,22,23,26,27,30,31三:4,5,6,7,12,13,14,15,20,21,22,23,28,29,30,31四:8,9,10,11,12,13,14,15,24,25,26,27,28,29,30,31五:16,
2020-04-29
请用C语言根据下面的数学魔术原理编写一个小游戏。
请根据下面的数学魔术原理编写一个小游戏。
——数学魔术——
情景:我有五张卡片,上面写着数字。
一:1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31
二:2,3,6,7,10,11,14,15,18,19,22,23,26,27,30,31
三:4,5,6,7,12,13,14,15,20,21,22,23,28,29,30,31
四:8,9,10,11,12,13,14,15,24,25,26,27,28,29,30,31
五:16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31
你心中想一个0-31中的一个数字。告诉我这个数字在那几张卡片上有(不能多也不能少,有的全说上,没有的打死也不能说。)我便会知道你想的是什么数字。
比如观众想到21,查卡片得知“1、3、5”张卡片上都有这数字,那么此魔术师就可以计算出这个数字为:
2(1-1)+2(3-1)+2(5-1)=21
======================================
PS:括号里的是在2的上标的,表几次方的
========================================
原理:我们都可以知道0-31数字可以用5位2进制数;其实,那五张卡片就是各代表一位。每张卡片上的数字就是代表这个数字在表示成二进制时这一位为1。比如数字21表示成5位的二进制是10101,这5位二进制的第1位(最右边一位)和第3位、第5位都是“1”,那么就是在第1、3、5号卡片上都有这个数字。
提示:由于要让用户输入卡片号的话,数字所在卡片的个数不确定;你可改成让他检查“下列数字是否包含你所想的数字(Y/N):”,通过每张卡片的确认来进行计算。另,乘2也可以通过移位运算符实现(略)。
优质解答
这个程序我昨晚就搞定了,结果掉线上不成网没贴上来,等我早上起来就给你回答。搞定。#include#define N 16main(){ int i; int j; char ch; int number=0; int a[5][N]={{1,3,5,7,9,11,13,15,17,19,21,23,...
这个程序我昨晚就搞定了,结果掉线上不成网没贴上来,等我早上起来就给你回答。搞定。#include#define N 16main(){ int i; int j; char ch; int number=0; int a[5][N]={{1,3,5,7,9,11,13,15,17,19,21,23,...