CCF认证考试201612-2 工资计算题解

目录:代码

          易错点

          备注


代码:

// ===============================================================================
// 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函数后,在主函数加上这一段
//用来检测什么样的税前收入,可以让税后在临界值100000,用完删代码
发布了48 篇原创文章 · 获赞 21 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/qq_33810513/article/details/59540956