怎样设计VB程序计算-打鱼还是晒网

发布时间:2024-05-16 07:44 发布:上海旅游网

问题描述:

中国有句俗语叫“三天打鱼两天晒网”。某人从1990年1月1日起开始“三天打鱼两天晒网”,问这个人在以后的某一天中是“打鱼”还是“晒网”。
*问题分析与算法设计
根据题意可以将解题过程分为三步:
1)计算从1990年1月1日开始至指定日期共有多少天;
2)由于“打鱼”和“晒网”的周期为5天,所以将计算出的天数用5去除;
3)根据余数判断他是在“打鱼”还是在“晒网”;
若 余数为1,2,3,则他是在“打鱼”
否则 是在“晒网”
在这三步中,关键是第一步。求从1990年1月1日至指定日期有多少天,要判断经历年份中是否有闰年,二月为29天,平年为28天。闰年的方法可以用伪语句描述如下:
如果 ((年能被4除尽 且 不能被100除尽)或 能被400除尽)
则 该年是闰年;

问题解答:

Private Sub Form_Click()
On Error Resume Next
Dim D As Date
Do
Err.Clear
D = CDate(InputBox("请输入要判断的日期(格式如: 2008-9-11)" & vbCrLf & "不能早于 1990-1-1", , Date))
Loop While Err.Number > 0 Or D < #1/1/1990#
i = D - #1/1/1990#
If i Mod 5 < 3 Then
Print Format(D, "YYYY年MM月DD日:"); "打鱼"
Else
Print Format(D, "YYYY年MM月DD日:"); "晒网"
End If
End Sub

不用这么麻烦!
1:
天数=#6/3/2008# - #1/1/1990#
2:
不用这一步
3:
余数=天数 mod 5

Private Sub Command1_Click()
On Error Resume Next
Dim D As Date
Dim i As Integer
Do
Err.Clear
D = CDate(InputBox("请输入要判断的日期(格式如: 2008-9-11)" & vbCrLf & "不能早于 1990-1-1", , Date))
Loop While Err.Number > 0 Or D < #1/1/1990#
i = D - #1/1/1990#
If i Mod 5 < 3 Then
Print Format(D, "YYYY年MM月DD日:"); "打鱼"
Else
Print Format(D, "YYYY年MM月DD日:"); "晒网"
End If
End Sub

Option Explicit

Private Sub Command1_Click()
Dim TempSTR As String, Date1 As Date
Dim I As Long

On Error GoTo ExitLoop
TempSTR = InputBox("请输入一个日期:", , Date)
Date1 = CDate(TempSTR)
I = DateDiff("D", "1900-1-1", Date1) Mod 5
MsgBox "今天是" & IIf(I > 2, "晒网", "打鱼"), vbOKOnly, "三天打鱼两天晒网"
Exit Sub
ExitLoop:
MsgBox "输入错误!", vbOKOnly Or vbExclamation, "三天打鱼两天晒网"
End Sub

不用这么麻烦!
1:
天数=#6/3/2008# - #1/1/1990#
2:
不用这一步
3:
余数=天数 mod 5

热点新闻