Board logo

标题: [数值计算] 批处理选择排序法中的set命令是什么意思? [打印本页]

作者: chris521crystal    时间: 2011-6-1 19:24     标题: 批处理选择排序法中的set命令是什么意思?

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. ::选择排序法
  4. echo 共输入10个数
  5. for /l %%i in (1,1,10) do (
  6. set /p a_%%i=请输入%%i个数
  7. set str=!str! !a_%%i!
  8. )
  9. echo %str%
  10. for /l %%i in (1,1,10) do (
  11. set /a b=%%i+1
  12. for /l %%j in (!b!,1,10) do (
  13.    if !a_%%i! gtr !a_%%j! (
  14.       set /a t=a_%%i
  15.       set /a a_%%i=a_%%j
  16.       set /a a_%%j=t
  17.     )
  18. )
  19. )
  20. for /l %%i in (1,1,10) do (
  21. set str1=!str1! !a_%%i!
  22. )
  23. echo %str1%
  24. pause>nul
复制代码
请问这行“set str=!str! !a_%%i!”命令中的“!str! !a_%%i!”
是什么意思啊 ?为什么有2个变量没用其他运算符,而是空格
作者: chris521crystal    时间: 2011-6-1 19:25

我错了 code怎么不起作用啊
作者: chris521crystal    时间: 2011-6-1 19:31

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. ::选择排序法
  4. echo 共输入10个数
  5. for /l %%i in (1,1,10) do (
  6. set /p a_%%i=请输入%%i个数
  7. set str=!str! !a_%%i!
  8. )
  9. echo %str%
  10. for /l %%i in (1,1,10) do (
  11. set /a b=%%i+1
  12. for /l %%j in (!b!,1,10) do (
  13.    if !a_%%i! gtr !a_%%j! (
  14.       set /a t=a_%%i
  15.       set /a a_%%i=a_%%j
  16.       set /a a_%%j=t
  17.     )
  18. )
  19. )
  20. for /l %%i in (1,1,10) do (
  21. set str1=!str1! !a_%%i!
  22. )
  23. echo %str1%
  24. pause>nul
复制代码
请问这行“set str=!str! !a_%%i!”命令中的“!str! !a_%%i!”
是什么意思啊 ?为什么有2个变量没用其他运算符,而是空格
作者: 601997526    时间: 2011-6-1 19:49

因为这个不是算术运算,就是两变量叠加
比如set str=!str! !a_%%i!
str的值是5 ,  a_4的值是8
结果str的值就是5 8
不过set /a a_%%j=t这句是不是写错了
应该是set /a a_%%j=!t!
作者: tmplinshi    时间: 2011-6-1 20:24

...
不过set /a a_%%j=t这句是不是写错了
应该是set /a a_%%j=!t!
601997526 发表于 2011-6-1 19:49


set /? 中的帮助:
在表达式中的任何非数字字符串键作为环境变量
名称,这些环境变量名称的值已在使用前转换成数字。如果指定
了一个环境变量名称,但未在当前环境中定义,那么值将被定为
零。这使您可以使用环境变量值做计算而不用键入那些 % 符号
来得到它们的值。

作者: a382039369    时间: 2011-6-1 20:47

2# chris521crystal
code 貌似你少了[]
  1. echo 例子
复制代码

作者: 601997526    时间: 2011-6-1 23:39

5# tmplinshi
不错,这个以前还不知道,学习了
作者: applba    时间: 2011-6-2 00:13

这个纯粹是字符串连接哟,哪里需要什么运算符呀




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2