[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
程序3:
  1. @echo off&setlocal enabledelayedexpansion
  2. echo 问题:排一本辞典的页码共用了4889个数字。这本辞典共有多少页?
  3. set num=0
  4. for /l %%i in (1,1,5000) do (
  5. if %%i lss 10 (set/a num=!num!+1) else if %%i lss 100 (set/a num=!num!+2) else if %%i lss 1000 (set/a num=!num!+3) else if %%i lss 10000 (set/a num=!num!+4)
  6. if !num! equ 4889 (echo.答案:%%i页&pause>nul&goto :eof)
  7. )
复制代码

TOP

程序19

程序19:计算2*3*……*100的积后面有几个零。
程序分析:本道题是程序11的引申题,要计算乘积有几个零,只需计算5的倍数能提供5的个数就知道了。
  1. @echo off&setlocal EnableDelayedExpansion
  2. echo 计算2*3*……*100的积后面有几个零:
  3. set/a num=5,count=0
  4. :a
  5. if !num! gtr 100 goto :end
  6. set/a shang=!num!
  7. :b
  8. set/a yushu=!shang! %% 5
  9. if !yushu!==0 (
  10.   set/a count+=1
  11.   set/a shang/=5
  12.   goto :b
  13. ) else (set/a num+=5 & goto :a)
  14. :end
  15. echo 2*3*……*100的积后面有 !count! 个0。
  16. pause
复制代码

[ 本帖最后由 sjzong 于 2009-4-17 13:38 编辑 ]

TOP

程序11

程序11:将自然数2、3......乘到一起,它们的积的最后6位数恰好都是0,最后一个自然数最少可能是几?
程序分析:要使积的最后一位是0,就必须有一个5参与,那5是由谁提供的呢?是5的倍数提供的。
                  它们依次是:5,10,15,20,25……
                  例如:5=1×5  提供1个5 ;10=2×5 提供1个5 ; 25=5×5 提供2个5 ;125=5×5×5 提供3个5……
                  所以最后6位都是0,就必须提供6个5参与乘积,就是从5的倍数中找到分解出6个5来。
  1. @echo off&setlocal EnableDelayedExpansion
  2. set/a num=5,count=0,cishu=6
  3. :a
  4. set /a shang=!num!
  5. :b
  6. ::b这步循环是判断5的倍数能提供几个5
  7. set /a yushu=!shang! %% 5
  8. ::余数为0,表示含有1个5,count+1,接着再判断该数除以5后的商,还能不能提供5。
  9. if !yushu!==0 (
  10. set/a count+=1
  11. set/a shang/=5
  12. goto :b
  13. ) else (
  14. rem 余数不为0,表示5的个数已经求完了,判断达到6个没有,没有再求下一个5的倍数含有5的个数。
  15. if not !count!==!cishu!  (set /a num+=5 & goto :a)
  16. )
  17. echo 将自然数2、3......乘到一起,它们的积的最后6位数恰好都是0,最后一个自然数最少可能是!num!。
  18. pause
复制代码

TOP

回6楼 赞一个

zhouyongjun的这两句用来判断数字(0~9)有没有全部用到,实在是妙!

for /f "delims=%1" %%i in ("0123456789") do set num4=%%i
if not defined num4 echo !num1!

今天长见识了,我以前的做法分别求出这四位数和六位数,然后组成十位数,最后分别判断每一个数字是否有出现重复的!

TOP

第二题
  1. @echo off&setlocal enabledelayedexpansion
  2. for /l %%a in (10,1,100) do (
  3. set num1=%%a
  4. set/a num2=!num1!*!num1!*!num1!
  5. if !num2! geq 1000 if !num2! leq 9999 (
  6. set/a num3=!num2!*!num1!
  7. if !num3! geq 100000 if !num3! leq 999999 (
  8. call :pd !num2!!num3!
  9. )))
  10. pause&exit
  11. :pd
  12. for /f "delims=%1" %%i in ("0123456789") do set num4=%%i
  13. if not defined num4 echo !num1!
  14. goto :eof
复制代码
1

评分人数

TOP

第一题

  1. ::先四个数之和,然后求各个数
  2. @echo off
  3. set /a all=(84+88+99+110)/3
  4. set /a a=all-110
  5. set /a b=all-99
  6. set /a c=all-88
  7. set /a d=all-84
  8. echo %a% %b% %c% %d%
  9. pause>nul            
复制代码

TOP

好像都不会,有难度

TOP

回复 2楼 的帖子

初学批处理,建议从“实用”二字入手。
类似这些华而不实的东西,可以留待以后具备一定批处理功底时,再偶尔回来小试身手。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表