c++打卡第十五天
一、问题描述
二、设计思路。
①、我们在此使用结构体定义结构体数组,结构体数组中包括每个阶段的征税始末,以及相对应的税率。当我们将工资传入时,会出现相应阶段的部分,以及总共应需缴纳金额。
②、我们设计计算函数,通过for循环进行计算各个阶段的计算,同时使用选择语句,判断工资是否完全在此阶段,如8999在4500~9000阶段,但并不完全包括,那么此时就需要使用当前的工资减去起始工资,乘以税率,得到当前阶段所需要缴纳的税费。
三、流程图
四、代码实现
#include<iostream> using namespace std; #define Q 3500 typedef struct Wage { long begin; long end; double rate; }Wage; Wage wages[7]={{0,3500,0.03},{1500,4500,0.1},{4500,9000,0.2},{9000,35000,0.25},{35000,55000,0.3},{55000,80000,0.35},{80000,1e10,0.45}}; double calu(long profit) { int i=0; double tax=0; profit-=Q; for(i=0;i<7;i++) { if(profit>wages[i].begin) { if(profit>wages[i].end) { tax+=(wages[i].end-wages[i].begin)*wages[i].rate; } else { tax+=(profit-wages[i].begin)*wages[i].rate; } } else { break; } cout<<"本阶段征收范围为:"<<wages[i].begin<<"~"<<wages[i].end<<",该范围所缴纳金额为"<<tax<<"超出该范围金额为:"<<((profit-wages[i].end)>0?(profit-wages[i].end):0)<<endl; } return tax; } int main() { long profit; double tax=0; int flag=1; while(flag) { cin>>profit; tax=calu(profit); cout<<"此人最终所交的税费为:"<<tax<<endl; cout<<"如果想要继续测试工资所交的税费,请输入1,否则输入0"<<endl; cin>>flag; } return 0; }
五、结果显示