用vb编写万年历小程序

用vb编写万年历小程序,第1张

用VB做万年历,非常关键点就是农历写法,参考代码如下:

#Region " 返回农历 "

'返回农历

'cCalendarMaxSupportedDateTime 返回支持的最大日期,即2101-1-28

'cCalendarMinSupportedDateTime 返回支持的最小日期,即190-2-19

Private cCalendar As New SystemGlobalizationChineseLunisolarCalendar

Public Function PubFunGet_CNDate(ByVal sDateTime As Date) As String

cCalendar = New SystemGlobalizationChineseLunisolarCalendar

Dim lyear As Integer = cCalendarGetYear(sDateTime)

Dim lmonth As Integer = cCalendarGetMonth(sDateTime)

Dim lday As Integer = cCalendarGetDayOfMonth(sDateTime)

Dim lweek As Integer = cCalendarGetDayOfWeek(sDateTime)

'获取闰月, 0 则表示没有闰月

Dim leapMonth As Integer = cCalendarGetLeapMonth(lyear)

Dim isleap As Boolean = False

If (leapMonth > 0) Then

If (leapMonth = lmonth) Then

'闰月

isleap = True

lmonth = lmonth - 1

ElseIf (lmonth > leapMonth) Then

lmonth = lmonth - 1

End If

End If

Return StringConcat(GetLunisolarYear(lyear), IIf(isleap = True, "闰年", "年"), GetLunisolarMonth(lmonth), "月", GetLunisolarDay(lday))

End Function

'十天干

Private tiangan As String() = {"甲", "乙", "丙", "丁", "戊", "己", "庚", "辛", "壬", "癸"}

'十二地支

Private dizhi As String() = {"子", "丑", "寅", "卯", "辰", "巳", "午", "未", "申", "酉", "戌", "亥"}

'十二生肖

Private shengxiao As String() = {"鼠", "牛", "虎", "免", "龙", "蛇", "马", "羊", "猴", "鸡", "狗", "猪"}

'农历月

Private months As String() = {"正", "二", "三", "四", "五", "六", "七", "八", "九", "十", "十一", "十二(腊)"}

'农历日

Private days1 As String() = {"初", "十", "廿", "三"}

Private days As String() = {"一", "二", "三", "四", "五", "六", "七", "八", "九", "十"}

'返回农历年(天干 地支 生肖)

Private Function GetLunisolarYear(ByVal year As Integer) As String

GetLunisolarYear = ""

If (year > 3) Then

Dim tgIndex As Integer = (year - 4) Mod 10

Dim dzIndex As Integer = (year - 4) Mod 12

Return tiangan(tgIndex) & dizhi(dzIndex) & "[" & shengxiao(dzIndex) & "]"

End If

'无效的年份!

End Function

'返回生肖

Private Function GetShengXiao(ByVal sDateTime As Date) As String

Return shengxiao(cCalendarGetTerrestrialBranch(cCalendarGetSexagenaryYear(sDateTime)) - 1)

End Function

'返回农历月

Private Function GetLunisolarMonth(ByVal month As Integer) As String

GetLunisolarMonth = ""

If (month < 13 AndAlso month > 0) Then

Return months(month - 1)

End If

'无效的月份!

End Function

'返回农历日

Private Function GetLunisolarDay(ByVal day As Integer) As String

GetLunisolarDay = ""

If (day > 0 AndAlso day < 32) Then

If (day <> 20 AndAlso day <> 30) Then

Return StringConcat(days1((day - 1) \ 10), days((day - 1) Mod 10))

Else

Return StringConcat(days((day - 1) \ 10), days1(1))

End If

End If

'无效的日!

End Function

#End Region

Private Sub form_click()

MeShow

m = 10

n = 1

Print Int(Rnd (m - n - 1) + n + 1)

End Sub

第二题

Private Sub Form_Load()

Timer1Enabled = True

Timer1Interval = 1000

End Sub

Private Sub Timer1_Timer()

Cls

Print Format(Now, "long date") & " " & Time

End Sub

需要两个函数,一个因子和计算,一个因子和输出。程序窗体放置一个文本框,设置其MultiLine为True。源程序如下:

Option Explicit

Dim I As Long, J As Long, X As Long

Private Sub Form_Load()

MeShow

For I = 1 To 10000

DoEvents

X = Yzh(I)

If X <= 10000 And I < X Then

If Yzh(X) = I Then

Text1 = Text1 & "(" & I & "," & X & ")" & Chr(13) & Chr(10)

YzhOut (I)

YzhOut (X)

End If

End If

Next

Text1 = Text1 & "计算完成"

End Sub

Private Function Yzh(N As Long) As Long

Yzh = 0

For J = 1 To N / 2

If N Mod J = 0 Then Yzh = Yzh + J

Next

End Function

Private Function YzhOut(N As Long) As Long

Dim Yzh As Long

Text1 = Text1 & N & "=1"

Yzh = 1

For J = 2 To N / 2

If N Mod J = 0 Then

Text1 = Text1 & "+" & J

Yzh = Yzh + J

End If

Next

Text1 = Text1 & "=" & Yzh & Chr(13) & Chr(10)

End Function

程序计算结果,有5组亲密数对,程序输出是:

(220,284)

220=1+2+4+5+10+11+20+22+44+55+110=284

284=1+2+4+71+142=220

(1184,1210)

1184=1+2+4+8+16+32+37+74+148+296+592=1210

1210=1+2+5+10+11+22+55+110+121+242+605=1184

(2620,2924)

2620=1+2+4+5+10+20+131+262+524+655+1310=2924

2924=1+2+4+17+34+43+68+86+172+731+1462=2620

(5020,5564)

5020=1+2+4+5+10+20+251+502+1004+1255+2510=5564

5564=1+2+4+13+26+52+107+214+428+1391+2782=5020

(6232,6368)

6232=1+2+4+8+19+38+41+76+82+152+164+328+779+1558+3116=6368

6368=1+2+4+8+16+32+199+398+796+1592+3184=6232

计算完成

以上就是关于用vb编写万年历小程序全部的内容,包括:用vb编写万年历小程序、用VB写个小程序、请用vb编写一个找出10000以内的亲密数对的小程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9343091.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存