【CSP试题回顾】201612-2-工资计算(优化)

该篇文章详细描述了一个C++程序,用于计算个人所得税税后所得对应的税前工资,通过分段计算税率区间和累进税率机制。程序初始化变量,接收用户输入的税后所得,遍历税率区间,逐步逆推出税前工资。
摘要由CSDN通过智能技术生成

CSP-201612-2-工资计算

解题思路

代码通过分段计算的方式,首先确定税后所得T对应的税前工资所处的税率区间,然后根据这个区间和相应的比例,逐步逆推出税前工资S。

  1. 初始化变量:程序初始化了多个变量来处理计算:

    • T:代表小明的税后所得(即输入的T值)。
    • A:代表扣除个人所得税起征点(3500元)后的金额。
    • S:以3500元作为初始税前工资,这是因为3500元是个人所得税的起征点。
    • KP:这两个向量(数组)存储了用于计算税率的分界点和相关参数。
    • k:存储了每个税率段对应的实际到手比例(例如,税率为3%,则到手比例为0.97,即97%)。
  2. 输入处理:程序通过cin >> T;接收用户输入的税后所得T。

  3. 基础判断:如果T小于或等于3500元,直接输出T作为税前工资,因为这意味着没有需要缴纳的个人所得税。

  4. 计算税前工资

    • 首先,程序通过A = T - 3500;计算出超出起征点的部分。
    • 然后,使用一个循环遍历K数组来确定应该使用哪个税率计算。每个循环迭代对应不同的税收区间。
    • 在每个循环中,首先判断A - K[index]是否小于或等于0,如果是,则表示当前的A值(即累计超出的部分)属于当前的税率区间。
    • 如果A - K[index]大于0,表示当前累计超出的部分超过了当前区间,需要减去K[index](即当前区间的税收部分)并增加对应的P[index]S中,P[index]表示在当前税率下的最大可能增加到税前工资的金额。
    • 循环继续,直到找到正确的税率区间。
  5. 计算并输出最终税前工资

    • 最后,使用S += A / k[index];来计算最终的税前工资。这里,A / k[index]表示在当前税率区间内,剩余的税后所得对应的税前金额。将其加到之前的S上,得到完整的税前工资。
    • 最后输出税前工资S

完整代码

#include <iostream>
#include <vector>
using namespace std;

long long T, A, S = 3500, index = 0;
vector<long long> K = {1455, 2700, 3600, 19500, 14000, 16250};
vector<long long> P = {1500, 3000, 4500, 26000, 20000, 25000};
vector<double> k = {0.97, 0.9, 0.8, 0.75, 0.7, 0.65, 0.55};

int main()
{
    cin >> T;
    if (T <= 3500) 
    {
        cout << T;
        return 0;
    }
    A = T - 3500;
    while (true)
    {
        if (A - K[index] <= 0 || index == 6) 
            break;
        else
        {
            A -= K[index];
            S += P[index];
            index++;
        }
    }
    S += A / k[index];
    cout << S;
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值