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

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

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

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

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

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

@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

TOP

@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%是平年
)

TOP

本帖最后由 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
复制代码

TOP

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

TOP

@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

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

  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

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

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

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

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

  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

我也来一个

  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. 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

返回列表