中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: 计算1到100中所有奇数的和? 上一主题 | 下一主题
huzixuan
高级用户




积分 537
发帖 219
注册 2006-10-31
来自 芜湖
状态 离线
『楼 主』:  计算1到100中所有奇数的和?

如题,方法不限. 我该怎么写呢?

2006-12-22 07:41
查看资料  发短消息 网志   编辑帖子  回复  引用回复
a9319751
中级用户





积分 439
发帖 170
注册 2006-1-9
状态 离线
『第 2 楼』:  

@ECHO OFF
setlocal EnableDelayedExpansion
for /l  %%i in (1,2,99) do set /a num=!num!+%%i
echo !num!
pause



bat c c++
2006-12-22 07:48
查看资料  发送邮件  发短消息 网志  OICQ (5040366)  编辑帖子  回复  引用回复
qzwqzw
银牌会员

天的白色影子


积分 2342
发帖 635
注册 2004-3-6
状态 离线
『第 3 楼』:  

命令行输入

for /l  %i in (1,2,99) do set /a num+=%i

2006-12-22 07:54
查看资料  发短消息 网志   编辑帖子  回复  引用回复
jmz573515
银牌会员




积分 1212
发帖 464
注册 2006-12-13
状态 离线
『第 4 楼』:  

for i=1 to 99 step 2
b=b+i
next
msgbox b

'保存为VBS。

2006-12-22 07:59
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
huzixuan
高级用户




积分 537
发帖 219
注册 2006-10-31
来自 芜湖
状态 离线
『第 5 楼』:  

谢了 FOR又学会了点
不过 如何写 批处理文件 运算呢?
for /l %%i in (1 2 99) do set /a num+=%%i
不行啊??

[ Last edited by huzixuan on 2006-12-22 at 08:28 AM ]

2006-12-22 08:20
查看资料  发短消息 网志   编辑帖子  回复  引用回复
zh159
金牌会员




积分 3687
发帖 1467
注册 2005-8-8
状态 离线
『第 6 楼』:  

for /l %%i in (1,2,99) do set /a num+=%%i

你少了“,”号

2006-12-22 09:10
查看资料  发短消息 网志   编辑帖子  回复  引用回复
redtek
金牌会员





积分 2902
发帖 1147
注册 2006-9-21
状态 离线
『第 7 楼』:  

我也来一个另类计算的方法:)
@echo off
:: 计算 从 1 -- 9999 之间的奇数之和

echo 开始时间:%time%
set a=25  &&  set b=25
for /L %%i in (1,1,999) do ( set /a b+=50 && set /a a+=b )
echo %a%
echo 结束时间:%time% 
计算速度测试如下:
C:\TEMP\debug>r
开始时间:20:30:09.06
25000000
结束时间:20:30:09.10 
计算原理,真TMD费劲
  规律                       (列求和的值)
=========================================
  1   3   5   7   9                =  25  |
11  13  15  17  19                =  75  | 25+75=100
21  23  25  27  29                = 125    |
31  33  35  37  39                = 175    | 125+175=300

... ...                  |   
                      |
91  93  95  97  99                = 475

=========================================

根据奇数出现的行与列的规律,总结如下:


  1) 每行列相加的值会依次递增   50
  2) 每行的与每行间的同一列相差 10

根据以上推出公式如下:

  
  第1次部分公式推出:   [ 起始列的和 = (起始列的和 + 50) ] = 加第二行的和

  第2次所推出的公式:  25 + 50 * 总行数(总行数的偏移量从0开始)

              例:求第4行(1--40)之间的奇数,则:
                25 + 50 * (4-1) = 175


  第3次所推出的公式:  如何知道一个数有多少行?
              根据最上面的奇数过程的表,推出第行之间相差 10
              所以,一个最大要求奇数和的这个数的小数点向左移一位,例:

              如: 求 1 -- 1000 之间的奇数和 ,那么就有 100 行(小数点左移1位)
              按上面刚刚推出来的公式我们测试一下:
              公式: 25 + 50 * 总行数(总行数的偏移量从0开始)
                            代入: set /a !b+=50!+=b

             …………晕了
[ Last edited by redtek on 2006-12-21 at 08:37 PM ]

   此帖被 +5 点积分       点击查看详情   
评分人:【 9527 分数: +5  时间:2006-12-23 00:28




    Redtek,一个永远在网上流浪的人……

_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._
2006-12-22 09:32
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
scriptor
银牌会员




积分 1187
发帖 555
注册 2006-12-21
状态 离线
『第 8 楼』:  Sum_Of_Prime

Rewrite it to your .txt file and Rename it as Sum.bat.
Then run it, you will get the answer!

@echo off

for /l %%a in (1,2,100) do (
       (set /a sum_of_prime+=%%a )
)
echo sum_of_prime= %sum_of_prime% !

@pause

In CMD-Line , you can just type

(for /l %a in (1,2,100) do (@ set /a Sum_of_Prime+=%a ) &cls)
& echo %Sum_Of_Prime%

It will return the last result and
So, There is not anything else what you don't want to see.

Have a Try!

2006-12-22 09:47
查看资料  发短消息 网志   编辑帖子  回复  引用回复
scriptor
银牌会员




积分 1187
发帖 555
注册 2006-12-21
状态 离线
『第 9 楼』:  Zan

You are truely Bang!

2006-12-22 09:48
查看资料  发短消息 网志   编辑帖子  回复  引用回复
ccwan
金牌会员




积分 2725
发帖 1160
注册 2006-9-23
来自 河北廊坊
状态 离线
『第 10 楼』:  



  Quote:
Originally posted by zh159 at 2006-12-22 09:10:
for /l %%i in (1,2,99) do set /a num+=%%i

你少了“,”号

可以不加逗号的.

   此帖被 +1 点积分    点击查看详情   
评分人:【 PPdos 分数: +1  时间:2006-12-26 19:43




三人行,必有吾师焉。   学然后知不足,教然后知困,然后能自强也。
2006-12-22 21:08
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
9527
银牌会员

努力做坏人


积分 1185
发帖 438
注册 2006-8-28
来自 北京
状态 离线
『第 11 楼』:  

其实for /l %i in (1,1,99) do @echo %i 括号中间的分隔号有多种
形式如下:
for /l %i in (1,1,99) do @echo %i
for /l %i in (1 1 99) do @echo %i
for /l %i in (1;1;99) do @echo %i
for /l %i in (1=1=99) do @echo %i
for /l %i in (1<tab>1<tab>99) do @echo %i  <tab>----tab键

   此帖被 +14 点积分     点击查看详情   
评分人:【 namejm 分数: +4  时间:2006-12-22 22:19
评分人:【 ccwan 分数: +5  时间:2006-12-22 22:54
评分人:【 redtek 分数: +5  时间:2006-12-26 21:46




我今后在论坛的目标就是做个超级坏人!!!
2006-12-22 22:13
查看资料  发短消息 网志  OICQ (329429)  编辑帖子  回复  引用回复
namejm
荣誉版主

batch fan


积分 5226
发帖 1737
注册 2006-3-10
来自 成都
状态 离线
『第 12 楼』:  

  9527 兄依然在孜孜不倦地研究各种技巧,往往能收到出其不意或简洁高效的效果,赞赏。



尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
2006-12-22 22:21
查看资料  发短消息 网志   编辑帖子  回复  引用回复
26933062
银牌会员





积分 2268
发帖 879
注册 2006-12-19
状态 离线
『第 13 楼』:  

@echo off
for /l %%i in (1 2 99) do set /a num+=%%i
echo %num%
pause
加上红色部分就可以了

2006-12-26 13:07
查看资料  发短消息 网志   编辑帖子  回复  引用回复
huzixuan
高级用户




积分 537
发帖 219
注册 2006-10-31
来自 芜湖
状态 离线
『第 14 楼』:  

厉害。

2007-1-26 21:27
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: