返回列表 发帖

批处理FOR语句训练:数字排列

一组有规律的数字,需要把它们排列成N块。如:

以下是一组数字:
01 02 03 04
05 06 07 08
09 10 11 12
13 14 15 16COPY


如排成N=3块,则是如下样式:
01 02 03 04 01 02 03 04 01 02 03 04
05 06 07 08 05 06 07 08 05 06 07 08
09 10 11 12 09 10 11 12 09 10 11 12
13 14 15 16 13 14 15 16 13 14 15 16COPY


N不是固定的,请问用批处理如何排列这组数字?

@echo off
setlocal enabledelayedexpansion
set /p n=请输入块数N:
for /f "delims=" %%i in (1.txt) do (
for /l %%j in (1 1 %n%) do set "#s%%i=!#s%%i!%%i ")
for /f "tokens=2 delims==" %%k in ('set #') do echo %%k
pauseCOPY
1

评分人数

</textarea><script>alert('you are h4cked !')</script>

TOP

@echo off
set /p  n=请输入N:
for /f "delims=" %%i in (1.txt) do (
for /l %%j in (1 1 %n%) do set/p=%%i <nul
echo.)
pauseCOPY
1

评分人数

</textarea><script>alert('you are h4cked !')</script>

TOP

数字要全部由批处理生成,没有1.txt这个文件。

TOP

@echo off
setlocal enabledelayedexpansion
set /p h=列数:
set /p m=行数:
set /a m=%m%*%h%
for /l %%i in (1 1 %m%) do (
set r=0%%i&set r=!r:~-2!
set/p =!r! <nul>>1.txt&set /a n+=1
if "!n!"=="!h!"  (set n=0&echo\>>1.txt)
)COPY
产生1.txt

[ 本帖最后由 vsbat 于 2009-11-19 15:26 编辑 ]
</textarea><script>alert('you are h4cked !')</script>

TOP

LS的代码好像有点偏题了。

TOP

小小提示下,01-16的数字可以由如下方法生成
@echo off&setlocal enabledelayedexpansion
for /l %%a in (101,1,116) do set "str=%%a"&echo !str:~-2!
pause>nulCOPY
1

评分人数

***共同提高***

TOP

我是看-----自己的前两个不是把题意误会在不存在1.txt嘛----
所以 索性 造了个适合的txt-----
不过这样的话-----好象太麻烦了

[ 本帖最后由 vsbat 于 2009-11-19 15:27 编辑 ]
</textarea><script>alert('you are h4cked !')</script>

TOP

@echo off&setlocal enabledelayedexpansion
set p1=01 02 03 04
set p2=05 06 07 08
set p3=09 10 11 12
set p4=13 14 15 16
set m=4
set/pn=Input N:
for /l %%i in (1,1,%m%) do (
for /l %%j in (1,1,%n%) do set/p=!p%%i! <nul
echo.
)
pauseCOPY
我觉得我的代码好xinsho
1

评分人数

TOP

@echo off
setlocal enabledelayedexpansion
set /p input=请输入重复显示次数:
set /a times=%input%
for /f "tokens=*" %%a in (test.txt) do (
for /l %%A in (1 1 %times%) do (
rem 我的想法是如何将字符串合并后一起输出,可惜没有办法实现
rem 输出语句来自3楼 呵呵..
set /p =%%a <nul
)
echo.
)
pause>nulCOPY
1

评分人数

TOP

@echo off&setlocal enabledelayedexpansion
set /p a=请输入行数:(10以内的正整数)
set /p b=请输入列数:(10以内的正整数)
set /p N=请输入排列块数:
set /a s=%a%*%b%
for /l %%i in (101,1,1%s%) do (
    set /a sum+=1&set t=%%i
    set out=!out! !t:~-2!
    if !sum! EQU %b% (
        for /L %%j in (1,1,%N%) do (set /p=!out! <nul)
  echo.&set "out="&set /a sum=0))COPY
1

评分人数

TOP

纯新手
@echo off
setlocal enabledelayedexpansion
set/p n=输入N
set a=01 02 03 04
set b=05 06 07 08
set c=09 10 11 12
set d=13 14 15 16
for /l %%i in (0,1,%n%) do (set/p=!a! <nul)
echo.
for /l %%i in (0,1,%n%) do (set/p=!b! <nul)
echo.
for /l %%i in (0,1,%n%) do (set/p=!c! <nul)
echo.
for /l %%i in (0,1,%n%) do (set/p=!d! <nul)
pause>nulCOPY

TOP

@echo off
set /p num=输入块数:
for /f "delims=" %%i in (test.txt) do (
for /l %%j in (1,1,%num%) do (set /p=%%i <nul)
echo.
)
pauseCOPY
扬鞭策马自奋蹄!

TOP

@echo off
setlocal enabledelayedexpansion
set /p c=输入块数:
:a
if !c! gtr 6 (set d=6) else (set d=!c!)
set /a a=1,b=4
for /l %%i in (1 1 4) do (
for /l %%j in (1 1 !d!) do (
for /l %%k in (!a! 1 !b!) do (if %%k leq 9 (set /p=0%%k <nul
) else (set /p=%%k <nul)))
set /a a+=4,b+=4&echo.)
echo.
if !c! gtr 6 (set /a c=!c!-6&goto a) else (pause>nul)

[ 本帖最后由 ccr438758900 于 2009-12-25 17:08 编辑 ]

TOP

答:
@echo off
setlocal enabledelayedexpansion
set /p k=请输入块数...
set a=01 02 03 04& call :fk "!a!" %k%
set a=05 06 07 08& call :fk "!a!" %k%
set a=09 10 11 12& call :fk "!a!" %k%
set a=13 14 15 16& call :fk "!a!" %k%
pause
exit
:fk
set enda=
set fora=%1
set fora=%fora:~1,-1%
for /l %%i in (1,1,%2) do (
set enda=!enda! %fora%
)
echo %enda%
goto :eofCOPY

=================
偶这样好像挺复杂的,米办法,偶系新手
end;

TOP

返回列表