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

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

[复制链接]
发表于 2008-1-3 23:02:47 | 显示全部楼层 |阅读模式
计算从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
发表于 2008-1-3 23:09:29 | 显示全部楼层
  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
复制代码

评分

参与人数 1PB +4 收起 理由
ieutk + 4 不错

查看全部评分

发表于 2008-1-4 13:46:45 | 显示全部楼层
说一下

set n=1这句在你的代码中没有起到作用,可以不加
区分数字跟其它字符可以用这个代码
  1. echo %n%|findstr "^[1-9][0-9]*$">nul
复制代码
发表于 2008-1-4 13:59:24 | 显示全部楼层
原帖由 ieutk 于 2008-1-4 13:46 发表
说一下

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

不明白为何要这样写?
echo %n%|findstr "^[0-9]*$">nul
这样不行么?
发表于 2008-1-4 14:25:25 | 显示全部楼层
不明白为何要这样写?
echo %n%|findstr "^[0-9]*$">nul
这样不行么?


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

[ 本帖最后由 ieutk 于 2008-1-4 14:27 编辑 ]
发表于 2008-1-4 14:40:26 | 显示全部楼层
原来是要排除0开头的.

[ 本帖最后由 随风 于 2008-1-7 12:34 编辑 ]
发表于 2008-2-6 16:46:27 | 显示全部楼层

回复 2# 的帖子

应该设sum的初始值为0

set sum=0
发表于 2008-3-17 22:21:19 | 显示全部楼层
@echo off
for /l %%a in (1,1,100) do set /a b+=%%a
echo %b%
pause
发表于 2008-4-27 19:29:45 | 显示全部楼层
echo %n%|findstr "^[1-9][0-9]*$">nul

经典
发表于 2008-4-27 20:49:59 | 显示全部楼层
不太明白...呵呵.
发表于 2008-4-28 18:16:12 | 显示全部楼层
本人是刚接触BAT的,2楼可以解释一下您写这个BAT的方法吗?THANK YOU!!
发表于 2008-4-28 21:03:58 | 显示全部楼层
@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              按任意键继续~
发表于 2008-4-30 18:11:06 | 显示全部楼层
@echo off
set b=0
for /l %%i in (1 1 100) do (set /a b=b+%%i)
echo %b%
发表于 2008-5-5 22:45:17 | 显示全部楼层

看我的代码

不用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
发表于 2008-5-5 22:51:26 | 显示全部楼层
@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

对于第二个问题,我在上面的做了些改变,但是不好解决错误输入的情形
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 03:13 , Processed in 0.022500 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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