标题: [ 新手练习题 1 ] 批处理判断闰年 [打印本页]
作者: wxcute 时间: 2009-3-18 17:12 标题: [ 新手练习题 1 ] 批处理判断闰年
公历(也称新历)中闰年的定义不懂的人要靠自己了,方法就是搜索。
(过几天再考虑是否加进来)
目的:掌握多重条件判断语句写法,加深对 SET /A 计算表达式的认识。
要求:输入一个年份,判断是否闰年并显示信息。
方法不限。
评分:代码可读性 1 分;
首个新方法 5 分,第二个 4 分,依次类推,最少 2 分;
一人可多种方法,新方法追加 2 分,已经出现过的方法追加 1 分。
作者: zjw767676 时间: 2009-3-18 19:11
- @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
复制代码
[ 本帖最后由 zjw767676 于 2009-3-18 19:24 编辑 ]
作者: stuqx 时间: 2009-3-19 22:25
- @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 :eof
复制代码
嘿嘿 现在没错误了
[ 本帖最后由 stuqx 于 2009-3-27 16:11 编辑 ]
作者: keen 时间: 2009-3-22 23:05
- @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 :start
复制代码
作者: zhouyongjun 时间: 2009-3-22 23:59
- @echo off
- set/p year=请输入年份:
- set/a num=!(year%%4)^&!(!(year%%100))^|!(year%%400)
- if %num% equ 0 (echo 平年) else (echo 闰年)
- pause
复制代码
作者: Lumiere 时间: 2009-3-23 15:50 标题: 回复
- @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!
- pause
复制代码
[ 本帖最后由 Lumiere 于 2009-3-23 19:10 编辑 ]
作者: saber 时间: 2009-3-25 03:07
- @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>nul
复制代码
作者: sjzong 时间: 2009-5-6 19:41 标题: 我也来一个
- @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>nul
复制代码
[ 本帖最后由 sjzong 于 2009-5-6 20:27 编辑 ]
作者: aoelus 时间: 2009-5-6 21:50
- @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
- 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
- @echo off
- set /p year=请输入一个四位年份:
- set odate=%date%
- set /p new=%year%/2/29<nul|date &&echo %year%是闰年||echo %year%不是闰年
- echo %odate%<nul|date
- pause
复制代码
显示的时候有点难看。。。。
作者: poxi 时间: 2010-7-18 20:57
(说明,,偶不记得咋算是润年。。所以偶不敢肯定写滴对不。。= =!)
答:- @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 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
- @echo off
- Set /p year=输入年份:
- Set /a _4=%year%%%4
- Set /a _100=%year%%%100
- Set /a _400=%year%%%400
- If %_4%==0 If not %_100%==0 echo %year%是闰年 & pause & Exit
- If %_400%==0 echo %year%是闰年 & pause & Exit
- echo %year%是平年 & pause & Exit
复制代码
作者: scarcr 时间: 2011-8-6 18:45
本帖最后由 scarcr 于 2011-8-6 18:46 编辑
这样子如何- @echo off
- :C
- set /p a=please input the years:
- set /a b=a%%400
- set /a c=a%%100
- set /a d=a%%4
- if %b% equ 0 (goto A) else if %c% equ 0 (goto B) else if %d% equ 0 (goto A) else (goto B)
- :A
- echo 这一年是闰年
- pause&goto C
- :B
- echo 这一年不是闰年
- 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://bbs.bathome.net/) |
Powered by Discuz! 7.2 |