标题: [数值计算] 显示10000以内的完全平方数 [打印本页]
作者: 嘟嘟猪 时间: 2008-10-3 13:28 标题: 显示10000以内的完全平方数
我想用- @echo off
- for /l %%r in (1,1,100) do (
- set /a b=%%r*%%r
- echo %b%
- )
- pause
复制代码
显示10000以内的完全平方数,但结果却是“ECHO 处于关闭状态。”,请问这是怎么回事
作者: 嘟嘟猪 时间: 2008-10-3 13:45 标题: 回复 2楼 的帖子
请问变量b的前后加“!”是什么意思
作者: 嘟嘟猪 时间: 2008-10-3 13:53 标题: 回复 5楼 的帖子
原来如此!
谢了!
作者: batman 时间: 2008-10-3 17:23
可以这样:
- @echo off
- for /l %%r in (1,1,100) do (
- set /a b=%%r*%%r
- call,echo %%b%%
- )
- pause
复制代码
作者: pusofalse 时间: 2008-10-3 17:57
经测试,call调用或者call延迟都会存在效率问题。
如果在处理量多的情况下,建议用setlocal开启延迟。反之,处理量少时可以用call。
测试以下两段代码:- @echo off
- ::用setlocal 延迟
- set t=%time%
- setlocal enabledelayedexpansion
- for /l %%a in (1 1 100) do set "var=000%%a"&echo !var:~-3!
- call :time0 "%t%" "%time%" "ok"
- echo.&echo 耗时: %ok%
- pause&exit/b
-
- :time0 以下为封装部分。
- :: code 随风 @bbs.bathone.cn 2008-08-15
- setlocal&set /a n=0
- for /f "tokens=1-8 delims=.: " %%a in ("%~1:%~2") do (
- set /a n+=10%%a%%100*360000+10%%b%%100*6000+10%%c%%100*100+10%%d%%100
- set /a n-=10%%e%%100*360000+10%%f%%100*6000+10%%g%%100*100+10%%h%%100
- )
- set "n=%n:-=%"
- set /a s=n/360000,n=n%%360000,f=n/6000,n=n%%6000,m=n/100,n=n%%100
- set "ok=%s% 小时 %f% 分钟 %m% 秒 %n% 毫秒"
- endlocal&set "%~3=%ok%"&goto :eof
复制代码
- @echo off
- :: 用call延迟
- set t=%time%
- for /l %%a in (1 1 100) do set "var=000%%a"&call echo %%var:~-3%%
- call :time0 "%t%" "%time%" "ok"
- echo.&echo 耗时: %ok%
- pause&exit/b
-
- :time0 以下为封装部分。
- :: code 随风 @bbs.bathone.cn 2008-08-15
- setlocal&set /a n=0
- for /f "tokens=1-8 delims=.: " %%a in ("%~1:%~2") do (
- set /a n+=10%%a%%100*360000+10%%b%%100*6000+10%%c%%100*100+10%%d%%100
- set /a n-=10%%e%%100*360000+10%%f%%100*6000+10%%g%%100*100+10%%h%%100
- )
- set "n=%n:-=%"
- set /a s=n/360000,n=n%%360000,f=n/6000,n=n%%6000,m=n/100,n=n%%100
- set "ok=%s% 小时 %f% 分钟 %m% 秒 %n% 毫秒"
- endlocal&set "%~3=%ok%"&goto :eof
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |