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

[ 新手练习题 1 ] 批处理判断闰年

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

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

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

评分:代码可读性 1 分;
   首个新方法 5 分,第二个 4 分,依次类推,最少 2 分;
   一人可多种方法,新方法追加 2 分,已经出现过的方法追加 1 分。
批处理之家论坛官方 QQ 群 :【当前人数/人数上限】【2009-07-08】
群①:43011867(181/200);群②:(暂缺数据);群③:66165582(120/200)。

  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 编辑 ]
1

评分人数

    • wxcute: 加个满分,祝君更上一层楼。PB + 6

TOP

  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 编辑 ]
1

评分人数

    • wxcute: 有很多错误,请修正。PB + 1

TOP

  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
复制代码
1

评分人数

(*^_^*)

TOP

  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
复制代码
2

评分人数

TOP

回复

  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 编辑 ]
1

评分人数

    • wxcute: 有部分错误,请修改。^_^PB + 2

TOP

  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
复制代码
1

评分人数

TOP

我也来一个

  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 编辑 ]
1

评分人数

TOP

  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
复制代码
1

评分人数

TOP

@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
2

评分人数

    • wxcute: 有错误,如:2000PB + 1
    • Seter: 代替wx鼓励一下,请用code将代码括起!PB + 3

TOP

wx大大果然仔细...b=0时a肯定为0...应该加个%400..

TOP

我也来一个,希望大侠多多指教!
@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

TOP

我发觉上面的朋友那些批处理,如果输入英文字母也会显示是否是闰年,希望大侠给个好点的解决办法!

TOP

  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
复制代码
显示的时候有点难看。。。。
进步怎么这么慢呢?

TOP

(说明,,偶不记得咋算是润年。。所以偶不敢肯定写滴对不。。= =!)
答:
  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;

TOP

返回列表