目录:代码
易错点
备注
代码:
// ===============================================================================
// File Name : ccf真题-201612-2-工资计算AC代码.cpp
// Author : Sneexy
// Create Time : 2017/03/02 16:36:25
// Update Time : 2017/03/02 16:36:25
// CSDN blog address : http://blog.csdn.net/qq_33810513
// ===============================================================================
#include
using namespace std;
int tax(int A)//函数里将钱除以一百,税率乘以一百计算。用以避免使用小数
{
int sum = 0;
int tmp = A / 100;
if(tmp > 800)
{
sum += (tmp - 800) * 45;
tmp = 800;
}
if(tmp > 550)
{
sum += (tmp - 550) * 35;
tmp = 550;
}
if(tmp > 350)
{
sum += (tmp - 350) * 30;
tmp = 350;
}
if(tmp > 90)
{
sum += (tmp - 90) * 25;
tmp = 90;
}
if(tmp > 45)
{
sum += (tmp - 45) * 20;
tmp = 45;
}
if(tmp > 15)
{
sum += (tmp - 15) *10;
tmp = 15;
}
sum += tmp * 3;
return sum;//返回A的实际税款
}
int main()
{
int i;//临时变量
int afterTax[1545];//afterTax[i]表示i*100的税后工资
for(i = 0; i <= 35; i++) afterTax[i] = i * 100; //无税
for(i = 36; i < 1546; i++) afterTax[i] = i * 100 - tax(i * 100 - 3500);
//查询
int T;//税后工资
int flag = false;//flag为true退出查询
cin >> T;
for(i = 0; i < 1546; i++)
{
if(flag)break;
if(afterTax[i] == T)
{
cout << i*100 << endl;
flag = true;
}
}
return 0;
}
易错点:
1.税后工资是税前工资减去3500之后按照题目中的比例进行计算,不能直接算。
2.题目中T>1低于3500的工资,仍有税后工资。
备注:while(cin>>i)
{
cout<<"i afterTax: "<<i-tax(i-3500)<<endl;
}
//刚写完tax函数后,在主函数加上这一段
{
cout<<"i afterTax: "<<i-tax(i-3500)<<endl;
}
//刚写完tax函数后,在主函数加上这一段
//用来检测什么样的税前收入,可以让税后在临界值100000,用完删代码