联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!
@echo off for %%a in (%random% %random% %random%) do ( set str=%%a setlocal enabledelayedexpansion for /l %%i in (0 1 4) do if not "!str:~%%i,1!"=="" set/a _!str:~%%i,1!+=1 for /f "tokens=1,2 delims=_=" %%i in ('set _') do ( if %%j gtr 1 set/a n+=1&if defined var (set var=!var!和%%i)else set var=%%i ) if defined n (echo %%a 有 !n! 对(!var!))else echo %%a 有 0 对 endlocal ) pause
Originally posted by clian76 at 2009-1-8 23:17: 有什么办法把变量: !_str! !j! !strout:~0,-1! 拿到endlocal之后,就是这里的PAUSE之后让程序正常显示变量。我试了把endlocal拿到代码最后,这样程序就 ...
@echo off FOR /F %%a IN ('echo %random%^&echo %random%^&echo %random%') do ( set j1=&set s1= call :rndd %%a j1 s1 if defined j1 (call echo %%a 有%%j1%%对(%%s1%%)) else echo %%a 有0对 ) pause&goto:EOF :rndd setlocal enabledelayedexpansion set str=%1 set j= for /l %%x in (1,1,5) do ( if "!str!" neq "" ( set i=!str:~0,1! if not defined str!i! (set str!i!=1) else set/a str!i!+=1,j=0 set str=!str:~1! ) ) if defined j ( for /f "tokens=1,2delims==" %%i in ('set str')do if %%j gtr 1 set str=%%i&set "strout=!strout!!str:~3,1!和"&set/a j+=%%j/2 ) endlocal&if "%strout%" neq "" set %2=%j%&set %3=%strout:~0,-1%
Originally posted by linee at 2009-1-9 12:06: 16楼更精简,不过对子数要处理下,比如:1111 仍显示 有1对(1)正确应该显示 有2对 (1)