个人所得税问题

/*
题目:个人所得税问题(结构体数组)
内容: 编写一个计算个人所得税的程序,要求输入收入金额后,能够输出应缴的个人所得税。
作答者:小白杨
收获: 优化算法:运用结构体数组TaxTable[]存储税收金额和相应税率。 
*/ 

/*
#include <stdio.h>

int main()
{
	long x,tax,t;
	
	printf("请输入个人的收入:\n");
	scanf("%ld",&x);
	
	t = x-3500;
	if(t<=0)
		printf("个人收入达不到税收起征点:\n");
	else if(t>0&&t<=1500)
	{
		tax = (x-3500)*0.03;
	}
	else if(t>1500&&t<=4500)
	{
		tax = 1500*0.03+(x-5000)*0.1;
	}
	else if(t>4500&&t<=9000)
		tax = 1500*0.03+3000*0.1+(x-8000)*0.2;
	else if(t>9000&&t<=35000)
		tax = 1500*0.03+3000*0.1+4500*0.2+(x-12500)*0.25;
	else if(t>35000&&t<=55000)
		tax = 1500*0.03+3000*0.1+4500*0.2+26000*0.25+(x-38500)*0.3;
	else if(t>55000&&t<=80000)
		tax = 1500*0.03+3000*0.1+4500*0.2+26000*0.25+20000*0.3+(x-58500)*0.35;
	else if(t>80000)
		tax = 1500*0.03+3000*0.1+4500*0.2+26000*0.25+20000*0.3+25000*0.35+(x-83500)*0.45;
	
	printf("应缴的个人所得税为:%ld\n",tax);
	
	return 0;
 } 
*/
#include <stdio.h>

typedef struct{
	long start;
	long end;
	double taxrate;
}TAXTABLE;       //定义一个结构体数组来存储税收金额和相应税率

volatile long profit;  //应用volatile关键字,使profit每一次改变都会被发现
volatile long Tax = 0;

TAXTABLE TaxTable[] = {{3500,5000,0.03},{5000,8000,0.1},{8000,12500,0.2},
{12500,38500,0.25},{38500,58500,0.3},{58500,83500,0.35},{83500,1e10,0.45}};

long calc_Tax(TAXTABLE TaxTable[],int i)
{
	
	
	if(profit <= 3500||i>6)
	{
	}
	else if(profit>=TaxTable[i].start&&profit<=TaxTable[i].end)
	{
		Tax += (profit-TaxTable[i].start)* TaxTable[i].taxrate;
		//profit -= (profit-TaxTable[i].start);
	}
	else
	{
		Tax += (TaxTable[i].end-TaxTable[i].start)* TaxTable[i].taxrate;
		calc_Tax(TaxTable,i+1);  //应用递归思想
                /*在调用一个函数的过程中又出现直接或间接地调用该函数本身,称为函数的递归调用*/
	}
	
	return Tax;
}

int main()
{
	scanf("%ld",&profit);
	printf("%ld\n",calc_Tax(TaxTable,0));
	return 0;
 } 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值