C语言计算个人所得税问题代码及介绍
发布时间:2021-12-05 13:54:28 所属栏目:教程 来源:互联网
导读:问题描述 编写一个计算个人所得税的程序,要求输入收入金额后,能够输出应缴的个人所得税。 个人所得税征收办法如下: ◎ 起征点为3500元; ◎ 不超过1500元的部分,征收3%; ◎ 超过15004500元的部分,征收10%; ◎ 超过45009000元的部分,征收20%; ◎ 超
问题描述 编写一个计算个人所得税的程序,要求输入收入金额后,能够输出应缴的个人所得税。 个人所得税征收办法如下: ◎ 起征点为3500元; ◎ 不超过1500元的部分,征收3%; ◎ 超过1500〜4500元的部分,征收10%; ◎ 超过4500〜9000元的部分,征收20%; ◎ 超过9000〜35000元的部分,征收25%; ◎ 超过35000〜55000元的部分,征收30%; ◎ 超过55000〜80000元的部分,征收35%; ◎ 超过80000元以上的,征收45%。 问题分析 个人所得税是根据收入金额划分为不同阶段征收的,分析题目特点,可以使用结构体来描述题目中的条件。 算法设计 可以使用结构体数组存放不同的税率范围。接着使用 for 循环遍历每一个征税范围,将个人收入中超出起征点的金额在每个征税范围内应缴纳的税款累加起来,就得到最后应缴纳的个人所得税。 纳税金额流程图: 下面是完整的代码: #include <stdio.h> #include <limits.h> #define TAXBASE 2000 /*定义结构体*/ typedef struct { long start; long end; double taxrate; }TAXTABLE; TAXTABLE TaxTable[] = { {0, 1500, 0.03}, {1500, 4500, 0.10}, {4500, 9000, 0.20}, {9000, 35000, 0.25}, {35000, 55000, 0.30}, {55000, 80000, 0.35}, {80000, LONG_MAX, 0.45} }; double CaculateTax(long profit) { int i; double tax = 0.0; profit -= TAXBASE; for(i=0; i<sizeof(TaxTable)/sizeof(TAXTABLE); i++) { if(profit>TaxTable[i].start) { if(profit>TaxTable[i].end) { tax += (TaxTable[i].end-TaxTable[i].start) * TaxTable[i].taxrate; } else { tax += (profit-TaxTable[i].start) * TaxTable[i].taxrate; } profit -= TaxTable[i].end; printf("征税范围:%6ld~%6ld 该范围内缴税金额:%6.2f 超出该范围的金额:%6ldn", TaxTable[i].start, TaxTable[i].end,tax, (profit)>0 ? profit:0); } } return tax; } int main() { long profit; double tax; printf("请输入个人收入金额: "); scanf("%ld", &profit); tax = CaculateTax(profit); printf("您的个人所得税为: %.2fn", tax); return 0; } 运行代码 运行结果: 请输入个人收入金额: 3000 征税范围: 0~ 1500 该范围内缴税金额: 30.00 超出该范围的金额: 0 您的个人所得税为: 30.00 linuxidc@linuxidc:~/linuxidc.com$ ./linuxidc.com 请输入个人收入金额: 5000 征税范围: 0~ 1500 该范围内缴税金额: 45.00 超出该范围的金额: 1500 您的个人所得税为: 45.00 linuxidc@linuxidc:~/linuxidc.com$ ./linuxidc.com 请输入个人收入金额: 60000 征税范围: 0~ 1500 该范围内缴税金额: 45.00 超出该范围的金额: 56500 征税范围: 1500~ 4500 该范围内缴税金额:345.00 超出该范围的金额: 52000 征税范围: 4500~ 9000 该范围内缴税金额:1245.00 超出该范围的金额: 43000 征税范围: 9000~ 35000 该范围内缴税金额:7745.00 超出该范围的金额: 8000 您的个人所得税为: 7745.00 ![]() (编辑:葫芦岛站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐