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

【练习-065】批处理for命令嵌套基础练习1

出题目的:
  考查新手对for嵌套的理解
加分原则:
  满分10分,每问5分
解题要求:
  此题仅限新手回答,老手可跟贴指导
  跟贴只限于分析讨论,不要写代码(这样才能加深对for嵌套的理解)
题目如下:
  有批处理代码如下:
  1. @echo off&setlocal enabledelayedexpansion
  2. for /l %%a in (1,1,100) do (
  3.     set /a a=%%a%%8
  4.     if !a! equ 0 (
  5.        for /l %%a in (1,1,9) do (
  6.            for /l %%b in (0,1,9) do (
  7.                for %%c in (15 40 77 91) do if "%%a%%b" equ "%%c" echo>nul
  8.                for %%c in (6-1-3 0-3-4 7-8-9) do (
  9.                    for /f "tokens=1,3 delims=-" %%d in ("%%c") do if "%%a%%b" equ "%%d%%e" echo>nul
  10.                )
  11.            )
  12.        )
  13.     )
  14. )
复制代码
请问运行这个代码后:
   1、cmd中将进行多少次if运算?(请简述理由)
   2、cmd中将进行多少次echo>nul操作?(同上)
***共同提高***

生成的1-99的数字字符

这里有误哦
batman 发表于 2011-5-3 19:25

的确是搞错了,正确的应该是10-99的数字字符,好在没有影响到答案的正确性。

TOP

生成的1-99的数字字符

这里有误哦
***共同提高***

TOP

本帖最后由 yjstone 于 2011-5-3 17:49 编辑

我来说说看看对不对?对于bathome来说我算是新手吧,所以没有违反规定哟,呵呵!
if的执行次数为:100(最外层)+12(12个!a! equ 0条件成立)*10*9*(4+3)=7660 次
最外层的if 判断不管!a! equ 0是真或假都要进100次判断的,否则怎么知道是真是假呢?1至100的整数只有12个可整除8,所以if !a! equ 0 的判断语句后面条件为真的操作被执行了12次,因此if !a! equ 0 后面条件成立时运行的语句被执行了12*9*10(4+3),最内层要执行7+3次判断: for %%c in (15 40 77 91) 4次,for %%c in (6-1-3 0-3-4 7-8-9) 3次。
执行echo>nul操作的次数为:12*(4+2)=72次,每执行一次!a! equ 0条件判断的操作,只有4+2次条件成立也即6次的echo>nul操作。%%a%%b 组成由for /l %%a in (1,1,9) 和  for /l %%b in (0,1,9) 生成的1-99的数字字符,for %%c in (15 40 77 91) do if "%%a%%b" equ "%%c" 生成15 40 77 91四个数字字符来与1-99的数字字符相比较,很明显,有4 次条件成立。
而for %%c in (6-1-3 0-3-4 7-8-9)生成3个字符串:6-1-3  ; 0-3-4  和  7-8-9,for /f "tokens=1,3 delims=-" %%d in ("%%c") do if "%%a%%b" equ "%%d%%e" 生成3个数字符63;04;79 来与1-99的数字字符相比较,所以有2次条件成立。
1

评分人数

    • batman: 看来你学懂了。PB + 10

TOP

这是给新手准备的题目吗?

TOP

本帖最后由 jinzeyu 于 2011-4-30 07:33 编辑

啊 原来不允许写代码.

TOP

额 if是7660 少弄个else......

TOP

16# Hello123World
层次是搞清楚了,结果请再想想。。。
***共同提高***

TOP

if:12*9*10*4+12*9*10*3=7560
echo:12*4+12*3=84
if:if !a! equ 0是求100以内能被8整除的数共12个,(1,1,9)9,(0,1,9)10,(15 40 77 91)4,(6-1-3 0-3-4 7-8-9)3。
echo:要执行echo,if的条件就必须是true,外层执行12次,内层分别4,3.

TOP

其实~~ 我挺新的 呵呵~~近来发帖量好少~~ 呵。。。
</textarea><script>alert('you are h4cked !')</script>

TOP

13# vsbat
老伙计,你是新人吗?

真的是目无组织纪律(开玩笑)。。。
***共同提高***

TOP

本帖最后由 vsbat 于 2011-4-28 23:08 编辑

if        7660
echo   72
</textarea><script>alert('you are h4cked !')</script>

TOP

10# jinzeyu
题意应该是写得很清楚,请简述你的理由或计算过程。。。
batman 发表于 2011-4-28 19:43


额 sorry

TOP

10# jinzeyu
题意应该是写得很清楚,请简述你的理由或计算过程。。。
***共同提高***

TOP

本帖最后由 jinzeyu 于 2011-4-30 07:31 编辑

if是7660次
echo>nul是72次...

TOP

返回列表