试试:- @echo off
- :bgn
- set input=&set /p input=请输入3以上的单数(回车退出):
- if not defined input goto :eof
- cls
- if %input% lss 3 (echo.你输入的也太小了吧...&goto :bgn)
- echo.%input:~-1%|findstr "[^13579]" >nul&&(echo.请输入单数...&goto :bgn)
- set /a num1=(%input%*%input%+1)*%input%/2,num2=%input%*%input%
- echo.%input%阶幻方各行,列以及对角线相加的和为:%num1%
- set /a lie=%input%/2+1,hang=1,all=1
- set h1l%lie%=1
- :agn
- set /a hang-=1,lie+=1,all+=1
- if %hang% lss 1 set hang=%input%
- if %lie% gtr %input% set lie=1
- if defined h%hang%l%lie% (set /a hang+=2,lie-=1)
- set h%hang%l%lie%=%all%
- if "%hang%"=="1" (
- if "%lie%"=="%input%" (
- set /a hang+=1,all+=1
- call set h%%hang%%l%lie%=%%all%%
- )
- )
- if %all% equ %num2% goto :show
- goto :agn
- :show
- for /l %%a in (1 1 %input%) do (
- for /l %%b in (1 1 %input%) do (
- call set/p=%%h%%al%%b%% <nul
- set "h%%al%%b="
- )
- echo.
- )
- goto :bgn
复制代码
|