标题: [ 新手练习 6 ] 批处理判断奇数偶数 [打印本页]
作者: wxcute 时间: 2008-12-1 16:17 标题: [ 新手练习 6 ] 批处理判断奇数偶数
生成一随机数,判断它是奇数还是偶数,或者说是单数还是双数。
目的:掌握如何生成随机数,并了解取余运算的用处。
要求:显示出随机数,并显示判断结果(是奇数还是偶数)。
方法不限。
评分:代码可读性 1 分;
首个新方法 6 分,第二个 5 分,依次类推,最少 2 分;
一人可多种方法,新方法追加 3 分,已经出现过的方法追加 1 分。
作者: BBCC 时间: 2008-12-1 18:37
- @echo off
- set/a str=%random%,str2=str%%2
- if %str2% equ 0 (echo. %str% 是偶数) else (echo. %str%是奇数)
- pause>nul
复制代码
作者: tireless 时间: 2008-12-1 19:24
- @echo off
- set /a str=%random%,str2=str*5
- if %str2:~-1%==0 (echo %str% 是偶数) else (echo %str% 是奇数)
- pause
复制代码
一不小心看到了 2 楼的代码... str2=str*5 这个没有用过,学习了。
作者: Batcher 时间: 2008-12-1 19:46
0是奇数还是偶数呢?
google了一下,没有找到什么结论。
作者: BBCC 时间: 2008-12-1 19:53
原帖由 Batcher 于 2008-12-1 19:46 发表
0是奇数还是偶数呢?
google了一下,没有找到什么结论。
貌似不纳入考虑范围.
说错别骂我啊 ^_^
作者: youxi01 时间: 2008-12-1 20:49
0当然是偶数
作者: pizidu 时间: 2008-12-1 22:09
- @echo off
- set /p var=你取的随机数是:%random%
- set /a str2=%random%%%2
- if %str2% equ o (echo.它是个偶数) else (echo.它是个奇数)
- pause>nul
复制代码
set /p var=你取的随机数是:%random%在这一句会停一下不知道是嘛意思..!
作者: pusofalse 时间: 2008-12-1 22:13 标题: 回复 8楼 的帖子
代码有明显的错误。
%random%是动态变量,它是实时变化的。
set /p var=你取的....这句表示运行到此处暂停,等待用户输入,并把用户输入的值赋予变量var
if %str2% equ o 这里错了,再怎么说也不能是个字母。
楼上每个答案几乎都是用if来判断,可否换种思路:0不能用作除数,否则errorlevel值是个非0的数字。
而||判别前面命令是否成功的标准就是通过判断第一条命令返回的errorlevel是否为0,不为0则是失败,即执行后面的命令。
[ 本帖最后由 pusofalse 于 2008-12-1 22:17 编辑 ]
作者: youxi01 时间: 2008-12-1 22:47
除了楼上的方法,还可以直接定义啊,完全避开条件检测。
方法如下:
set 0="偶数"
set 1="奇数"
后面的略...
作者: pizidu 时间: 2008-12-1 23:25
受教了....这两天就在这看代码来着.
作者: rat 时间: 2008-12-1 23:41
可否换种思路:0不能用作除数,否则errorlevel值是个非0的数字。
而||判别前面命令是否成功的标准就是通过判断第一条命令返回的errorlevel是否为0,不为0则是失败,即执行后面的命令。
- 2>nul set/a1/(%random%%%2)&&echo 奇数||echo 偶数
- pause
复制代码
嘿嘿
作者: pusofalse 时间: 2008-12-2 09:37 标题: 回复 10楼 的帖子
youxi果真高人~
但在不开启变量延迟用!!闭合变量的情况下,%0%、%1%会被误解析吧。- @echo Off & Setlocal EnableDelayedExpansion
- Set "0=Even" & Set "1=Odd"
- Set /a Num=%Random%, n=Num %% 2
- Echo %Num% !%n%!
- Pause
复制代码
Num%%2等同于 Num "&" 1,所以用位运算也可以解答此题。
但wxcute兄的要求是让明白取余运算。只须知道“按位相与”在一定程度上比“取余”要快就好了~
作者: BBCC 时间: 2008-12-2 12:51
原帖由 youxi01 于 2008-12-1 20:49 发表
0当然是偶数
的确如此,按规定:
任何能被2整除的自然数就是偶数,因而0就是偶数。
作者: chengyuan383 时间: 2008-12-3 12:08
- @echo off
- set p=%random%
- set /a var=%p%%%2
- if %var% equ 0 (echo %p%是偶数) else (echo %p%是奇数)
- pause
复制代码
作者: mingming1205 时间: 2008-12-3 15:51
- @echo off
- set var=%random%
- set v1=%var:~-1,1%
- for %%i in (0 2 4 6 8) do (
- if %v1%==%%i goto :sub
- )
- echo 不是偶。
- pause>nul
- exit
- :sub
- echo 是偶。
- pause>nul
- exit
复制代码
是1号的帖子~~!!!
作者: 随风 时间: 2008-12-3 16:58
- @echo off
- set .0=奇数&set .1=偶数
- :loop
- setlocal&cls
- set /a n=%random%,m=!(n%%2)
- call echo %n% 是 %%.%m%%%
- endlocal&pause&goto loop
复制代码
[ 本帖最后由 随风 于 2008-12-3 17:55 编辑 ]
作者: nomyself 时间: 2008-12-4 16:03
这个简单。- @echo off
- set var=%random%
- set /a result=%var%%%2
- if %result%==0 (echo %var% 是偶数) else echo %var% 是奇数
- pause
复制代码
作者: firewolf85 时间: 2008-12-7 16:30
- @echo off
- set /a num=%random%
- echo %num%
- set /a ys=%num%%%2
- if %ys%==0 (echo 偶数) else (echo 奇数)
- pause>nul
复制代码
作者: vyuwwen1985 时间: 2009-1-14 11:47 标题: 回复
@echo off
set b=%random%
set /a c=%b%%%2
echo %b%&if "%c%"=="0" (echo 该数是偶数) else (echo 该数是奇数)
pause
作者: skuny 时间: 2009-1-16 11:32
借用rat的- @echo off
- set/a a=%random%/(%random%%%2) 2>nul
- if %errorlevel%==0 (echo 奇数) else echo 偶数
- pause
复制代码
- @echo off
- set/a a=-~(%random%%%2)
- if %a%==1 (echo 偶数) else echo 奇数
- pause
复制代码
作者: gobat 时间: 2009-1-28 14:00
原帖由 BBCC 于 2008-12-1 19:53 发表
貌似不纳入考虑范围.
说错别骂我啊 ^_^
以2 4 6 8 0结尾的是双数
以1 3 5 7 9结尾的是单数
能被2整除的是偶数
不能被2整除的是单数
这事数学的基本定理
作者: aresk 时间: 2009-2-15 21:41
- @echo off
- set r=%random%
- set /p a=%r%是<NUL
- set /a b=%r%%%2
- if %b% equ 0 (echo 偶数) else (echo 奇数)
- pause
复制代码
作者: TonyW 时间: 2009-2-18 03:56 标题: 我是新手,别笑我- -!
@echo off
:d
set /a m=%random%
set /a i=%m:~-1%
for %%j in (0,2,4,6,8) do if %%j==%i% echo 随机产生的数为:%m% 该数为偶数
for %%k in (1,3,5,7,9) do if %%k==%i% echo 随机产生的数为:%m% 该数为奇数
pause & goto d
我也来发一下,我是超级新手,各位看了多批评指正。
看了题目就开始做,干掉了我5个小时终于做出来!5555555
回头看楼上各位的代码,哎~~惭愧啊!
PS:修改了一下,看了楼上几位的代码发现原来%random% 后面可以不用带数字!! ^^
[ 本帖最后由 TonyW 于 2009-2-18 04:00 编辑 ]
作者: hq624517491 时间: 2009-2-20 14:48
:1
@set /a a=%random%
@set /a b=%a%%%2
@if %b%==0 (echo %a%是一个偶数) else (echo %a%是一个奇数)
@pause
goto 1
作者: myzwd 时间: 2009-2-22 21:28 标题: 回复 1楼 的帖子
@echo off
:eo
cls
set /a tt=%random%
set /a "ss=%tt%%%2"
if "%ss%" equ "0" (echo %tt% is odd) else (echo %tt% is even )
echo c is continue ,other letter halt
set /p uu=
if %uu% equ c goto eo else goto end
:end
echo bye
goto:eof
作者: keen 时间: 2009-3-17 12:40
- @echo off
- set a=%random%
- echo 随机数是%a%
- set /a b=%a%%%2
- if %b%==0 goto oushu
- :jishu
- echo %a%是奇数!
- pause
- exit
- :oushu
- echo %a%是偶数!
- pause
复制代码
[ 本帖最后由 keen 于 2009-3-17 12:55 编辑 ]
作者: hyx 时间: 2009-3-18 14:31
@echo off
echo 请按随意键产生一个随机数
pause>nul
set a=%random%
set /a b=a%%2
if %b%==1 echo %a%为奇数
if %b%==0 echo %a%为偶数
pause>nul
作者: stuqx 时间: 2009-3-21 21:36
- @echo off
- set /a rdm=%random%
- echo 随机数是%rdm%
- if %rdm%%%2 equ 0 (echo 该随机数是偶数) else (echo 该随机数是奇数)
- pause
复制代码
作者: yangyuankui 时间: 2009-4-20 14:47 标题: result
@echo off
:start
set /a a=%random%%%10
set /a b=%a%%%2
echo %b%
if "%b%"=="0" echo the number is singular
if "%B%"=="1" echo the number is dual
echo %a% %b%
pause
作者: sjzong 时间: 2009-4-21 20:55 标题: 我也来一个!
我也借用12楼,rat的代码写写:- @echo off
- set/a num=%random%
- 2>nul set/a1/(%num%%%2)&&echo %num% 是奇数||echo %num% 是偶数
- pause>nul
复制代码
- @echo off
- setlocal enabledelayedexpansion
- set var=%random%
- set num=
- for /f "delims=13579" %%i in ("!var:~-1!") do set num=%%i
- if not defined num (echo !var!是奇数) else (echo !var!是偶数)
- pause>nul
复制代码
[ 本帖最后由 sjzong 于 2009-4-21 23:24 编辑 ]
作者: P_Ricky 时间: 2010-4-14 16:10
- @echo off
- setlocal enabledelayedexpansion
- set a=%random%
- set /a b=%a% %% 2
- if %b% ==1 echo %a%是奇数
- if %b% ==0 echo %a%是偶数
- pause
复制代码
作者: 634175535 时间: 2010-4-24 15:14
想了很久也没有想出来丶丶丶
作者: mangci 时间: 2010-5-12 23:22
- @ echo off
- set "num=%random%%%2"
- if %num% ==0 (echo,随机数是偶数) else (echo,随机数是奇数)
- pahse
复制代码
作者: neorobin 时间: 2010-5-13 01:02
- set 数=%random%&set 数&set/a "数&1"|find "1">nul&&echo 奇||echo 偶&pause
复制代码
[ 本帖最后由 neorobin 于 2010-5-13 01:08 编辑 ]
作者: raymai97 时间: 2010-6-1 21:11
2L, 请问str2=str%%2是什么意思?
作者: poxi 时间: 2010-7-19 13:08
答:- @echo off
- set /a ran=%random%
- echo 产生的是%ran%
- set /a end=%ran%%%2
- if %end%==0 (echo 他是偶数) else (echo TA是奇数)
- pause>nul
复制代码
老方法了........
效果:
==========
end;
作者: Hello123World 时间: 2011-7-27 17:01
- @echo off
- ::判断0-99这100个数的奇偶性
- Set /a a=%Random%%%100
- Set /a b=%a%%%2
- If %b%==0 (echo %a%是偶数) else (echo %a%是奇数)
- pause
- %0
复制代码
作者: 唯尘 时间: 2024-1-31 09:14
@echo off
set /p num=请输入:
set /a n=%num%%%2
if %n% equ 0 (echo %num% 是偶数) else (echo %num% 是奇数)
pause>nul 2>nul
作者: 唯尘 时间: 2024-2-18 14:56
@echo off
set var=%random%
echo %var%
set /a num=%var%%%2
if %num% equ 0 (echo 随机数是偶数) else (echo 随机数是奇数)
pause>nul
作者: 唯尘 时间: 2024-3-21 08:49
@echo off
:sc
set /a num=%random%
set /a a=%num%%%2
if %a%==0 (echo 偶数) else (echo 奇数)
ping 127.0.0.0 -n 1 >Nul 2>Nul
goto :sc
作者: 唯尘 时间: 2024-4-2 08:10
@echo off
:sc_start
set /p str=请输入需要判断的数值:
set /a s=%str%%%2
if %s%==1 (echo 奇数) else (echo 偶数)
pause>nul
goto :sc_start
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |