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

回复 2楼 的帖子

第一题本来是要处理一个数的,对中间和末尾的0进行不同的标记,00123和123都被识别为一个数。既然兄问了,那么如果在头部就原样输出吧,例:输入  00110207600    输出  0011#2#76**
我看到这个题目,就有做出这个题目的冲动!所以就写出答案,望版主通过
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. :accept
  4. cls
  5. set /p n=要替换数字串[0~9]是:
  6. echo.%n%|findstr "^[0-9][0-9]*$">nul||goto accept
  7. for /f "tokens=* delims=0" %%a in ("%n%") do (
  8.   if "%%a" equ "" (echo 替换后的数字串是:%n%&pause>nul&goto accept) else (set b=%%a)
  9. )
  10. set num1=!n:%b%=!
  11. set num2=
  12. set num3=
  13. :loop
  14. if "!b:~-1!" neq "" (
  15.   if "!b:~-1!" equ "0" (set num3=!num3!*&set b=!b:~0,-1!&goto loop) else (goto replace))
  16. :replace
  17. set num2=!b:0=#!
  18. set num=!num1!!num2!!num3!
  19. echo 替换后的数字串是:%num%
  20. pause>nul&goto accept
复制代码


[ 本帖最后由 sjzong 于 2009-6-29 01:09 编辑 ]

TOP

[题目]删数问题

键盘输入一个高精度的正整数N,去掉其中任意S个数字后使剩下的数最小。
例如:N=175438, S=4 ,可以删去7,5,4,8,得到13。
原理:就是从左向右找到第一个i,使n>n[i+1],如果找到了,就删第i个,否则删最后一位。
1

评分人数

TOP

回复 17楼 的帖子

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. :n
  4. cls
  5. set /p num=请输入一个正整数n=
  6. echo.%num%|findstr "^[1-9][0-9]*$">nul||goto n
  7. :m
  8. set /p m=请输入删除的个数m:
  9. echo.%m%|findstr "^[1-9][0-9]*$">nul||goto m
  10. set/a count=0
  11. :loop
  12. if "!num:~%count%,1!" neq "" (set/a count+=1&goto loop)
  13. if !m! gtr !count! echo 删除的位数过大&pause>nul&goto n
  14. echo 正整数 n=!num! ,删掉 !m! 个数字
  15. set/a count=0
  16. :a
  17. set/a b=0
  18. :b
  19. set/a b+=1
  20. set/a c=!b!-1
  21. if !num:~%b%! neq "" (
  22. if "!num:~%c%,1!" gtr "!num:~%b%,1!" (
  23.   set num=!num:~0,%c%!!num:~%b%!
  24.   set/a count+=1
  25.   if !count! neq !m! goto a
  26.   ) else (goto b)
  27. ) else (
  28. set num=!num:~0,%c%!
  29. set/a count+=1
  30. if !count! neq !m! goto a)
  31. if "!num!" equ "" (echo 得到最小的数是:空) else (echo 得到最小的数是:!num!)
  32. pause>nul&goto n
复制代码

TOP

键盘输入一个高精度的正整数N,去掉其中任意S个数字后使剩下的数最小。
例如:N=175438, S=4 ,可以删去7,5 ...
sjzong 发表于 2009-6-28 23:30

像我這樣的新手也來做做練習吧﹗相信大伙們定會給予教導和指正的
  1. @echo off&setlocal enabledelayedexpansion
  2. set n=175438&set s=4
  3. :lp
  4. if defined n (
  5. set ".%n:~,1%=%n:~,1%"
  6. set "n=%n:~1%"
  7. goto lp)
  8. for /f "delims==." %%i in ('set.') do set x=!x!%%i
  9. echo !x:~,-%s%!
  10. pause
复制代码
我是NO.1 呀﹗不過.......@echo是在菜鳥比賽中....>.<

TOP

回复 2# lhjoanna


    按国家名字排序
  1. @ECHO OFF
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=1,2,3 delims=[] " %%a in (a.txt) do (
  4. echo [%%c]%%a %%b )>>log.txt
  5. sort log.txt>newa.txt & del /f /q log.txt
复制代码

TOP

返回列表