[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]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

  1. @echo off
  2. set n=1
  3. set /p n=input a number!
  4. for /l %%i in (1,1,%n%) do (
  5.     set /a sum+=%%i
  6. )
  7. echo %sum%
  8. pause
复制代码
1

评分人数

TOP

说一下

set n=1这句在你的代码中没有起到作用,可以不加
区分数字跟其它字符可以用这个代码
  1. echo %n%|findstr "^[1-9][0-9]*$">nul
复制代码
不大可能的事也许今天实现,根本不可能的事也许明天会实现

TOP

原帖由 ieutk 于 2008-1-4 13:46 发表
说一下

set n=1这句在你的代码中没有起到作用,可以不加
区分数字跟其它字符可以用这个代码echo %n%|findstr "^[1-9][0-9]*$">nul

不明白为何要这样写?
echo %n%|findstr "^[0-9]*$">nul
这样不行么?
技术问题请到论坛发帖求助!

TOP

不明白为何要这样写?
echo %n%|findstr "^[0-9]*$">nul
这样不行么?


你这样写的话呢第一个字符就有可能是0

[ 本帖最后由 ieutk 于 2008-1-4 14:27 编辑 ]
不大可能的事也许今天实现,根本不可能的事也许明天会实现

TOP

原来是要排除0开头的.

[ 本帖最后由 随风 于 2008-1-7 12:34 编辑 ]
技术问题请到论坛发帖求助!

TOP

回复 2# 的帖子

应该设sum的初始值为0

set sum=0

TOP

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

TOP

echo %n%|findstr "^[1-9][0-9]*$">nul

经典

TOP

不太明白...呵呵.
一天天学习,一天天进步.

TOP

本人是刚接触BAT的,2楼可以解释一下您写这个BAT的方法吗?THANK YOU!!
不以物喜,不以己悲!!

TOP

@echo off    关闭回显
    set n=1      设置一个变量n ,他的值为1 (PS,这样设置没用~,这个变量没有用到~)
set /p n=input a number!     设置一个变量n..这个变量是交互形势的,就是说,是用户输入的数字

for /l %%i in (1,1,%n%) do (
    set /a sum+=%%i                  

for循环增加数字并且增加的数字相加 (1,1,%n%)中第一个1表示开始的数字,第二个表示以一个单位(即1,2,3,4....)这样子逐个增加,%n%结束的数字(就是用户输入的数字)set  /a=sum+=%%i  就是将循环的数字互相增加~

echo %sum%       显示最后的总和(即所有数的和)

pause              按任意键继续~

TOP

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

TOP

看我的代码

不用FOR也是一样的可以的



@echo  off

set  /a  a=0,c=0
:start
set  /a  a+=1,c=c+a
if  "%a%"=="100"   goto  end
goto  start
:end   
   echo.             %c%
pause

TOP

@echo  off
set  /p  n=请输入数据:
set  /a  c=0,a=0
:start
set  /a  a+=1, c=c+a
if  "%a%"=="%n%"   goto  end
goto  start
:end   
   echo.             %c%
pause

对于第二个问题,我在上面的做了些改变,但是不好解决错误输入的情形

TOP

返回列表