华为公司电子商务网站建设策划书,网站建设与网站管理,电子商务网站规划与建设论文,网站建设行业动态参考信息 杭州市的个人所得税起征点是每月5000元。 个人所得税税率标准#xff1a; 1、工资范围在1-5000元之间的#xff0c;包括5000元#xff0c;适用个人所得税税率为0%; 2、工资范围在5000-8000元之间的#xff0c;包括8000元#xff0c;适用个人所得税税率为3%; 3、工…参考信息 杭州市的个人所得税起征点是每月5000元。 个人所得税税率标准 1、工资范围在1-5000元之间的包括5000元适用个人所得税税率为0%; 2、工资范围在5000-8000元之间的包括8000元适用个人所得税税率为3%; 3、工资范围在8000-17000元之间的包括17000元适用个人所得税税率为10%; 4、工资范围在17000-30000元之间的包括30000元适用个人所得税税率为20%; 5、工资范围在30000-40000元之间的包括40000元适用个人所得税税率为25%; 6、工资范围在40000-60000元之间的包括60000元适用个人所得税税率为30%; 7、工资范围在60000-85000元之间的包括85000元适用个人所得税税率为35%; 8、工资范围在85000元以上的适用个人所得税税率为45%。 注意这个月薪工资是扣除五险一金之后的个人所得金额这部分需要缴纳个税。
思路
初级程序员 啊这有什么难的直接 判断做几十个if else不就OK了吗 如果小于5000直接扣税0大于5000再看是不是大于8000是的话先扣 3000 * 3%一直往下走不就行了。 这样写确实实现了功能。不过如果这类问题标准有100项岂不是需要写400行以上代码。
中级程序员 标准可以配置化如果需求数值变更只需要修改配置即可。 优化 多次计算的情况下可以做预处理减少重复加法。 代码
#define NDEBUG //禁用断言
#include iostream
#include bits/stdc.h //引入所有的C标准库头文件using namespace std; //使用std命名空间typedef struct ShuiCfg { //定义结构体类型ShuiCfgShuiCfg(int a, int b, int c){ //定义结构体初始化函数min a;max b;rate c;}int min 0; //定义最小值int max INT32_MAX; //定义最大值int rate 0; //定义税率
} ShuiCfg;GetAfterShui(vectorShuiCfg vec, vectorint vec_rmb) { //定义函数GetAfterShui参数为struct数组和int数组的引用cout GetAfterShui endl; //输出字符串GetAfterShuifor (auto rmb : vec_rmb) { //使用范围for循环遍历vec_rmbint shui 0; //定义税为0for (auto it : vec) { //使用范围循环遍历vec数组if (rmb it.max) { //如果rmb大于it.max即工资大于本档次最大值shui (it.max - it.min) * it.rate / 100; //税收增量最大值-最小值×税率÷100} else { //否则即工资小于本档次最大值shui (rmb - it.min) * it.rate / 100; //税收增量工资-最小值×税率÷100break; //结束for循环}}cout rmb ,shui shui , last rmb - shui endl; //输出工资、税收增量和取得实际收入后}
}GetAfterShui2(vectorShuiCfg vec, vectorint vec_rmb) { //定义函数GetAfterShui2参数为struct数组和int数组的引用cout GetAfterShui2 endl; //输出字符串GetAfterShui2vectorint vec_before; //定义存储之前税收的vectorint before 0; //定义之前税收的累加值初始值为0for (auto it : vec) { //使用范围循环遍历vec数组vec_before.push_back(before); //将之前税收的累加值压入vec_before中before (it.max - it.min) * it.rate / 100; //之前税收累计值最大值-最小值×税率÷100}int shui 0; //定义税为0for (auto rmb : vec_rmb) { //使用范围for循环遍历vec_rmbfor (int i 0; i vec.size(); i) { //使用for循环遍历vecauto it vec[i]; //获取vec[i]元素if (rmb it.max rmb it.min) { //如果工资值在该区间内shui (rmb - it.min) * it.rate / 100 vec_before[i]; //税收增量工资-最小值×税率÷100累加值break; //结束for循环}}cout rmb ,shui shui , last rmb - shui endl; //输出工资、税收增量和取得实际收入后}
}int main() {vectorShuiCfg vec{{0,5000,0},{5000,8000,3},{8000,17000,10},{17000,30000,20},{30000,40000,25},{40000,60000,30},{60000,85000,35},{85000,INT32_MAX,45},}; //定义vector类型的数组vecvectorint vec_rmb{5000, 10000, 20000,50000, 100000}; //定义vector类型的数组vec_rmbGetAfterShui(vec, vec_rmb); //调用函数GetAfterShuiGetAfterShui2(vec, vec_rmb); //调用函数GetAfterShui2return 0; //返回0代表程序正常结束
}运行结果 代码里写了两种计算方法 GetAfterShui, GetAfterShui2。计算的次数越多配置越长GetAfterShui2节省的时间越多。
有人可能会问了“为什么你的注释写的这么多这么详细”
我会这么回答“啊这这是chatGPT帮忙写的注释。”
朋友介绍的目前能用chatGPT。这个网站不用科学 上网 https://freegpt.one