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

【程序24】题目:有一分数序列2/1,3/2,5/3……的和

题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。
          1.程序分析:请抓住分子与分母的变化规律。
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. ::原创:sjzong
  4. ::程序分析:每个数的分子是上一个数的分子与分母之和,分母为上一个数的分子
  5. ::fz为分子,fm为分母
  6. set fz=1
  7. set fm=1
  8. set qiuji=1
  9. set qiuhe=0
  10. echo 正在输出这二十个数……
  11. for /l %%i in (1 1 20) do (
  12. set /a c=!fm!
  13. set /a fm=!fz!
  14. set /a fz=!fz!+!c!
  15. echo !fz!^/!fm!
  16. set /a qiuji=!qiuji!*!fz!/!fm!
  17. set /a qiuhe=!qiuhe!+!fz!/!fm!
  18. )
  19. echo.
  20. echo 这二十个数的积为:!qiuji!
  21. echo 这二十个数的和为:!qiuhe!
  22. echo.
  23. pause
复制代码

[ 本帖最后由 sjzong 于 2009-4-7 00:56 编辑 ]

TOP

【程序37】题目:对10个数进行排序

题目:对10个数进行排序
1.程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换,
      下次类推,即用第二个元素与后8个进行比较,并进行交换。
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. ::原创:sjzong
  4. echo 请输入十个数字……
  5. ::读入10个数字,分别放在t1~t10内,并把数字合成一行,中间加个空格。
  6. set str=
  7. for /l %%a in (1 1 10) do (
  8. set /p t%%a=请输入%%a个数:
  9. set str=!str! !t%%a!
  10. )
  11. echo 排序前的数字序列是:!str!
  12. ::数字排序是采用选择排序的,取第1个数跟后面的9个数进行比较,大的话进行交换。
  13. ::然后取第2个数跟后面的8个数进行比较,大的进行交换,以此类推。
  14. for /l %%a in (1 1 9) do (
  15. set /a a=%%a+1
  16. for /l %%b in (!a! 1 10) do (
  17.   if !t%%a! gtr !t%%b! (
  18.    set /a temp=t%%a
  19.    set /a t%%a=t%%b
  20.    set /a t%%b=!temp!
  21.   )
  22. )
  23. )
  24. ::把排序后的数字排列出来
  25. set str=
  26. for /l %%a in (1 1 10) do (
  27. set str=!str! !t%%a!
  28. )
  29. echo 排序后的数字序列是:!str!
  30. pause
复制代码

[ 本帖最后由 sjzong 于 2009-4-7 01:00 编辑 ]

TOP

【程序37】题目:对10个数进行排序

题目:对10个数进行排序
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. ::原创:sjzong
  4. echo 请输入十个数字……
  5. ::读入10个数字,分别放在t1~t10内,并把数字合成一行,中间加个空格。
  6. set str=
  7. for /l %%a in (1 1 10) do (
  8. set /p t%%a=请输入%%a个数:
  9. set str=!str! !t%%a!
  10. )
  11. echo 排序前的数字序列是:!str!
  12. ::数字排序是采用冒泡排序的,每相邻的两个数进行比较,大的放在后面。
  13. ::要进行9趟比较,第1趟求出最大放在最后一个数…第9趟是剩下两个数进行比较
  14. ::其实t%%b代表相邻的前一个数,b代表相邻的后一个数,比较后进行交换
  15. for /l %%a in (1 1 9) do (
  16. set /a a=10-%%a
  17. for /l %%b in (1 1 !a!) do (
  18.   set /a c=%%b+1
  19.   set /a b=t!c!
  20.   if !t%%b! gtr !b! (
  21.    set /a temp=t%%b
  22.    set /a t%%b=t!c!
  23.    set /a t!c!=!temp!
  24.   )
  25. )
  26. )
  27. ::把排序后的数字排列出来
  28. set str=
  29. for /l %%a in (1 1 10) do (
  30. set str=!str! !t%%a!
  31. )
  32. echo 排序后的数字序列是:!str!
  33. pause
复制代码

[ 本帖最后由 sjzong 于 2009-4-7 00:59 编辑 ]

TOP

纠错了!【程序80】猴子分桃子,那个也是有错误的!

【程序80】
题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只
   猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了
   一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,
   问海滩上原来最少有多少个桃子?
答案:见44楼
44楼 这个程序也是错误的!正确的是如下:
  1. @echo off&setlocal EnableDelayedExpansion
  2. ::程序分析:这些桃子,每一只猴子来分的时候,把桃子的数量减一后必须是五的倍数!所以五只猴子来分,必须进行五次判断的!
  3. ::程序中的num是用来判断是否达到五次判断!
  4. ::原创:sjzong
  5. for /l %%i in (1 1 10000) do (
  6. set /a a=%%i
  7. set /a num=0
  8. for /l %%j in (1 1 5) do (
  9.   set /a b=!a!-1
  10.   set /a c=!b! %% 5
  11.   if !c! == 0 (
  12.   set /a a=!b!/5
  13.   set /a a=!a!*4
  14.   set /a num=!num!+1)
  15. )
  16. if !num!==5 (echo 最少要%%i只桃子 & goto :end)
  17. )
  18. :end
  19. pause
复制代码

[ 本帖最后由 sjzong 于 2009-4-5 14:44 编辑 ]

TOP

纠错了!!【程序21】猴子吃桃问题

【程序21】
题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个
   第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下
   的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
1.程序分析:采取逆向思维的方法,从后往前推断。
答案:见32楼
注意:32楼那个是错误的!那是先吃一个再吃一半的,所以公式a=2*a+1;而本题是先吃一半后再多吃一个,所以公式为a=2*(a+1)。
  1. @echo off&setlocal EnableDelayedExpansion
  2. ::程序分析: 注意是先吃一半再吃一个则公式是a=2*(a+1)
  3. ::原创:sjzong
  4. set num=1
  5. echo 第10天时有!num!个桃子
  6. for /l %%i in (9 -1 1) do (
  7. set /a num=!num!*2+2
  8. echo 第 %%i天时有!num!个桃子)
  9. pause
复制代码

[ 本帖最后由 sjzong 于 2009-4-5 14:44 编辑 ]

TOP

打印杨辉三角

  1. @echo off
  2. ::打印杨辉三角
  3. ::原创:sjzong
  4. setlocal enabledelayedexpansion
  5. set str= 1
  6. echo !str!
  7. for /l %%a in (1 1 9) do (
  8. ::求出上一个数列的相邻两个数的和。
  9. set num1=1
  10. for %%b in (!str!) do (
  11. ::num1是用来控制是相邻两数的前一个数%%i;num2为后一个数%%j
  12. set /a num1=!num1!+1
  13. set /a shu=!num1!+1
  14. set num2=1
  15. for %%c in (!str!) do (
  16. set /a num2=!num2!+1
  17. if !num2!==!shu! set /a sum=%%b+%%c
  18. )
  19. set str1=!str1! !sum!
  20. set sum=
  21. )
  22. ::在求出每相邻两数之和后,在前后各加上1
  23. set str=1!str1!1
  24. ::用来打印时在数字的前面加上空格
  25. set /a a=10-%%a
  26. set b=
  27. for /l %%d in (0 1 !a!) do (set b= !b!)
  28. set str=!b!!str!
  29. set str1=
  30. echo !str!
  31. )
  32. pause
复制代码
1

评分人数

    • tyc: 用num1、num2来控制上一行的相邻二数 用b来 ...PB + 2

TOP

这是新手做的吗··555555555我刚学。你们编写的那些我还要慢慢去理解每一句。每一符号的含义。
先收藏起来。慢慢的分析

TOP

题目:对10个数进行排序

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. ::原创:sjzong
  4. echo 请输入十个数字……
  5. set str=
  6. for /l %%a in (1 1 10) do (
  7. set /p shuzi=请输入%%a个数:
  8. set str=!str! !shuzi!
  9. )
  10. set zimu=ABCDEFGHIJ
  11. set ss=
  12. for %%b in (!str!) do (
  13. set count=0
  14. for %%c in (!str!) do if %%b geq %%c set /a count=!count!+1
  15. set /a count=!count!-1
  16. set ss=!ss! !count!
  17. )
  18. for /l %%d in (0 1 9) do (
  19. set cou=
  20. for %%e in (!ss!) do if %%d==%%e set /a cou=!cou!+1
  21. for /l %%f in (1 1 !cou!) do set num=!num! !zimu:~%%d,1!
  22. )
  23. for %%i in (!str!) do (
  24. set count=0
  25. for %%j in (!str!) do if %%i geq %%j set /a count=!count!+1
  26. set /a count=!count!-1
  27. if !count!==0 set num=!num:A=%%i!
  28. if !count!==1 set num=!num:B=%%i!
  29. if !count!==2 set num=!num:C=%%i!
  30. if !count!==3 set num=!num:D=%%i!
  31. if !count!==4 set num=!num:E=%%i!
  32. if !count!==5 set num=!num:F=%%i!
  33. if !count!==6 set num=!num:G=%%i!
  34. if !count!==7 set num=!num:H=%%i!
  35. if !count!==8 set num=!num:I=%%i!
  36. if !count!==9 set num=!num:J=%%i!
  37. )
  38. echo 你输入的十个数字是:!str!
  39. echo 排序后的十个数字是:!num!
  40. pause
复制代码

[ 本帖最后由 sjzong 于 2009-4-3 12:42 编辑 ]

TOP

求1、2、3、4个数字组成三位数

  1. @echo off
  2. ::有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
  3. ::原创:sjzong
  4. setlocal enabledelayedexpansion
  5. set num=0
  6. for /l %%i in (1 1 4) do (
  7. for /l %%j in (1 1 4) do (
  8.   for /l %%k in (1 1 4) do (
  9.    if %%i neq %%j if %%i neq %%k if %%k neq %%j (echo %%i%%j%%k & set /a num=!num!+1)
  10.   )
  11. )
  12. )
  13. echo !num!
  14. pause
复制代码

[ 本帖最后由 sjzong 于 2009-4-3 12:40 编辑 ]

TOP

【程序28】 (这题费了劲的,若对要给偶加分)

题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第
   3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后
   问第一个人,他说是10岁。请问第五个人多大?
1.程序分析:利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个人岁数,需知道
      第四人的岁数,依次类推,推到第一人(10岁),再往回推。
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set /a n=5
  4. set  b=
  5. call :loop 5
  6. echo 第五个人!b!岁
  7. pause>nul
  8. goto :eof
  9. :loop
  10. set /a n=%1
  11. set /a n-=1
  12. if !n!==0 (set /a b=10 & goto :eof) else (
  13. call :loop !n!
  14. set /a b+=2
  15. )
复制代码

[ 本帖最后由 irresolute 于 2009-2-25 16:34 编辑 ]

TOP

程序30 判断回文

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. :main
  4. set a=
  5. set /p a=请输入一个五位数
  6. if "!a:~0,1!"=="!a:~4,1!" (
  7. if "!a:~1,1!"=="!a:~3,1!"  (echo !a!是回文) else echo !a!不是回文
  8. ) else (
  9. echo !a!不是回文
  10. )
  11. pause>nul
  12. goto :main
复制代码

[ 本帖最后由 irresolute 于 2009-2-25 13:40 编辑 ]

TOP

【程序25】

【程序25】
题目:求1+2!+3!+...+20!的和
1.程序分析:此程序只是把累加变成了累乘。
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set /a s=0
  4. for /l %%i in (1,1,20) do (
  5. set /a k=%%i
  6. set /a s1=1
  7. for /l %%j in (1,1,!k!) do (
  8.    set /a s1*=%%j
  9. )
  10. set /a s+=!s1!
  11. )
  12. echo !s!&pause>nul
复制代码

TOP

【程序23】

【程序23】
题目:打印出如下图案(菱形)
*
***
******
********
******
***
*
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /l %%i in (1,2,7) do (
  4. set /a n=%%i
  5. for /l %%j in (1,1,!n!) do (
  6.    set /p=*<nul
  7.   )
  8. echo.
  9. )
  10. for /l %%i in (5,-2,1) do (
  11. set /a n=%%i
  12. for /l %%j in (1,1,!n!) do (
  13.    set /p=*<nul
  14.   )
  15. echo.
  16. )
  17. pause>nul
复制代码

TOP

【程序21】

【程序21】
题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set /a a=1
  4. for /l %%i in (1,1,9) do (
  5. set /a b=2*!a!+2
  6. set /a a=!b!
  7. )
  8. echo 第一天摘的桃子数是 !a!
  9. pause>nul
复制代码

TOP

【程序19】

【程序19】
题目:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程找出1000以内的所有完数
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /l %%i in (1,1,1000) do (
  4. set /a k=%%i
  5. set /a n=!k!/2
  6. set /a s=0
  7. for /l %%j in (1,1,!n!) do (
  8.    set /a kk=!k! %% %%j
  9.    if !kk!==0  set /a s+=%%j
  10. )
  11. if !s!==!k! echo !k!
  12. )
  13. pause>nul
复制代码

TOP

返回列表