解题思路:
理解应缴税额(工资中多少金额要交税,不是所有工资都要拿来交税的)=工资-基本交税工资(这里是3500)
Employee构造函数,带两个参数,分别是名字和工资
提供获取名字和工资的方法,是可以公开调用的方法
提供一个计算税率的方法double coudsui(double salary) { int suilv;//税率 int su_suan;//速算扣除数 int chao_=salary-3500; //超过最低标准金额 if(chao_<=1500) { suilv=3;su_suan=0; }else if(chao_>1500 && chao_<=4500) { suilv=10;su_suan=105; }else if(chao_>4500 && chao_<=9000) { suilv=20;su_suan=555; }else if(chao_>9000 && chao_<=35000) { suilv=25;su_suan=1005; }else if(chao_>35000 && chao_<=55000) { suilv=30;su_suan=2755; }else if(chao_>55000 && chao_<=80000) { suilv=35;su_suan=5505; }else { suilv=45;su_suan=13505; } double sui=chao_*suilv*0.01-su_suan; return sui; }
完整代码:
#include <iostream> #include<vector> #include<math.h> #include<algorithm> #include<iomanip> using namespace std; class Employee { private: string name; double salary; // write your code here...... public: Employee(string name,double salary) { this->name=name; this->salary=salary; } string getname() { return this->name; } double getsalary() { return this->salary; } double coudsui(double salary) { int suilv;//税率 int su_suan;//速算扣除数 int chao_=salary-3500; //超过最低标准金额 if(chao_<=1500) { suilv=3;su_suan=0; }else if(chao_>1500 && chao_<=4500) { suilv=10;su_suan=105; }else if(chao_>4500 && chao_<=9000) { suilv=20;su_suan=555; }else if(chao_>9000 && chao_<=35000) { suilv=25;su_suan=1005; }else if(chao_>35000 && chao_<=55000) { suilv=30;su_suan=2755; }else if(chao_>55000 && chao_<=80000) { suilv=35;su_suan=5505; }else { suilv=45;su_suan=13505; } double sui=chao_*suilv*0.01-su_suan; return sui; } }; //比较方法 double cmp(Employee&e1,Employee&e2) { return e1.getsalary()>e2.getsalary(); } int main() { // write your code here...... Employee e1("张三",6500); Employee e2("李四",8000); Employee e3("王五",100000); vector<Employee>vec; vec.push_back(e1); vec.push_back(e2); vec.push_back(e3); sort(vec.begin(),vec.end(),cmp); cout<<fixed<<setprecision(1); for(auto it=vec.begin();it!=vec.end();it++) { cout<<it->getname()<<"应该缴纳的个人所得税是:"<< it->coudsui(it->getsalary())<<endl; } return 0; }