返回列表 发帖

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

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

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

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

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

@echo off
:kaishi
set a=&set b=&set c=&set d=
set/p a=请输入年份:
set /a b=%a%%%4
set /a c=%a%%%100
set /a d=%a%%%400
if %d%==0 goto yes
if %b%==0 (if not %c%==0 (goto yes) else (
goto no
)
) else goto no
:yes
echo 你输入的是闰年
pause
goto :kaishi
:no
echo 你输入的不是闰年
pause
goto :kaishi COPY

[ 本帖最后由 zjw767676 于 2009-3-18 19:24 编辑 ]
1

评分人数

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

TOP

@echo off
set /p dt=请输入年份:
set /a a=%dt%%%100
set /a b=%dt%%%400
set /a c=%dt%%%4
if %a% equ 0 (
        if %b% equ 0 (
                echo %dt%是闰年!&pause
                goto :eof)
        goto :other)
if %c% equ 0 (
        echo %dt%是闰年!&pause
        goto :eof)
goto :other
:other
echo %dt%不是闰年!&pause
goto :eofCOPY


嘿嘿  现在没错误了

[ 本帖最后由 stuqx 于 2009-3-27 16:11 编辑 ]
1

评分人数

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

TOP

@echo off
:start
cls
set /p year=please input year:
set /a a=%year%%%4
set /a b=%year%%%100
set /a c=%year%%%400
if %c%==0 echo. &echo %year% is Leap Year! &echo. & pause & goto start
if %a%==0 (goto next) else (goto norn)
:next
if not %b%==0 (echo. & echo %year% is Leap Year! & echo. & pause & goto start) else (goto norn)
:norn
echo.
echo %year% is not Leap Year!
echo.
pause
goto :startCOPY
1

评分人数

(*^_^*)

TOP

@echo off
set/p year=请输入年份:
set/a num=!(year%%4)^&!(!(year%%100))^|!(year%%400)
if %num% equ 0 (echo 平年) else (echo 闰年)
pauseCOPY
3

评分人数

TOP

回复

@echo off
:start
set /p a=Please input the year!:
set /a x=%a%%%4
set /a y=%a%%%100
set /a z=%a%%%400
if %z% equ 0 goto leap
if %x% equ 0 (if %y% neq 0 goto leap else goto warning) else goto leap
:warning
echo The year you inputted is not leap year. Please input again!
goto start
:leap
echo The year you inputted is leap year!
pauseCOPY

[ 本帖最后由 Lumiere 于 2009-3-23 19:10 编辑 ]
1

评分人数

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

TOP

@echo off
title 输入年份.判断是否为闰年
echo.
set /p year=输入年份:
set /a n=year%%4
if "%n%" neq "0" echo %year%不是闰年 &&goto end
set /a m=year%%400
if "%m%" equ "0" echo %year%是闰年 &&goto end
set /a h=year%%100
if "%h%" equ "0" echo %year%不是闰年 &&goto end
echo %year%是闰年 &&goto end
:end
pause>nulCOPY
1

评分人数

TOP

我也来一个

@echo off
set/p y=请输入年份^>
set/a a=%y% %% 4,b=%y% %% 100,c=%y% %% 400
if "%c%"=="0" echo %y% 是闰年&goto :end
if "%a%"=="0" if not "%b%"=="0" echo %y% 是闰年&goto :end
echo %y% 是平年
:end
pause>nulCOPY

[ 本帖最后由 sjzong 于 2009-5-6 20:27 编辑 ]
1

评分人数

TOP

@echo off
:main
cls
set /p var_year= 请输入你想查询的年份!
set var00=%var_year:~-2,2%
set var=%var_year:~0,-2%
set /a varxx=%var00% %% 4
set /a varzz=%var% %% 4
if not %var00% equ 00 (
if %varxx% equ 0  goto disp)
if %var00% equ 00 (
if %varzz% equ 0 goto disp )
echo %var_year%不是闰年
goto end
:disp
echo %var_year%是闰年
goto end
:end
set /p choice= 返回到主菜单请输入1;退出请按其他任意键
if %choice% equ 1 goto main
exitCOPY
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

@echo off
set /p year=请输入一个四位年份:
set odate=%date%
set /p new=%year%/2/29<nul|date &&echo %year%是闰年||echo %year%不是闰年
echo %odate%<nul|date
pauseCOPY
显示的时候有点难看。。。。
进步怎么这么慢呢?

TOP

(说明,,偶不记得咋算是润年。。所以偶不敢肯定写滴对不。。= =!)
答:
@echo off
mode con cols=35 lines=4 & color 0a
:start
cls
set /p year=请输入年份...
set /a X100=%year%%%100
set /a X400=%year%%%400
set /a X4=%year%%%4
if %X100%==0 (goto century) else goto normal
:century
if %X400%==0 (goto ok) else goto sorry
:normal
if %X4%==0 (goto ok) else goto sorry
:ok
echo 您输入的是闰年...吧...
pause>nul
goto start
:sorry
echo 您输入的也许不是闰年...
pause>nul
goto startCOPY
效果:

=============
end;

TOP

返回列表