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

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

计算从1到100的数字之和
要求:
不能直接echo,必须用程序计算出结果;

拓展提高:计算1+2+3+4+....+n=?
这里的n为用户输入的数字。

请用code标签把代码部分首尾括起来。

Q: 如何用code把代码扩起来?
A: http://bbs.bathome.net/thread-404-1-1.html

参考:批处理之家论坛使用常见问题FAQ
http://bbs.bathome.net/thread-3473-1-1.html

回复 156# 唯尘


    call是多余的,在这个代码里面没有任何用处,可以去掉。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

@echo off
for /l %%i in (1 1 100) do (
        call set /a a=a+%%i
)
echo %a%
pause>nul

TOP

回复 151# 唯尘
  1. @echo off
  2. for /l %%i in (1 1 100) do (
  3.     set /a Sum=Sum+%%i
  4. )
  5. echo %Sum%
  6. pause
复制代码
set /a放在for循环内部计算的时候,如果自定义变量需要出现在等号右边,可以不加百分号或感叹号,这样就不必显式的开启变量延迟扩展了。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 153# 唯尘
  1. @echo off
  2. :sc_start
  3. set /a ThisNum+=1
  4. set /a Sum+=ThisNum
  5. if not %ThisNum%==100 (
  6.     goto :sc_start
  7. )
  8. :end
  9. echo %Sum%
  10. pause
复制代码
1、尽可能的使用有意义的变量名。
2、set /a 计算的时候,等号右边的变量可以不加百分号。
3、在这个特定场景下if命令的else可以省略。
4、除了非常特殊的情况,尽量不使用&把多个命令写在同一行。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

@echo off
:sc_start
set /a a+=1
set /a c+=%a%
if %a%==100 (goto end) else (goto sc_start)
:end
echo %c%&pause>nul

TOP

@echo off
set summ=0
for /l %%i in (1 1 100) do (
        set /a summ+=%%i
)
echo %summ%&pause>nul

TOP

@echo off
setlocal enabledelayedexpansion
for /l %%i in (1 1 100) do (
    set /a summ=!summ!+%%i
)
echo %summ%&pause>nul

TOP

@echo off
:sc_start
set /a a+=1
set /a sum+=%a%
if not "%a%"=="100" goto sc_start
echo %sum%
pause

TOP

@echo off
for /l %%i in (1,1,100) do set /a a=a+%%i
echo %a%
pause

TOP

@Echo off
for /l %%i in (1,1,100) do set /a n+=%%i
ECHO %n%
pause

TOP

@echo off
:n
set /a a+=1,b+=a
if "%a%"=="100" goto :end
goto :n
:end
echo 求和结束,结果是%b%
pause>nul

@echo off
:n
set /p m=请输入需要参与求和最大值:
set /a a+=1,b+=a
if "%a%"=="%m%" goto :end
goto :n
:end
echo 求和结束,结果是%b%
pause>nul

TOP

@echo off
setlocal enabledelayedexpansion
set /p n=请输入需要求和的最大数:
for /l %%i in (1,1,%n%) do (
        set a=%%i
        set /a summ=summ+!a!
)
echo %summ%
pause>nul

TOP

@echo off
setlocal enabledelayedexpansion
for /l %%i in (1,1,100) do (
        set a=%%i
        set /a summ=summ+!a!
)
echo %summ%
pause>nul

TOP

本帖最后由 impk 于 2019-8-31 22:26 编辑
  1. @echo off & setlocal enabledelayedexpansion
  2. for /l %%i in ( 1,1,100 ) do ( set /a n=%%i && set /a sum=!sum!+%%i )
  3. echo !sum!
复制代码

TOP

返回列表