找回密码
 加入
搜索
查看: 5607|回复: 9

[原创] 一个简单的生肖查询算法,求高手精简优化,便可做成UDF了

  [复制链接]
发表于 2013-10-13 19:35:25 | 显示全部楼层 |阅读模式
;十二生肖
Global $sx[2][12]=[["鼠","牛","虎","兔","龙","蛇","马","羊","猴","鸡","狗","猪"],["子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥"]]
Global $nf[12]=["1900","1901","1902","1903","1904","1905","1906","1907","1908","1909","1910","1911"]
Dim $a
$a=InputBox("输入","输入4位年份(如1999)",""," M4",15,15)
If @error=1 Then exit
        
Select
        Case StringIsInt ($a)=0 Or $a<1900 Or $a>2103;好像超过2103会不准
MsgBox(16,"提示","输入错误或超出范围~!")
Case $a=$nf[0]
                MsgBox (64,"生肖",$a&"年生属"&$sx[0][0]&$sx[1][0]&"年")
        Case $a=$nf[1]
                MsgBox (64,"生肖",$a&"年生属"&$sx[0][1]&$sx[1][1]&"年")
        Case $a=$nf[2]
                MsgBox (64,"生肖",$a&"年生属"&$sx[0][2]&$sx[1][2]&"年")
        Case $a=$nf[3]
                MsgBox (64,"生肖",$a&"年生属"&$sx[0][3]&$sx[1][3]&"年")
        Case $a=$nf[4]
                MsgBox (64,"生肖",$a&"年生属"&$sx[0][4]&$sx[1][4]&"年")
        Case $a=$nf[5]
                MsgBox (64,"生肖",$a&"年生属"&$sx[0][5]&$sx[1][5]&"年")
        Case $a=$nf[6]
                MsgBox (64,"生肖",$a&"年生属"&$sx[0][6]&$sx[1][6]&"年")
        Case $a=$nf[7]
                MsgBox (64,"生肖",$a&"年生属"&$sx[0][7]&$sx[1][7]&"年")
        Case $a=$nf[8]
                MsgBox (64,"生肖",$a&"年生属"&$sx[0][8]&$sx[1][8]&"年")
        Case $a=$nf[9]
                MsgBox (64,"生肖",$a&"年生属"&$sx[0][9]&$sx[1][9]&"年")
        Case $a=$nf[10]
                MsgBox (64,"生肖",$a&"年生属"&$sx[0][10]&$sx[1][10]&"年")
        Case $a=$nf[11]
                MsgBox (64,"生肖",$a&"年生属"&$sx[0][11]&$sx[1][11]&"年")
Case Mod(($a-$nf[0]),12)=0 
                MsgBox (64,"生肖",$a&"年生属"&$sx[0][0]&$sx[1][0]&"年")
        Case Mod(($a-$nf[1]),12)=0 
                MsgBox (64,"生肖",$a&"年生属"&$sx[0][1]&$sx[1][1]&"年")
        Case Mod(($a-$nf[2]),12)=0 
                MsgBox (64,"生肖",$a&"年生属"&$sx[0][2]&$sx[1][2]&"年")
        Case Mod(($a-$nf[3]),12)=0 
                MsgBox (64,"生肖",$a&"年生属"&$sx[0][3]&$sx[1][3]&"年")
        Case Mod(($a-$nf[4]),12)=0 
                MsgBox (64,"生肖",$a&"年生属"&$sx[0][4]&$sx[1][4]&"年")
        Case Mod(($a-$nf[5]),12)=0 
                MsgBox (64,"生肖",$a&"年生属"&$sx[0][5]&$sx[1][5]&"年")
        Case Mod(($a-$nf[6]),12)=0 
                MsgBox (64,"生肖",$a&"年生属"&$sx[0][6]&$sx[1][6]&"年")
        Case Mod(($a-$nf[7]),12)=0 
                MsgBox (64,"生肖",$a&"年生属"&$sx[0][7]&$sx[1][7]&"年")
        Case Mod(($a-$nf[8]),12)=0 
                MsgBox (64,"生肖",$a&"年生属"&$sx[0][8]&$sx[1][8]&"年")
        Case Mod(($a-$nf[9]),12)=0 
                MsgBox (64,"生肖",$a&"年生属"&$sx[0][9]&$sx[1][9]&"年")
        Case Mod(($a-$nf[10]),12)=0 
                MsgBox (64,"生肖",$a&"年生属"&$sx[0][10]&$sx[1][10]&"年")
        Case Mod(($a-$nf[11]),12)=0 
                MsgBox (64,"生肖",$a&"年生属"&$sx[0][11]&$sx[1][11]&"年")
        
        EndSelect
发表于 2013-10-13 20:15:31 | 显示全部楼层
Local $y = 2013
MsgBox(0, $y, _SX($y))

Func _SX($YEAR)
        Local $iYEAR = 1900
        If $YEAR < $iYEAR Then Return SetError(1)
        Local $sData = '子鼠丑牛寅虎卯兔辰龙巳蛇午马未羊申猴酉鸡戌狗亥猪'
        Local $aData = StringRegExp($sData, '..', 3)
        Return $aData[Mod(($YEAR - $iYEAR), 12)]
EndFunc   ;==>_SX
发表于 2013-10-14 09:14:07 | 显示全部楼层
谢谢学习、、、、
发表于 2013-10-14 21:39:24 | 显示全部楼层
这种问题也需要拿出来讨论么。。。。
发表于 2013-10-14 21:40:02 | 显示全部楼层
回复 1# qq270037265


    从你这代码一眼看出编码新手。。
发表于 2013-10-14 22:01:28 | 显示全部楼层
回复 4# e10614083


    多理解一下,谁没有新手过!
发表于 2013-10-14 22:10:49 | 显示全部楼层
支持一下,多多学习哈。
发表于 2013-10-19 21:20:54 | 显示全部楼层
谢谢学习、、、、
发表于 2013-10-22 14:04:57 | 显示全部楼层
看看看看看看看看看看
发表于 2013-10-25 12:24:27 | 显示全部楼层
貌似写的恨得很多的样子~~~
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-22 21:17 , Processed in 0.074112 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表