找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 122314|回复: 41

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

[复制链接]
发表于 2008-12-1 16:17:09 | 显示全部楼层 |阅读模式
生成一随机数,判断它是奇数还是偶数,或者说是单数还是双数。

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

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

评分:代码可读性 1 分;
   首个新方法 6 分,第二个 5 分,依次类推,最少 2 分;
   一人可多种方法,新方法追加 3 分,已经出现过的方法追加 1 分。
发表于 2008-12-1 18:37:00 | 显示全部楼层
  1. @echo off
  2. set/a str=%random%,str2=str%%2
  3. if %str2% equ 0 (echo. %str% 是偶数) else (echo. %str%是奇数)
  4. pause>nul
复制代码

评分

参与人数 1PB +7 收起 理由
wxcute + 7 第一个

查看全部评分

发表于 2008-12-1 19:24:34 | 显示全部楼层
  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 这个没有用过,学习了。

评分

参与人数 1PB +7 收起 理由
wxcute + 7 新方法

查看全部评分

发表于 2008-12-1 19:46:15 | 显示全部楼层
0是奇数还是偶数呢?
google了一下,没有找到什么结论。
发表于 2008-12-1 19:53:37 | 显示全部楼层
原帖由 Batcher 于 2008-12-1 19:46 发表
0是奇数还是偶数呢?
google了一下,没有找到什么结论。


貌似不纳入考虑范围.

说错别骂我啊 ^_^
发表于 2008-12-1 20:49:38 | 显示全部楼层
0当然是偶数
发表于 2008-12-1 22:09:00 | 显示全部楼层
  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%在这一句会停一下不知道是嘛意思..!
发表于 2008-12-1 22:13:23 | 显示全部楼层

回复 8楼 的帖子

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

[ 本帖最后由 pusofalse 于 2008-12-1 22:17 编辑 ]
发表于 2008-12-1 22:47:18 | 显示全部楼层
除了楼上的方法,还可以直接定义啊,完全避开条件检测。
方法如下:
set 0="偶数"
set 1="奇数"
后面的略...
发表于 2008-12-1 23:25:46 | 显示全部楼层
受教了....这两天就在这看代码来着.
发表于 2008-12-1 23:41:13 | 显示全部楼层
可否换种思路:0不能用作除数,否则errorlevel值是个非0的数字。
而||判别前面命令是否成功的标准就是通过判断第一条命令返回的errorlevel是否为0,不为0则是失败,即执行后面的命令。

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


嘿嘿

评分

参与人数 1PB +6 收起 理由
wxcute + 6 厉害

查看全部评分

发表于 2008-12-2 09:37:25 | 显示全部楼层

回复 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兄的要求是让明白取余运算。只须知道“按位相与”在一定程度上比“取余”要快就好了~
发表于 2008-12-2 12:51:12 | 显示全部楼层
原帖由 youxi01 于 2008-12-1 20:49 发表
0当然是偶数


的确如此,按规定:
任何能被2整除的自然数就是偶数,因而0就是偶数。
发表于 2008-12-3 12:08:46 | 显示全部楼层
  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
复制代码

评分

参与人数 1PB +5 收起 理由
wxcute + 5 鼓励

查看全部评分

发表于 2008-12-3 15:51:17 | 显示全部楼层
  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号的帖子~~!!!

评分

参与人数 1PB +6 收起 理由
wxcute + 6 很不错

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 07:08 , Processed in 0.043365 second(s), 16 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表