一、题目
二、解题
1.题目
可以利用查表法按照常规思路计算,也可以正向计算,因为工资都是一个整百的数,我们从100开始枚举,然后计算缴纳税款,然后得到实际工资,如果匹配,税前工作就是当前的枚举
2.代码
dev c++ 5.11
#include<iostream>
#include<algorithm>
using namespace std;
int tax(int x){
int a[8]={0,1500,4500,9000,35000,55000,80000,0x3f3f3f};
float b[8]={0,0.03,0.1,0.2,0.25,0.3,0.35,0.45};
int tax=0;
if(x<=3500){
return 0;
}else{
int n=x-3500;
for(int j=1;j<8;j++){
if(n>a[j-1]){
tax+=(min(a[j]-a[j-1],n-a[j-1]))*b[j];
}
else break;
}
}
return tax;
}
int main(){
int t;
cin>>t;
for(int s=100;s<=200000;s+=100){
if(t==s-taxsi)){
cout<<s;
break;
}
}
return 0;
}
3.提交结果
总结
1.解释
计算个人所得税,并通过输入工资数额,输出扣除个人所得税后的实际工资。具体的实现思路如下:
-
定义一个函数 int tax(int x) 用于计算个人所得税,其中参数 x 表示个人工资数额。
-
在 tax() 函数中定义两个数组 a 和 b,分别用于记录税率所对应的阈值和对应的税率。其中,数组 a 中的元素表示该阈值下个人所得应缴纳的税款,数组 b 中的元素表示对应阈值所对应的税率。
-
接着,在 tax() 函数中,当参数 x 不大于 3500 时,函数直接返回 0 表示该工资数额无需纳税。否则,计算实际需要缴纳的个人所得税,具体如下。
-
初始化变量 tax 为 0,表示当前个人所得税金额为 0。
-
计算实际需要缴纳的个人所得税。首先,根据公式 n = x-3500 计算出需要缴纳个人所得税的工资数额。
-
接着,循环判断当前工资数额 n 所处的阈值,根据对应的税率 b 计算出需要缴纳的个人所得税额,并将其累加到变量 tax 中。
-
最后,返回变量 tax 表示实际需要缴纳的个人所得税金额。
-
在 main() 函数中,首先输入一个工资数额 t,然后循环进行如下操作:
-
从 100 到 200000 按照步长为 100 的方式遍历每一个工资数额 s。对于每一个 s,通过调用 tax() 函数计算其实际需要缴纳的个人所得税金额,并将其从 s 中扣除,得到实际工资数额。
-
判断实际工资数额是否等于输入的工资数额 t,如果相等,则输出该工资数额 s,并跳出循环。
-
如果循环结束还没有找到匹配的工资数额,则输出 0。