[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
感觉比上一题简单,整两个随机数,一个乱序排列学生,一个代表学生的分数,努力写代码,顺便顶上去。
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for %%a in (A B C D) do (
  4.   for /l %%b in (1,1,100) do (
  5.    set /a soc=!random!%%46+55
  6.    set #%%a-!random~-2!-%%a-%%b-!soc!=0
  7. )
  8. )
  9. for /l %%a in (1,1,10) do (
  10. for /f "tokens=2,3,4 delims=-=" %%b in ('set #') do (
  11.     for %%i in (%%b-%%c:%%d) do (
  12.       set str=%%i
  13.       set /a n+=1
  14.       set /a m=n%%10+1
  15.       if "!str:~0,1!"=="A" if %%d gtr 90 (set "str=!str!:稳定") else (set "str=!str!:退步")
  16.       if "!str:~0,1!"=="B" if %%d lss 80 (set "str=!str!:退步") else (if %%d gtr 90 (set "str=!str!:进步") else (set "str=!str!:稳定"))
  17.       if "!str:~0,1!"=="C" if %%d lss 70 (set "str=!str!:退步") else (if %%d gtr 80 (set "str=!str!:进步") else (set "str=!str!:稳定"))
  18.       if "!str:~0,1!"=="D" if %%d gtr 70 (set "str=!str!:进步") else (set "str=!str!:稳定")
  19.       if !m! equ %%a call set x%%a=!str! !x%%a!
  20. )
  21. )
  22. )
  23. for /l %%j in (1,1,10) do (
  24.   echo 第%%j班:
  25.   echo !x%%j!
  26. )
  27. pause
复制代码
效率出奇的慢,把x%%a=!str! !x%%a!中间的空格改为tab
当然我还有个疑问,是先分好班,输出每个班的学生,然后再分配给每个学生的一个随机的考试分数,然后再按先分好的班输出最后的结果吗?

[ 本帖最后由 sgaizxt001 于 2010-6-30 02:07 编辑 ]
努力学习,努力挣分

TOP

加入统计
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for %%a in (A B C D) do (
  4.   for /l %%b in (1,1,100) do (
  5.    set /a soc=!random!%%46+55
  6.    set #%%a-!random~-2!-%%a-%%b-!soc!=0
  7. )
  8. )
  9. for /l %%a in (1,1,10) do (
  10. for /f "tokens=2,3,4 delims=-=" %%b in ('set #') do (
  11.     for %%i in (%%b-%%c:%%d) do (
  12.       set str=%%i
  13.       set /a n+=1
  14.       set /a m=n%%10+1
  15.       if "!str:~0,1!"=="A" if %%d gtr 90 (set "str=!str!:稳定") else (set "str=!str!:退步")
  16.       if "!str:~0,1!"=="B" if %%d lss 80 (set "str=!str!:退步") else (if %%d gtr 90 (set "str=!str!:进步") else (set "str=!str!:稳定"))
  17.       if "!str:~0,1!"=="C" if %%d lss 70 (set "str=!str!:退步") else (if %%d gtr 80 (set "str=!str!:进步") else (set "str=!str!:稳定"))
  18.       if "!str:~0,1!"=="D" if %%d gtr 70 (set "str=!str!:进步") else (set "str=!str!:稳定")
  19.       if !m! equ %%a  set x%%a=!str!        !x%%a!
  20.       if %%d gtr 90 set /a a=!a!+1
  21.       if %%d geq 80 if %%d leq 90 set /a b=!b!+1
  22.       if %%d geq 70 if %%d lss 80 set /a c=!c!+1
  23.       if %%d lss 70 set /a d=!d!+1
  24. )
  25. )
  26. )
  27. set /a a=!a!/10
  28. set /a b=!b!/10
  29. set /a c=!c!/10
  30. set /a d=!d!/10
  31. for /l %%j in (1,1,10) do (
  32.   echo 第%%j班:
  33.   echo !x%%j!
  34. )
  35. echo.
  36. echo 这个学期结束后优等生有!a!个
  37. echo 这个学期结束后高等生有!b!个
  38. echo 这个学期结束后中等生有!c!个
  39. echo 这个学期结束后差等生有!d!个
  40. pause
复制代码
因为在开始计算的时候,代码循环了10次,所以数目多算了10次,最后就让他们除以10得出最后的结果
比较有意思的是我运行20来次,发现差等生总是多余100个,优等生多余100个的只有1次,中间的有多有少

[ 本帖最后由 sgaizxt001 于 2010-6-30 02:33 编辑 ]
1

评分人数

    • batman: 加分鼓励,想办法提效率啊PB + 3
努力学习,努力挣分

TOP

效率提高了,但是代码还是比别人的长
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for %%a in (A B C D) do (
  4.   for /l %%b in (1,1,100) do (
  5.    set /a soc=!random!%%46+55
  6.    set #!random:~-2!-%%a-%%b-!soc!=0
  7. )
  8. )
  9. for /f "tokens=2,3,4 delims=-=" %%a in ('set #') do (
  10.   set str=%%a-%%b:%%c
  11.   if "!str:~0,1!"=="A" if %%c gtr 90 (set "str=!str!:稳定") else (set "str=!str!:退步")
  12.   if "!str:~0,1!"=="B" if %%c lss 80 (set "str=!str!:退步") else (if %%c gtr 90 (set "str=!str!:进步") else (set "str=!str!:稳定"))
  13.   if "!str:~0,1!"=="C" if %%c lss 70 (set "str=!str!:退步") else (if %%c gtr 80 (set "str=!str!:进步") else (set "str=!str!:稳定"))
  14.   if "!str:~0,1!"=="D" if %%c gtr 70 (set "str=!str!:进步") else (set "str=!str!:稳定")
  15.   if %%c gtr 90 set /a a=!a!+1
  16.   if %%c geq 80 if %%c leq 90 set /a b=!b!+1
  17.   if %%c geq 70 if %%c lss 80 set /a c=!c!+1
  18.   if %%c lss 70 set /a d=!d!+1
  19.   echo !str!
  20. )
  21. echo.
  22. echo 这个学期结束后优等生有!a!个
  23. echo 这个学期结束后高等生有!b!个
  24. echo 这个学期结束后中等生有!c!个
  25. echo 这个学期结束后差等生有!d!个
  26. pause
复制代码
1

评分人数

努力学习,努力挣分

TOP

返回列表