|
6622186
高级用户
积分 894
发帖 411
注册 2007-2-17
状态 离线
|
『楼 主』:
for 加 set /a 能否实现开方
for 加 set /a 能否实现开方
|
@set c= 不知则觉多,知则觉少,越知越多,便觉越来越少. --- 知多少.
@for,/l,%%i,in,(1,1,55)do,@call,set/p=%%c:~%%i,1%%<nul&ping/n 1 127.1>nul
|
|
2007-3-15 09:22 |
|
|
vkill
金牌会员
积分 4103
发帖 1744
注册 2006-1-20 来自 甘肃.临泽
状态 离线
|
|
2007-3-16 01:32 |
|
|
namejm
荣誉版主
batch fan
积分 5226
发帖 1737
注册 2006-3-10 来自 成都
状态 离线
|
『第
3 楼』:
可以实现简单的开方,但是效率不怎么样,并且只限于存在整数次方根的情况,当然,超过2^31-1的数字就不行了。基本思路就是:如果对x开n次方,则从2开始到x/n的整数止,对每个数进行测试,只到找到为止,代码如下:
@echo off
setlocal enabledelayedexpansion
:Main
cls
set x=
set n=
set /p x= 请输入被开方的数:
set /p n= 请输入开方次数:
set /a mod=%n%%%2
if %x% equ 1 (
echo.
echo %x% 的 %n% 次方根是 1
echo.
pause
goto Main
)
set /a quotient=x/n
set flag=
for /l %%i in (2,1,%quotient%) do (
set num=%%i
for /l %%j in (2,1,%n%) do (
set /a num=%%i*!num!
)
if !num! equ %x% (
echo.
if %mod% equ 0 (
echo %x% 的 %n% 次方根是 ±%%i
) else echo %x% 的 %n% 次方根是 %%i
echo.
set flag=1
goto end
)
)
:end
if not defined flag (
echo.
echo %x% 的 %n% 次方根不是整数
echo.
)
pause
goto Main [ Last edited by namejm on 2007-3-16 at 01:02 PM ]
|
尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。 |
|
2007-3-16 02:30 |
|
|
6622186
高级用户
积分 894
发帖 411
注册 2007-2-17
状态 离线
|
『第
4 楼』:
还不错, 不过当被开方数为负数会提示错误, 如 -27 3
|
@set c= 不知则觉多,知则觉少,越知越多,便觉越来越少. --- 知多少.
@for,/l,%%i,in,(1,1,55)do,@call,set/p=%%c:~%%i,1%%<nul&ping/n 1 127.1>nul
|
|
2007-3-21 03:15 |
|
|
3dnowex
初级用户
积分 41
发帖 20
注册 2007-3-5
状态 离线
|
『第
5 楼』:
回去翻一下微积分的书,重点看麦克劳林级数,再利用for循环和set/a 运算
|
|
2008-7-31 21:55 |
|
|
523066680
银牌会员
SuperCleaner
积分 2362
发帖 1133
注册 2008-2-2
状态 离线
|
|
2008-7-31 21:59 |
|
|
pusofalse
银牌会员
积分 1604
发帖 646
注册 2008-4-13
状态 离线
|
『第
7 楼』:
变化的只是头脑,来个简单的。
@echo off&setlocal enabledelayedexpansion
for /l %%a in (1 1 100) do (
set/a n=%%a*%%a
set ..!n!=%%a * %%a = !n!
)
set/p var=Input:
if defined ..%var% echo !..%var%!
pause>nul 10000以内。。。
[ Last edited by pusofalse on 2008-7-31 at 11:46 PM ]
|
心绪平和,眼藏静谧,无比安稳的火... Purification of soul...Just a false...^_^ |
|
2008-7-31 23:45 |
|
|