找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
楼主: youxi01

批处理计算1+2+3+4+...+100=?

[复制链接]
发表于 2008-8-19 17:55:26 | 显示全部楼层
@echo off
:a
set a=0
set /p n=请输入加到几
for /l %%i in (1,1,%n%) do set /a a+=%%i
echo %a%
pause&cls&goto a
发表于 2008-8-21 09:17:56 | 显示全部楼层
1+2+3+4+...+100=?
5050   小学题
发表于 2008-8-21 09:20:44 | 显示全部楼层

回复 2楼 的帖子

第二次计算,是第一次的结果加上第二次的结果,有问题
发表于 2008-8-21 09:22:57 | 显示全部楼层
原帖由 yycup1111 于 2008-8-19 17:55 发表
@echo off
:a
set a=0
set /p n=请输入加到几
for /l %%i in (1,1,%n%) do set /a a+=%%i
echo %a%
pause&cls&goto a






正确答案
发表于 2008-8-21 10:55:31 | 显示全部楼层
不用for,不用goto,不用递归,最最简单的方法,哈哈
还有比这更简单的思路吗??
@echo off
set /p n=请输入加到几?
set/a a=(1+n)*n/2
echo %a%
pause

评分

参与人数 2PB +5 收起 理由
firewolf85 + 4 当N很大时的确很节省资源
youxi01 + 1 呵呵,纯粹变成数学了!

查看全部评分

发表于 2008-9-1 18:54:21 | 显示全部楼层
呵呵
做新手这么久了,还没回答问题啊!
现在就奉上我的答案!
  1. @echo off&setlocal EnableDelayedExpansion
  2. set a=0
  3. set /p n=请输入:
  4. for /l %%i in (1 1 %n%) do (
  5.     set /a a+=%%i
  6. echo !a!
  7. )
  8. pause>nul
复制代码

[ 本帖最后由 wangwei4106 于 2008-9-1 18:56 编辑 ]

评分

参与人数 1PB +1 收起 理由
youxi01 + 1 似乎没必要开启延迟

查看全部评分

发表于 2008-9-2 09:47:26 | 显示全部楼层
想了半天,没有做出来,只能看一下大家的思路了
发表于 2008-9-5 11:19:28 | 显示全部楼层
@echo off
set /a sun=0
FOR /L %%i IN (1,1,100) DO set /a sun+=%%i
echo %sun%
pause
发表于 2008-9-6 09:47:44 | 显示全部楼层
  1. @echo off
  2. set/p a1=头项
  3. set/p a2=末项
  4. set/p a3=相邻两个数之差

  5. set /a n=(%a2%-%a1%)/%a3%+1
  6. set /a n1=(%a1%+%a2%)*%n%/2
  7. echo %n1%&pause

  8. for /l %%a in (%a1% %a3% %a2%) do (set /a z+=%%a)
  9. echo %z%&pause
复制代码


支持间距两数之差为任意实数...

PS:算法很弱智...

[ 本帖最后由 qq641255849 于 2008-9-6 13:05 编辑 ]
发表于 2008-9-8 12:48:50 | 显示全部楼层
  1. @ echo off
  2. for /l %%i in (1,1,100) do (set /a sum+=%%i)
  3. echo 从1到100的数字之和是:%sum%
  4. pause>nul
  5. set sum=0
  6. set /p input=随意输入壹个数字:
  7. for /l %%i in (1,1,%input%) do (set /a sum+=%%i)
  8. echo 从1一直加到你输入的数字之和是:%sum%
  9. pause>nul
复制代码
发表于 2008-9-9 10:57:47 | 显示全部楼层

我的做法

@echo off
set /p n=


set /a sum=(1+%n%)*%n%/2
echo %sum%
发表于 2008-9-9 19:17:09 | 显示全部楼层
@echo off
set/p n="n等于?  "
set/a s=1
set/a y=1
:d
set/a y=%y%+1
set/a s=%s%+%y%
if %y%==%n% goto p
goto d
:p
echo %s%
pause
发表于 2008-9-12 10:50:54 | 显示全部楼层
@echo off
echo 计算1+2+3+......+n
set sum=0
set /p a=请输入n:

setlocal EnableDelayedExpansion
for /l %%i in (1,1,%a%) do (
        set val=%%i
        set /a sum=!!sum!+!val!!
)
echo 1+2+3+......+%a%=!sum!
endlocal

set sum=
set val=
set a=

pause
----------------------------------------------
看了看别人的代码,for /l %%i in (1,1,%input%) do (set /a sum+=%%i)
为什么这个时候可以不用延时变量?sum难道不是在预处理中就替换了的?
希望有高人解释解释

[ 本帖最后由 batbird 于 2008-9-12 10:57 编辑 ]
发表于 2008-9-15 13:41:18 | 显示全部楼层
  1. @echo off
  2. :hk
  3. set/p n=输入一个数:
  4. set/a m=(1+%n%)*%n%/2
  5. cls
  6. echo %m%
  7. goto hk
复制代码
发表于 2008-10-14 20:57:23 | 显示全部楼层
看看啊..   ..............看看
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 05:25 , Processed in 0.023636 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表