主题:菜鸟求助!
caoxiaoluo
[专家分:0] 发布于 2011-03-12 12:02:00
最近在考计算机二级看到一条题目想把程序编出来!可是了几次都没有找出什么地方出了错!请高手指导下!不甚感激!
题目:税务部门征收所得税,规定如下:
(1)收入在200元以下,免征。
(2)收入在200~400元,超过200元的部分纳税3%
(3)收入超过400元的部分,纳税4%;
(4)当收入达到5000元时,将4%税金改为5%
我写的程序:
Private Sub Command1_Click()
Dim revenue As Single, tax As Single
revenue = InputBox("请税务人员正确输入公民收入:", "税务统计", 1)
Select Case revenue
Case 0 To 200
MsgBox ("该公民由于收入较小予以免税")
Case 200 To 400
tax = (revenue - 200) * 0.03
MsgBox ("该公民应该缴纳的税款为:" + tax + "元")
Case 400 To 5000
tax = 200 * 0.03 + (revenue - 200) * 0.04
MsgBox ("该公民应该缴纳的税款为:" + tax + "元")
Case Else
If revenue < 0 Then
MsgBox ("输入有误")
Else
tax = 200 * 0.03 + (5000 - 400) * 0.04 + (revenue - 500) * 0.05
MsgBox ("该公民应该缴纳的税款为:" + tax + "元")
End If
End Select
End Sub
回复列表 (共4个回复)
沙发
老大徒伤悲 [专家分:29120] 发布于 2011-03-12 13:30:00
Const 标题 = "税务统计"
Private Sub Command1_Click()
Dim 应税收入 As Single, 税金 As Single
Do
应税收入 = InputBox("请税务人员正确输入公民收入(¥):", 标题, 1)
If 应税收入 < 0 Then
MsgBox "输入金额有误", vbExclamation, 标题
Else
Exit Do
End If
Loop
If 应税收入 >= 200 Then 税金 = (应税收入 - 200) * 0.03
If 应税收入 >= 400 Then 税金 = 税金 + (应税收入 - 400) * 0.01 '其中3%前面以面已经算过,所以这里只算1%
If 应税收入 >= 5000 Then 税金 = 税金 + (应税收入 - 5000) * 0.01 '同上
MsgBox "应税收入为:" & 应税收入 & "元" & vbCrLf & "应缴纳税金为:" & 税金 & "元", vbInformation, 标题
End Sub
这里我对“(4)当收入达到5000元时,将4%税金改为5%”理解应当为分级累进税制。如果是修改税率,另当别论。
板凳
caoxiaoluo [专家分:0] 发布于 2011-03-14 12:40:00
谢谢,大虾的回帖,我测试了下,你的可以,为啥我的就错了呢?错在哪儿额?
3 楼
lisypro [专家分:240] 发布于 2011-03-28 12:21:00
本团队诚信承接各类软件开发工程,联系QQ:82341763
一个简单的举动就可以免除您在公司电脑面前每天重负着同样的工作!
4 楼
孙瑞 [专家分:590] 发布于 2011-03-28 19:52:00
给你调整了一下格式,这样好看些,然后再说问题。
Private Sub Command1_Click()
Dim revenue As Single, tax As Single
revenue = InputBox("请税务人员正确输入公民收入:", "税务统计", 1)
Select Case revenue
Case 0 To 200
MsgBox ("该公民由于收入较小予以免税")
Case 200 To 400
tax = (revenue - 200) * 0.03
MsgBox ("该公民应该缴纳的税款为:" + tax + "元")
Case 400 To 5000
tax = 200 * 0.03 + (revenue - 200) * 0.04
MsgBox ("该公民应该缴纳的税款为:" + tax + "元")
Case Else
If revenue < 0 Then
MsgBox ("输入有误")
Else
tax = 200 * 0.03 + (5000 - 400) * 0.04 + (revenue - 500) * 0.05
MsgBox ("该公民应该缴纳的税款为:" + tax + "元")
End If
End Select
End Sub
你的问题出在这几个地方【我只看出这些】
1.你写的:
MsgBox ("该公民应该缴纳的税款为:" + tax + "元")
这里面使用了“+”。但是,你需要注意,由于“+”含有多重意思,既包含加减的加的含意,又有合并字串的含义。所以,在程序设计中,绝大多数情况是使用“&”来完成字符串的连接(合并)。
2.没有进行输入数据合法性的判断。
比如我输入的是字母呢?是数字和字母的组合呢?是汉子呢?你的程序就会出错【类型不匹配】。所以你需要进行输入数据合法性的判断。
如下是我给你的修改意见【没有修正数据合法性判断的问题】
Private Sub Command1_Click()
Dim revenue As Single, tax As Single
revenue = InputBox("请税务人员正确输入公民收入:", "税务统计", 1)
Select Case revenue
Case 0 To 200
MsgBox ("该公民由于收入较小予以免税")
Case 200 To 400
tax = (revenue - 200) * 0.03
MsgBox ("该公民应该缴纳的税款为:" & tax & "元")
Case 400 To 5000
tax = 200 * 0.03 + (revenue - 200) * 0.04
MsgBox ("该公民应该缴纳的税款为:" & tax & "元")
Case Else
If revenue < 0 Then
MsgBox ("输入有误")
Else
tax = 200 * 0.03 + (5000 - 400) * 0.04 + (revenue - 500) * 0.05
MsgBox ("该公民应该缴纳的税款为:" & tax & "元")
End If
End Select
End Sub
我来回复