回 帖 发 新 帖 刷新版面

主题:菜鸟求助!

最近在考计算机二级看到一条题目想把程序编出来!可是了几次都没有找出什么地方出了错!请高手指导下!不甚感激!
题目:税务部门征收所得税,规定如下:
(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个回复)

沙发

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%”理解应当为分级累进税制。如果是修改税率,另当别论。

板凳


谢谢,大虾的回帖,我测试了下,你的可以,为啥我的就错了呢?错在哪儿额?

3 楼

本团队诚信承接各类软件开发工程,联系QQ:82341763
一个简单的举动就可以免除您在公司电脑面前每天重负着同样的工作!

4 楼

给你调整了一下格式,这样好看些,然后再说问题。
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

我来回复

您尚未登录,请登录后再回复。点此登录或注册