各位高手!我学了一个月才学会了写一个小的程序:计算是不是闰年,以及是什么季节,可还是出问题,请问什么地方有问题了?
闰年计算不精确,如1900年为非闰年,却计算为闰年,季节计算错误,永远显示为"冬季"Dim a, b As SinglePrivate Sub Command1_Click()
a = Val(Text1.Text)
b = Val(Text2.Text)
Select Case a Mod 400 And a Mod 4 And a Mod 100
Case a Mod 400 = 0
Label5.Caption = "闰年"
Case a Mod 4 = 0 And a Mod 100 <> 0
Label5.Caption = "闰年"
Case Else
Label5.Caption = "非闰年"
End Select
Select Case b
Case b >= 1 And b <= 3
Label6.Caption = "春季"
Case b >= 4 And b <= 6
Label6.Caption = "夏季"
Case b >= 7 And b <= 9
Label6.Caption = "秋季"
Case Else
Label6.Caption = "冬季"
End Select
End SubPrivate Sub Command2_Click()
End
End Sub
闰年计算不精确,如1900年为非闰年,却计算为闰年,季节计算错误,永远显示为"冬季"Dim a, b As SinglePrivate Sub Command1_Click()
a = Val(Text1.Text)
b = Val(Text2.Text)
Select Case a Mod 400 And a Mod 4 And a Mod 100
Case a Mod 400 = 0
Label5.Caption = "闰年"
Case a Mod 4 = 0 And a Mod 100 <> 0
Label5.Caption = "闰年"
Case Else
Label5.Caption = "非闰年"
End Select
Select Case b
Case b >= 1 And b <= 3
Label6.Caption = "春季"
Case b >= 4 And b <= 6
Label6.Caption = "夏季"
Case b >= 7 And b <= 9
Label6.Caption = "秋季"
Case Else
Label6.Caption = "冬季"
End Select
End SubPrivate Sub Command2_Click()
End
End Sub
a Mod 4就行了
2.
Dim b as integer
b = val(Trim(Text2.text))
Case a Mod 400 = 0
Label5.Caption = "闰年"
Case a Mod 4 = 0 And a Mod 100 <> 0
Label5.Caption = "闰年"
Case Else
Label5.Caption = "非闰年"
End Select
只会执行case a mod 400
写成这样。
Select true
Case a Mod 400 = 0
Label5.Caption = "闰年"
Case a Mod 4 = 0 And a Mod 100 <> 0
Label5.Caption = "闰年"
Case Else
Label5.Caption = "非闰年"
End Select以上不论你计算闰年方法对不对。
给个例子你看一下
Select Case Val(Text1)
Case True: MsgBox "true"
Case False: MsgBox "false"
Case Else: MsgBox "other"
End Select
分别在Text1里输入-1,0,1,看一下结果。
再试一下,下面的代码
Select Case Val(Text1)
Case 1: MsgBox "true"
Case 0: MsgBox "false"
Case Else: MsgBox "other"
End Select
不知道你明白我的意思没有.
select case 表达式
case 结果1
case 结果2
case 结果,结果4'case 分支里也可以同时放多个结果
case else
end select
我再分析一下你的代码
Select Case a Mod 400 And a Mod 4 And a Mod 100'表达式的结果是一个整数(0,或1)
Case a Mod 400 = 0'当a取1900,这里的表达式为false也就是0,上面的表达式为0,所以1900年成了闰年。
Label5.Caption = "闰年"
Case a Mod 4 = 0 And a Mod 100 <> 0
Label5.Caption = "闰年"
Case Else
Label5.Caption = "非闰年"
End Select
Select Case b'这里的b在1-12之间
Case b >= 1 And b <= 3'这里表达式如果true则为-1,否则为0,则条件永远不成立
Label6.Caption = "春季"
Case b >= 4 And b <= 6'以下同理
Label6.Caption = "夏季"
Case b >= 7 And b <= 9
Label6.Caption = "秋季"
Case Else
Label6.Caption = "冬季"'这个在你的这段代码里是必然。
End Select
End Sub
Private Sub Command1_Click()
Dim a As Integer, b As Integer
a = Val(Text1.Text)
b = Val(Text2.Text)
If (a Mod 4 = 0 And a Mod 100 <> 0) Or (a Mod 400 = 0) Then
Label1.Caption = "闰年"
Else
Label1.Caption = "非闰年"
End If
Select Case b
Case 1, 2, 3
Label2.Caption = "春季"
Case 4, 5, 6
Label2.Caption = "夏季"
Case 7, 8, 9
Label2.Caption = "秋季"
Case 10, 11, 12
Label2.Caption = "冬季"
Case Else
Label2.Caption = "月份输入错误"
End Select
End Sub