标题: (已解决)生成随机数(78),显示结果是78=2+4+8+64
[打印本页]
作者: jmz573515
时间: 2006-12-31 23:34
标题: (已解决)生成随机数(78),显示结果是78=2+4+8+64
随机生成一个<=127的整数,用1,2,4,8,16,32,64几个数的和表示出来。
举两个例子:
如果随机数是1,那么我要的结果是1=1
如果随机数是78,那么我要的结果是78=2+4+8+64
最好是用VBS,当然BAT也感谢!(希望能给说一下思路,谢谢!)
Last edited by jmz573515 on 2006-12-31 at 02:41 PM ]
作者: redtek
时间: 2006-12-31 23:42
作者: youxi01
时间: 2007-1-1 01:45
试试一下代码:
@echo off
setlocal enabledelayedexpansion
echo ================================
echo.
echo 计算一个数字的计算式
echo ================================
set /P EN=请输入一个数字:
set /a var=%EN%
for %%i in (64 32 16 8 4 2 1) do (
if !var! GEQ %%i (
set /a var=!var!-%%i
set str=!str!%%i+))
echo %str:~0,-1%=%EN%
pause>nul
至于原理,类似于利用托盘天平加砝码的原则(由重到轻)
作者: zh159
时间: 2007-1-1 02:15
楼上的输入数字不能大于最大数的两倍^_^
作者: Primalchaos
时间: 2007-1-1 02:24
确切的说是不能大于等于()中所有数的和
不过也很厉害了,楼主也说了<=127。
^_^
作者: jmz573515
时间: 2007-1-1 03:40
好,加分!
作者: weapfe
时间: 2007-1-1 05:49
好像不行哦.大家请看:这是我的测试结果~~不知..
================================
计算一个数字的计算式
================================
请输入一个数字:56
64+2+32+16+8=56
请按任意键继续. . .
作者: weapfe
时间: 2007-1-1 05:52
哦,是我改动原代码所致!
我改的代码为:
@echo off
setlocal enabledelayedexpansion
:12
cls
echo ================================
echo.
echo 计算一个数字的计算式
echo ================================
set /P EN=请输入一个数字:
set /a var=%EN%
for %%i in (64 32 16 8 4 2 1) do (
if !var! GEQ %%i (
set /a var=!var!-%%i
set str=!str!%%i+))
echo %str:~0,-1%=%EN%
pause
goto 12
第一次我输入了68
第二次我输入了56
不知道原因,请达人解释一下~~
作者: youxi01
时间: 2007-1-1 05:53
我这里怎么是这样的呢?!
对了,没看到你的上面那句话!来了个goto,
解决办法,可以在set /p EN=...上面再加两句 set EN=
set str=
================================
计算一个数字的计算式
================================
请输入一个数字:56
32+16+8=56
Last edited by youxi01 on 2007-1-1 at 05:59 AM ]
作者: scriptor
时间: 2007-1-1 13:38
又是一个计算题!!