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

[ 新手练习 6 ] 批处理判断奇数偶数

生成一随机数,判断它是奇数还是偶数,或者说是单数还是双数。

目的:掌握如何生成随机数,并了解取余运算的用处。

要求:显示出随机数,并显示判断结果(是奇数还是偶数)。
   方法不限。

评分:代码可读性 1 分;
   首个新方法 6 分,第二个 5 分,依次类推,最少 2 分;
   一人可多种方法,新方法追加 3 分,已经出现过的方法追加 1 分。

  1. @echo off
  2. set/a str=%random%,str2=str%%2
  3. if %str2% equ 0 (echo. %str% 是偶数) else (echo. %str%是奇数)
  4. pause>nul
复制代码
1

评分人数

for /f "delims=" %%a in ('%0') do (echo %%a)

TOP

  1. @echo off
  2. set /a str=%random%,str2=str*5
  3. if %str2:~-1%==0 (echo %str% 是偶数) else (echo %str% 是奇数)
  4. pause
复制代码
一不小心看到了 2 楼的代码... str2=str*5 这个没有用过,学习了。
1

评分人数

TOP

0是奇数还是偶数呢?
google了一下,没有找到什么结论。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

原帖由 Batcher 于 2008-12-1 19:46 发表
0是奇数还是偶数呢?
google了一下,没有找到什么结论。


貌似不纳入考虑范围.

说错别骂我啊 ^_^
for /f "delims=" %%a in ('%0') do (echo %%a)

TOP

0当然是偶数

TOP

  1. @echo off
  2. set /p var=你取的随机数是:%random%
  3. set /a str2=%random%%%2
  4. if %str2% equ o (echo.它是个偶数) else (echo.它是个奇数)
  5. pause>nul
复制代码
set /p var=你取的随机数是:%random%在这一句会停一下不知道是嘛意思..!

TOP

回复 8楼 的帖子

代码有明显的错误。
%random%是动态变量,它是实时变化的。
set /p var=你取的....这句表示运行到此处暂停,等待用户输入,并把用户输入的值赋予变量var
if %str2% equ o 这里错了,再怎么说也不能是个字母。
楼上每个答案几乎都是用if来判断,可否换种思路:0不能用作除数,否则errorlevel值是个非0的数字。
而||判别前面命令是否成功的标准就是通过判断第一条命令返回的errorlevel是否为0,不为0则是失败,即执行后面的命令。

[ 本帖最后由 pusofalse 于 2008-12-1 22:17 编辑 ]
心绪平和,眼藏静谧。

TOP

除了楼上的方法,还可以直接定义啊,完全避开条件检测。
方法如下:
set 0="偶数"
set 1="奇数"
后面的略...

TOP

受教了....这两天就在这看代码来着.

TOP

可否换种思路:0不能用作除数,否则errorlevel值是个非0的数字。
而||判别前面命令是否成功的标准就是通过判断第一条命令返回的errorlevel是否为0,不为0则是失败,即执行后面的命令。

  1. 2>nul set/a1/(%random%%%2)&&echo 奇数||echo 偶数
  2. pause
复制代码


嘿嘿
1

评分人数

TOP

回复 10楼 的帖子

youxi果真高人~
但在不开启变量延迟用!!闭合变量的情况下,%0%、%1%会被误解析吧。
  1. @echo Off & Setlocal EnableDelayedExpansion
  2. Set "0=Even" & Set "1=Odd"
  3. Set /a Num=%Random%, n=Num %% 2
  4. Echo %Num% !%n%!
  5. Pause
复制代码
Num%%2等同于 Num "&" 1,所以用位运算也可以解答此题。
但wxcute兄的要求是让明白取余运算。只须知道“按位相与”在一定程度上比“取余”要快就好了~
心绪平和,眼藏静谧。

TOP

原帖由 youxi01 于 2008-12-1 20:49 发表
0当然是偶数


的确如此,按规定:
任何能被2整除的自然数就是偶数,因而0就是偶数。
for /f "delims=" %%a in ('%0') do (echo %%a)

TOP

  1. @echo off
  2. set p=%random%
  3. set /a var=%p%%%2
  4. if %var% equ 0  (echo %p%是偶数) else (echo %p%是奇数)
  5. pause
复制代码
1

评分人数

TOP

  1. @echo off
  2. set var=%random%
  3. set v1=%var:~-1,1%
  4. for %%i in (0 2 4 6 8) do (
  5. if %v1%==%%i goto :sub
  6. )
  7. echo 不是偶。
  8. pause>nul
  9. exit
  10. :sub
  11. echo 是偶。
  12. pause>nul
  13. exit
复制代码
是1号的帖子~~!!!
1

评分人数

TOP

返回列表