批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程
[批处理文件精品]批处理版照片整理器[批处理文件精品]纯批处理备份&还原驱动在线第三方下载
返回列表 发帖
程序8
  1. @echo off
  2. Setlocal enabledelayedexpansion
  3. for /l %%i in (1 1 9) do (
  4. set times=1
  5. for /l %%j in (1 1 %%i) do (
  6. set /a ans=%%i*%%j
  7. if not !times!==%%i (
  8. set /p =%%ix%%j=!ans!  <nul
  9. ) else (
  10. echo %%ix%%j=!ans!
  11. )
  12. set  /a times+=1
  13. )
  14. )
  15. pause>nul
复制代码

TOP

程序9
  1. @echo off
  2. SetLocal EnableDelayedExpansion
  3. for /l %%i in (1 1 8) do (
  4. for /l %%j in (1 1 8) do (
  5. set /a num=%%i+%%j,num%%=2
  6. if !num!==1 (set /p =■<nul) else (set /p =□<nul)
  7. )
  8. echo;
  9. )
  10. pause>nul
复制代码

TOP

程序11
  1. @echo off
  2. Setlocal enabledelayedexpansion
  3. set /a R0=1,R1=1
  4. set /p month=Please enter the month:
  5. for /l %%i in (2 1 %month%) do (
  6. set /a af=%%i-1,ag=%%i-2
  7. set /a R%%i=R!af! + R!ag!
  8. )
  9. echo !R%month%!
  10. pause>nul
复制代码
貌似超过45就不对了,如果要更多的话得专门写个无限数位加法了

TOP

程序12
  1. @echo off
  2. SetLocal EnableDelayedExpansion
  3. for /l %%i in (101,2,200) do (
  4. set num=%%i
  5. call :judge
  6. )
  7. pause>nul
  8. :judge
  9. set times=2
  10. for /l %%a in (1,1,3) do (
  11. set /a times+=%%i/times
  12. set /a times/=2
  13. )
  14. for /l %%j in (3,2,%times%) do (
  15. set /a value=%%i %% %%j
  16. if !value!==0 goto :eof
  17. )
  18. echo %num%
复制代码
用了牛顿迭代法开平方  感觉效率还可以

TOP

程序13
  1. @echo off
  2. Setlocal enabledelayedexpansion
  3. for /l %%a in (1 1 9) do (
  4. for /l %%b in (0 1 9) do (
  5. for /l %%c in (0 1 9) do (
  6. set /a jud=%%a*%%a*%%a+%%b*%%b*%%b+%%c*%%c*%%c
  7. if !jud!==%%a%%b%%c echo !jud!
  8. )
  9. )
  10. )
  11. pause>nul
复制代码

TOP

本帖最后由 shelluserwlb 于 2014-11-17 10:15 编辑

  1. @echo off
  2. goto :start
  3. 程序4
  4. 题目:输入某年某月某日,判断这一天是这一年的第几天?
  5. 程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊
  6.       情况,闰年且输入月份大于3时需考虑多加一天。
  7. :start
  8. color 9f
  9. setlocal EnableDelayedExpansion
  10. set /a total=0
  11. set /a f=0
  12. set /p ndate=输入年月日(例: 2014.11.10):
  13. ::从输入的信息获取年、月、日
  14. for /f "tokens=1,2,3 delims=." %%i in ("%ndate%") do (
  15.     set /a nyear=%%i
  16.     set /a nmonth=%%j
  17.     set /a nday=%%k
  18.     if "!nmonth:~0,1!" == "0" set nmonth=!nmonth:~1,1!
  19.     if "!nday:~0,1!" == "0" set nday=!nday:~1,1!
  20. )
  21. ::判断该年是平年或闰年
  22. set /a t1=%nyear%%%400
  23. set /a t2=%nyear%%%4
  24. set /a t3=%nyear%%%100
  25. if %t1% equ 0 set /a f=1
  26. if %t2% equ 0 (if %t3% neq 0 set /a f=1)
  27. ::根据所输入的月份计算总天数
  28. if "%nmonth%" == "1" (set /a total=0+%nday% & goto :1 )
  29. if "%nmonth%" == "2" (set /a total=31+%nday% & goto :1 )
  30. if "%nmonth%" == "3" (set /a total=59+%f%+%nday% & goto :1 )
  31. if "%nmonth%" == "4" (set /a total=90+%f%+%nday% & goto :1 )
  32. if "%nmonth%" == "5" (set /a total=120+%f%+%nday% & goto :1 )
  33. if "%nmonth%" == "6" (set /a total=151+%f%+%nday% & goto :1 )
  34. if "%nmonth%" == "7" (set /a total=181+%f%+%nday% & goto :1 )
  35. if "%nmonth%" == "8" (set /a total=212+%f%+%nday% & goto :1 )
  36. if "%nmonth%" == "9" (set /a total=243+%f%+%nday% & goto :1 )
  37. if "%nmonth%" == "10" (set /a total=273+%f%+%nday% & goto :1 )
  38. if "%nmonth%" == "11" (set /a total=304+%f%+%nday% & goto :1 )
  39. if "%nmonth%" == "12" (set /a total=334+%f%+%nday% & goto :1 )
  40. :1
  41. ::输出计算结果
  42. if %total%==0 (
  43.     echo 输入日期信息错误,请重新输入!& pause>nul
  44.     cls & goto :START
  45. ) else (
  46.     echo %nyear%年%nmonth%月%nday%日是该年的第%total%天。
  47. )
  48. endlocal
  49. pause>nul
复制代码

TOP

本帖最后由 shelluserwlb 于 2014-11-17 10:23 编辑
  1. @echo off
  2. goto :start
  3. 程序11
  4. 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月
  5.    后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
  6. 程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21...
  7. :start
  8. setlocal EnableDelayedExpansion
  9. set /a f1=1
  10. set /a f2=1
  11. set /p nt=请入月数:
  12. echo 第1个月:1对兔子 & if "%nt%" == "1"  goto :1
  13. echo 第2个月:1对兔子 & if "%nt%" == "2"  goto :1
  14. for /l %%i in (3,1,%nt%) do (
  15.     set /a f3=!f1!+!f2!
  16.     set /a f1=!f2!
  17.     set /a f2=!f3!
  18.     echo 第%%i个月:!f3!对兔子  
  19. )
  20. :1
  21. endlocal
  22. echo 统计完毕!& pause>nul
复制代码

TOP

本帖最后由 pan528 于 2015-4-25 22:53 编辑

回复 1# huajinghua

仔细看了一下,并运行了全部程序,有下面两个主要问题:
一、【程序67】还没有人做过,希望高手能显身。
题目:输入一个数,最大的与第一个元素交换,最小的与最后一个元素交换,然后输出。
二、【程序81】,有两位做了,一个是找不到数字,一个我验算了一下,答案不对,如果两位数是12,12*809≠800*12+9*12+1。不知是题目有问题,还是算法有问题……
题目:809*??=800*??+9*??+1 其中??代表的两位数,8*??的结果为两位数,9*??的结果为3位数。求??代表的两位数,及809*??后的结果。

全部26个题目及解法批命令如下:

附件: 您需要登录才可以下载或查看附件。没有帐号?注册

TOP

本帖最后由 pcl_test 于 2015-4-26 10:21 编辑

回复 179# pan528
【程序67】题意说明不清,有歧义
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set /p num=请输入一个至少2位的正整数:
  4. set "$=%num%#"
  5. set N=&for %%a in (4096 2048 1024 512 256 128 64 32 16) do if !$:~%%a!. NEQ . set /a N+=%%a & set $=!$:~%%a!
  6. set $=!$!fedcba9876543210 & set /a N+=0x!$:~16,1! & set /a N-=1
  7. set "ft=!num:~,1!"
  8. set "lt=!num:~-1!"
  9. for /l %%i in (0,1,!N!) do (
  10. set _!num:~%%i,1!=!num:~%%i,1!
  11. )
  12. for /f "tokens=1* delims==" %%j in ('set _') do (
  13. if not defined m set "min=%%k"
  14. set "max=%%k"
  15. set /a m+=1
  16. )
  17. set "num=!num:~1,-1!ж"
  18. set "num=!num:%max%=%ft%!"
  19. set "num=!num:%min%=%lt%!"
  20. echo %max%!num:~,-1!%min%
  21. pause
复制代码
【程序81】题目有问题,不存在这样一个两位数使得809*??=800*??+9*??+1
1

评分人数

TOP

回复 180# pcl_test

测试通过了。
这样这个贴的题目都有解了。
作为一个旁观者也是高兴的。谢谢回帖!

TOP

程序1
  1. @echo off&setlocal enabledelayedexpansion
  2. set n=100
  3. for /l %%a in (1,1,4) do (
  4.     for /l %%b in (1,1,4) do (
  5.         for /l %%c in (1,1,4) do (
  6.             for /l %%d in (1,1,4) do (
  7.          if not %%a==%%b if not %%a==%%c if not %%a==%%d if not %%b==%%c if not %%b==%%d if not %%c==%%d if not defined _n set /a _!n!=%%a%%b%%c%%d&set /a t1+=1&set /a n+=1
  8.       )
  9.     )
  10.   )
  11. )
  12. for /f "tokens=2 delims==" %%a in ('set _') do echo;%%a
  13. echo;!t1!
  14. pause
复制代码
程序4
  1. @echo off&setlocal enabledelayedexpansion
  2. title 判断一年第几天
  3. :begin
  4. set /p d=输入某年某月末日(2015-08-05):
  5. set n=%d:~,4%
  6. set y=%d:~5,2%
  7. set r=%d:~8,2%
  8. if %y% gtr 12 echo;错误。&ping /n 3 127.1>nul&goto begin
  9. if %r% gtr 31 echo;错误。&ping /n 3 127.1>nul&goto begin
  10. if %y:~,1%==0 set y=%y:~1%
  11. if %r:~,1%==0 set r=%r:~1%
  12. set /a y1=%y%-2
  13. echo;%n%-%y%-%r%
  14. set /a n1=%n%%%400
  15. set /a n2=%n%%%100
  16. set /a n3=%n%%%4
  17. if %n1%==0 (
  18. set /a n=1
  19. ) else (
  20.   if not %n2%==0 (
  21.      if %n3%==0 (set /a n=1) else (set /a n=0)
  22. )
  23. )
  24. if %y%==1 echo;这是一年第%r%天。
  25. if not %y%==1 (
  26. if %y% gtr 1 set /a n+=1
  27. if %y% gtr 3 set /a n+=1
  28. if %y% gtr 5 set /a n+=1
  29. if %y% gtr 7 set /a n+=1
  30. if %y% gtr 8 set /a n+=1
  31. if %y% gtr 10 set /a n+=1
  32. if %y% gtr 12 echo;超过12个月了。&ping /n 3 127.1>nul&goto begin
  33. set /a t=%y1%*30+!n!+!r!+28
  34. echo;这是一年第!t!天。
  35. )
  36. pause
复制代码
程序8
  1. @echo off&setlocal enabledelayedexpansion
  2. title 九九乘法表
  3. for /l %%a in (1,1,9) do (
  4.     for /l %%b in (1,1,%%a) do (
  5.         set /a n=%%a*%%b
  6.         set /p=%%a*%%b=!n! <nul
  7.   )
  8. echo.
  9. )
  10. pause
复制代码
程序11
  1. @echo off&setlocal enabledelayedexpansion
  2. set /p num=几月份
  3. set /a n1=1
  4. set /a n2=0
  5. :a
  6. set /a n=%n1%+%n2%
  7. echo;%n%
  8. set /a n1=%n2%
  9. set /a n2=%n%
  10. set /a t+=1
  11. if %t%==%num% goto b
  12. goto a
  13. :b
  14. pause
复制代码
程序12
  1. @echo off&setlocal enabledelayedexpansion
  2. for /l %%a in (100,1,200) do (
  3.     set k=
  4.     set /a n=%%a-1
  5.     for /l %%b in (2,1,!n!) do (
  6.     set /a num=%%a%%%%b
  7.     if !num!==0 set /a k+=1
  8.   )
  9. if not defined k echo;%%a
  10. )
  11. pause
复制代码
程序13
  1. @echo off&setlocal EnableDelayedExpansion
  2. for /l %%a in (1,1,9) do (
  3.     for /l %%b in (0,1,9) do (
  4.         for /l %%c in (0,1,9) do (
  5.             set /a n1=%%a*%%a*%%a
  6.             set /a n2=%%b*%%b*%%b
  7.             set /a n3=%%c*%%c*%%c
  8.             set /a n=!n1!+!n2!+!n3!
  9.             if !n!==%%a%%b%%c echo;%%a%%b%%c
  10.     )
  11.   )
  12. )
  13. pause
复制代码
程序14
  1. @echo off&setlocal enabledelayedexpansion
  2. set num=1
  3. set /p n=请输入要分解的数
  4. :a
  5. set /a k2=%n%%%2
  6. set /a k3=%n%%%3
  7. if %num%==1 if not %k2%==0 if not %k3%==0 (echo;本身就是质数。)
  8. set /a num+=1
  9. if %k2%==0 set /a n=%n%/2&set z=%z%*2
  10. if not %k2%==0 if %k3%==0 set /a n=%n%/3&set z=%z%*3
  11. if not %k2%==0 if not %k3%==0 (set z=%z%*%n%&goto b)
  12. goto a
  13. :b
  14. echo;%z:~1%
  15. pause
复制代码
程序16
  1. @echo off&setlocal enabledelayedexpansion
  2. title 最大公约数和最小公倍数
  3. set /p m=请输入第一个数字:
  4. set /p n=请输入第二个数字:
  5. set /a a=%m%,b=%n%
  6. :a
  7. set /a y=%m%%%%n%
  8. if %y%==0 echo;%n%是最大公约数。&goto b
  9. set /a m=%n%,n=%y%
  10. goto a
  11. :b
  12. set /a num=%a%*%b%/%n%
  13. echo;%num%是最小公倍数。
  14. pause
复制代码
程序19
  1. @echo off&setlocal enabledelayedexpansion
  2. title 1000以内的所有完数
  3. set m=0
  4. for /l %%a in (1,1,1000) do (
  5. set m=
  6. set /a k=%%a-1
  7.     for /l %%b in (1,1,!k!) do (
  8.         set /a n=%%a%%%%b
  9.         if !n!==0 set /a m=!m!+%%b
  10.   )
  11. if %%a==!m! echo;%%a
  12. )
  13. pause
复制代码
程序20
  1. @echo off&setlocal enabledelayedexpansion
  2. set n=1000000000
  3. set num=1000000000
  4. :a
  5. set /a m=%n%/2
  6. set n=%m%
  7. set /a t+=1
  8. set /a num=%num%+%m%
  9. if %t%==10 goto b
  10. goto a
  11. :b
  12. for /l %%a in (0,1,20) do (
  13. if not "!num:~%%a,1!"=="" set /a t1+=1
  14. if not "!m:~%%a,1!"=="" set /a t2+=1
  15. )
  16. set /a t4=7-!t2!
  17. if !t4!==1 set t5=0
  18. if !t4!==2 set t5=00
  19. if !t4!==3 set t5=000
  20. if !t1! gtr 7 (
  21. set num1=!num:~-7!
  22. call,set num=%%num:!num1!=%%
  23. set /p=共经过!num!.!num1!米,<nul
  24. )
  25. if !t2! leq 7 (
  26. set /p=第10次反弹0.!t5!!m!。<nul
  27. )
  28. pause
复制代码
程序21
  1. @echo off&setlocal enabledelayedexpansion
  2. set n=1
  3. for /l %%a in (1,1,9) do (
  4.     set /a n=!n!*2+1
  5. )
  6. echo;!n!
  7. pause
复制代码
程序23
  1. @echo off&setlocal enabledelayedexpansion
  2. set n=*
  3. set t=1
  4. for /l %%a in (1,1,7) do (
  5. set /a num=%%a%%2
  6.     if %%a leq 4 (
  7.        echo;!n!
  8.        if %%a lss 4 if !num!==0 (set n=!n!***&set /a t+=3) else (set n=!n!**&set /a t+=2)     
  9.     )
  10.     if %%a gtr 4 (
  11.     if !num!==0 (set /a t-=3) else (set /a t-=2)
  12.     call,echo;%%n:~,!t!%%
  13.     )
  14. )
  15. pause
复制代码
程序25
  1. @echo off&setlocal enabledelayedexpansion
  2. set num=1
  3. set shuzi=0
  4. for /l %%a in (1,1,20) do (
  5. set num=
  6.     for /l %%b in (1,1,%%a) do (
  7.         set num=!num!*%%b
  8. )
  9. set /a num=!num:~1!
  10. set /a shuzi=!shuzi!+!num!
  11. )
  12. echo;!shuzi!
  13. pause
复制代码
程序30
  1. @echo off&setlocal enabledelayedexpansion
  2. titile 回文数
  3. for /l %%a in (1,1,9) do (
  4.     for /l %%b in (0,1,9) do (
  5.         for /l %%c in (0,1,9) do (
  6.             for /l %%d in (0,1,9) do (
  7.                 for /l %%e in (0,1,9) do (
  8. if %%a==%%e if %%b==%%d echo;%%a%%b%%c%%d%%e
  9.         )
  10.       )
  11.     )
  12.   )
  13. )
  14. pause
复制代码
程序37
  1. @echo off&setlocal enabledelayedexpansion
  2. title 排序
  3. set /p n1=输入第1个数字:
  4. set /p n2=输入第2个数字:
  5. set /p n3=输入第3个数字:
  6. set /p n4=输入第4个数字:
  7. set /p n5=输入第5个数字:
  8. set /p n6=输入第6个数字:
  9. set /p n7=输入第7个数字:
  10. set /p n8=输入第8个数字:
  11. set /p n9=输入第9个数字:
  12. set /p n10=输入第10个数字:
  13. for /l %%a in (0,1,10000000) do (
  14.     for /l %%b in (1,1,10) do (
  15.         if %%a==!n%%b! echo;%%a
  16.   )
  17. )
  18. pause
复制代码
程序69
  1. @echo off&setlocal enabledelayedexpansion
  2. set /p r=总人数:
  3. for /l %%a in (1,1,%r%) do (
  4. set /a n=%%a%%3
  5. if not !n!==0 set num=!num! %%a
  6. )
  7. for %%a in (!num!) do set shuzi=%%a
  8. echo;!shuzi!
  9. pause
复制代码
程序80
  1. @echo off&setlocal enabledelayedexpansion
  2. title 分桃子
  3. set /a n1=1,n2=1
  4. for /l %%a in (1,1,5) do (
  5.     set /a n1=!n1!*4
  6.     set /a n2=!n2!*5
  7. )
  8. echo;!n1!
  9. echo;-----*n
  10. echo;!n2!
  11. set /a n3=!n2!-4
  12. rem 因为n×!n1!/!n2!一定是整数,所以n最少是3125所以原来的桃子最少有:3125-4=3121(个)
  13. echo;原来的桃子最少有:!n3!个。
  14. pause
复制代码
程序83
  1. @echo off&setlocal enabledelayedexpansion
  2. title 求0—7所能组成的奇数个数
  3. for /l %%a in (0,1,7) do (
  4.     for /l %%b in (0,1,7) do (
  5.         for /l %%c in (0,1,7) do (
  6.             for /l %%d in (0,1,7) do (
  7.                 for /l %%e in (0,1,7) do (
  8.                     for /l %%f in (0,1,7) do (
  9.                         for /l %%g in (0,1,7) do (
  10.         set /a n=%%g%%2
  11.         if not !n!==0 if not defined _%%a if not defined _%%b if not defined _%%c if not defined _%%d if not defined _%%e if not defined _%%f if not defined _%%g (
  12.            set _%%a+=1&set _%%b+=1&set _%%c+=1&set _%%d+=1&set _%%e+=1&set _%%f+=1&set _%%g+=1
  13.            echo;%%a%%b%%c%%d%%e%%f%%g&set /a t+=1
  14.         )     
  15.       )
  16.      )
  17.     )
  18.    )   
  19.   )
  20. )
  21. )
  22. echo;!t!
  23. pause
复制代码
程序84
  1. @echo off&setlocal enabledelayedexpansion
  2. title 一个偶数总能表示为两个素数之和(1000以内)
  3. set /p shuzi=输入一个偶数:
  4. for /l %%a in (2,1,1000) do (
  5.     set t=0
  6.     set /a n=%%a-1
  7.     for /l %%b in (2,1,!n!) do (
  8.         set /a n1=%%a%%%%b
  9.         if !n1!==0 set /a t+=1
  10. )
  11. if !t!==0 set num=!num! %%a
  12. )
  13. for %%a in (!num:~1!) do (
  14.     for %%b in (!num:~1!) do (
  15.         set /a shuzi1=%%a+%%b
  16.         if !shuzi1!==!shuzi! echo;%%a %%b
  17. )
  18. )
  19. pause
复制代码
程序24
  1. @echo off&setlocal enabledelayedexpansion
  2. title 前20项的和
  3. set /a n1=2,n2=3,n3=1,n4=2
  4. set "num=%n1% %n2%"
  5. set "shuzi=%n3% %n4%"
  6. set qiuhe=2/1+3/2
  7. for /l %%a in (1,1,18) do (
  8.     set /a n=!n1!+!n2!
  9.     set /a n5=!n3!+!n4!
  10.     set "num=!num! !n!"
  11.     set "shuzi=!shuzi! !n5!"
  12.     set /a qiuhe=!qiuhe!+!n!/!n5!
  13.     set n3=!n4!&set n4=!n5!
  14.     set n1=!n2!&set n2=!n!
  15. )
  16. echo;分子:!num!
  17. echo;分母:!shuzi!
  18. echo;和为!qiuhe!
  19. pause
复制代码
程序67
  1. @echo off&setlocal enabledelayedexpansion
  2. set /p num=输入一个数字(不重复):
  3. for /l %%a in (0,1,10) do (
  4.     set n=100
  5.     set shuzi=!num:~%%a,1!
  6.     for /l %%b in (0,1,9) do (      
  7.         if %%b==!shuzi! (
  8.         set /a n=!n!+%%b
  9.         if not defined _n (
  10.         set /a _!n!+=1
  11.          )
  12.         )
  13.   )
  14. )
  15. for /f "tokens=1 delims==" %%a in ('set _') do (
  16. set k=%%a
  17. set k=!k:~-1!
  18. set /a t+=1
  19. if !t!==1 (set s=!k!)
  20. )
  21. set num3=%num:~0,1%
  22. set num4=%num:~-1%
  23. set num=%num:~1%
  24. call,set num=%%num:!num4!=%%
  25. call,set num=%%num:!k!=!num3!%%
  26. call,set num=%%num:!s!=!num4!%%
  27. echo;!k!!num!!s!
  28. pause
复制代码

TOP

程序69有误,不改了,呼终于看完了。

TOP

本帖最后由 过客,匆匆 于 2018-5-10 17:31 编辑

回复 23# huajinghua


   菜鸟新手拙见:
觉得这个代码会一直运行下去,可以在"set /a b=%b%+1"后加一行"if %b% gtr %a% exit"
不知道以上观点正确与否,望指正。谢谢

TOP

返回列表