Board logo

标题: [ 新手练习题 1 ] 批处理判断闰年 [打印本页]

作者: wxcute    时间: 2009-3-18 17:12     标题: [ 新手练习题 1 ] 批处理判断闰年

公历(也称新历)中闰年的定义不懂的人要靠自己了,方法就是搜索。
(过几天再考虑是否加进来)

目的:掌握多重条件判断语句写法,加深对 SET /A 计算表达式的认识。

要求:输入一个年份,判断是否闰年并显示信息。
   方法不限。

评分:代码可读性 1 分;
   首个新方法 5 分,第二个 4 分,依次类推,最少 2 分;
   一人可多种方法,新方法追加 2 分,已经出现过的方法追加 1 分。
作者: zjw767676    时间: 2009-3-18 19:11

  1. @echo off
  2. :kaishi
  3. set a=&set b=&set c=&set d=
  4. set/p a=请输入年份:
  5. set /a b=%a%%%4
  6. set /a c=%a%%%100
  7. set /a d=%a%%%400
  8. if %d%==0 goto yes
  9. if %b%==0 (if not %c%==0 (goto yes) else (
  10. goto no
  11. )
  12. ) else goto no
  13. :yes
  14. echo 你输入的是闰年
  15. pause
  16. goto :kaishi
  17. :no
  18. echo 你输入的不是闰年
  19. pause
  20. goto :kaishi
复制代码

[ 本帖最后由 zjw767676 于 2009-3-18 19:24 编辑 ]
作者: stuqx    时间: 2009-3-19 22:25

  1. @echo off
  2. set /p dt=请输入年份:
  3. set /a a=%dt%%%100
  4. set /a b=%dt%%%400
  5. set /a c=%dt%%%4
  6. if %a% equ 0 (
  7.         if %b% equ 0 (
  8.                 echo %dt%是闰年!&pause
  9.                 goto :eof)
  10.         goto :other)
  11. if %c% equ 0 (
  12.         echo %dt%是闰年!&pause
  13.         goto :eof)
  14. goto :other
  15. :other
  16. echo %dt%不是闰年!&pause
  17. goto :eof
复制代码


嘿嘿  现在没错误了

[ 本帖最后由 stuqx 于 2009-3-27 16:11 编辑 ]
作者: keen    时间: 2009-3-22 23:05

  1. @echo off
  2. :start
  3. cls
  4. set /p year=please input year:
  5. set /a a=%year%%%4
  6. set /a b=%year%%%100
  7. set /a c=%year%%%400
  8. if %c%==0 echo. &echo %year% is Leap Year! &echo. & pause & goto start
  9. if %a%==0 (goto next) else (goto norn)
  10. :next
  11. if not %b%==0 (echo. & echo %year% is Leap Year! & echo. & pause & goto start) else (goto norn)
  12. :norn
  13. echo.
  14. echo %year% is not Leap Year!
  15. echo.
  16. pause
  17. goto :start
复制代码

作者: zhouyongjun    时间: 2009-3-22 23:59

  1. @echo off
  2. set/p year=请输入年份:
  3. set/a num=!(year%%4)^&!(!(year%%100))^|!(year%%400)
  4. if %num% equ 0 (echo 平年) else (echo 闰年)
  5. pause
复制代码

作者: Lumiere    时间: 2009-3-23 15:50     标题: 回复

  1. @echo off
  2. :start
  3. set /p a=Please input the year!:
  4. set /a x=%a%%%4
  5. set /a y=%a%%%100
  6. set /a z=%a%%%400
  7. if %z% equ 0 goto leap
  8. if %x% equ 0 (if %y% neq 0 goto leap else goto warning) else goto leap
  9. :warning
  10. echo The year you inputted is not leap year. Please input again!
  11. goto start
  12. :leap
  13. echo The year you inputted is leap year!
  14. pause
复制代码

[ 本帖最后由 Lumiere 于 2009-3-23 19:10 编辑 ]
作者: saber    时间: 2009-3-25 03:07

  1. @echo off
  2. title 输入年份.判断是否为闰年
  3. echo.
  4. set /p year=输入年份:
  5. set /a n=year%%4
  6. if "%n%" neq "0" echo %year%不是闰年 &&goto end
  7. set /a m=year%%400
  8. if "%m%" equ "0" echo %year%是闰年 &&goto end
  9. set /a h=year%%100
  10. if "%h%" equ "0" echo %year%不是闰年 &&goto end
  11. echo %year%是闰年 &&goto end
  12. :end
  13. pause>nul
复制代码

作者: sjzong    时间: 2009-5-6 19:41     标题: 我也来一个

  1. @echo off
  2. set/p y=请输入年份^>
  3. set/a a=%y% %% 4,b=%y% %% 100,c=%y% %% 400
  4. if "%c%"=="0" echo %y% 是闰年&goto :end
  5. if "%a%"=="0" if not "%b%"=="0" echo %y% 是闰年&goto :end
  6. echo %y% 是平年
  7. :end
  8. pause>nul
复制代码

[ 本帖最后由 sjzong 于 2009-5-6 20:27 编辑 ]
作者: aoelus    时间: 2009-5-6 21:50

  1. @echo off
  2. :main
  3. cls
  4. set /p var_year= 请输入你想查询的年份!
  5. set var00=%var_year:~-2,2%
  6. set var=%var_year:~0,-2%
  7. set /a varxx=%var00% %% 4
  8. set /a varzz=%var% %% 4
  9. if not %var00% equ 00 (
  10. if %varxx% equ 0  goto disp)
  11. if %var00% equ 00 (
  12. if %varzz% equ 0 goto disp )
  13. echo %var_year%不是闰年
  14. goto end
  15. :disp
  16. echo %var_year%是闰年
  17. goto end
  18. :end
  19. set /p choice= 返回到主菜单请输入1;退出请按其他任意键
  20. if %choice% equ 1 goto main
  21. exit
复制代码

作者: allkill    时间: 2009-10-8 14:52

@echo off
:pd
set /p year=请输入年份……
set /a a=%year%%%4
set /a b=%year%%%100
if %b%==0 goto next
if not %b%==0 goto jpg
:next
if not %a%==0 (echo 闰年) else echo 非闰年
goto pd
:jpg
if %a%==0 (echo 闰年) else echo 非闰年
goto pd
作者: Seter    时间: 2009-10-8 17:54

wx大大果然仔细...b=0时a肯定为0...应该加个%400..
作者: qq105699129    时间: 2010-6-27 16:37

我也来一个,希望大侠多多指教!
@echo off
Title 闰年判断
color 1f
:m
echo 输入年份后回车:
echo.
set /p s=(格式:2010)
::防止没有输入,可以重新输入!
if "%s%" == "" goto m
::防止输入英文或其它符号
if  %s% gtr 100000000000000 goto m
::闰年判断
::1、如果年数可以整除400,则必定是闰年。否则判断2。
::2、如果年数可以整除100,则不是闰年。否则判断3。
::3、如果年数可以整除4,则是闰年。否则不是闰年。
set /a f=%s%%%400
set /a g=%s%%%100
set /a h=%s%%%4
if %f% == 0 goto run
if %g% == 0 goto pin
if %h% == 0 ( goto run ) else ( goto pin )
:pin
cls
echo 平年&pause&exit
:run
cls
echo 闰年&pause&exit
作者: qq105699129    时间: 2010-6-27 16:44

我发觉上面的朋友那些批处理,如果输入英文字母也会显示是否是闰年,希望大侠给个好点的解决办法!
作者: gxuan2008    时间: 2010-7-3 13:27

  1. @echo off
  2. set /p year=请输入一个四位年份:
  3. set odate=%date%
  4. set /p new=%year%/2/29<nul|date &&echo %year%是闰年||echo %year%不是闰年
  5. echo %odate%<nul|date
  6. pause
复制代码
显示的时候有点难看。。。。
作者: poxi    时间: 2010-7-18 20:57

(说明,,偶不记得咋算是润年。。所以偶不敢肯定写滴对不。。= =!)
答:
  1. @echo off
  2. mode con cols=35 lines=4 & color 0a
  3. :start
  4. cls
  5. set /p year=请输入年份...
  6. set /a X100=%year%%%100
  7. set /a X400=%year%%%400
  8. set /a X4=%year%%%4
  9. if %X100%==0 (goto century) else goto normal
  10. :century
  11. if %X400%==0 (goto ok) else goto sorry
  12. :normal
  13. if %X4%==0 (goto ok) else goto sorry
  14. :ok
  15. echo 您输入的是闰年...吧...
  16. pause>nul
  17. goto start
  18. :sorry
  19. echo 您输入的也许不是闰年...
  20. pause>nul
  21. goto start
复制代码
效果:

=============
end;
作者: lxin    时间: 2010-7-19 16:06

@echo off
:begin
set /p year=请输入年份:
if %year%==q goto :eof
echo %year%|findstr "^[0-9]*$">nul || goto :nonum
set /a a=%year% %% 4
set /a b=%year% %% 100
set /a c=%year% %% 400
if %c%==0 goto :yes
if %b%==0 goto :no
if %a%==0 goto :yes
:no
echo %year%不是闰年。
goto :begin
:yes
echo %year%是闰年。
goto :begin
:nonum
echo %year%不是数字,请重新输入!
goto :begin
作者: Hello123World    时间: 2011-8-6 16:03

  1. @echo off
  2. Set /p year=输入年份:
  3. Set /a _4=%year%%%4
  4. Set /a _100=%year%%%100
  5. Set /a _400=%year%%%400
  6. If %_4%==0 If not %_100%==0 echo %year%是闰年 & pause & Exit
  7. If %_400%==0 echo %year%是闰年 & pause & Exit
  8. echo %year%是平年 & pause & Exit
复制代码

作者: scarcr    时间: 2011-8-6 18:45

本帖最后由 scarcr 于 2011-8-6 18:46 编辑

这样子如何
  1. @echo off
  2. :C
  3. set /p a=please input the years:
  4. set /a b=a%%400
  5. set /a c=a%%100
  6. set /a d=a%%4
  7. if %b% equ 0 (goto A) else if %c% equ 0 (goto B) else if %d% equ 0 (goto A) else (goto B)
  8. :A
  9. echo 这一年是闰年
  10. pause&goto C
  11. :B
  12. echo 这一年不是闰年
  13. pause&goto C
复制代码

作者: mcah1975    时间: 2011-11-18 10:11

@echo off
title 闰年判断方法
set /p year=请输入年份:
set /a a=%year%%%100
set /a b=%year%%%400
set /a c=%year%%%4
if %a%==0 (if %b%==0 (echo %year%是闰年) else echo  %year%是平年
) ELSE (
if %c%==0 (echo %year%是闰年) ELSE echo %year%是平年
)
作者: 唯尘    时间: 2024-1-25 21:24

@echo off
:sc_start
set /p input=请输入需要判断的年份:
set /a a=%input%%%100
set /a b=%input%%%400
set /a c=%input%%%4
if %a% equ 0 (if %b% equ 0 (echo %input%是闰年) else (echo %input%不是闰年))
if %c% equ 0 (echo %input%是闰年) else (echo %input%不是闰年)
pause>nul
cls&goto sc_start




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