【c++】2023杭州月薪个税计算(chatGPT帮忙加注释)
参考信息
杭州市的个人所得税起征点是每月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(vector<ShuiCfg> &vec, vector<int>& vec_rmb) { //定义函数GetAfterShui,参数为struct数组和int数组的引用cout << "GetAfterShui" << endl; //输出字符串"GetAfterShui"for (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(vector<ShuiCfg> &vec, vector<int>& vec_rmb) { //定义函数GetAfterShui2,参数为struct数组和int数组的引用cout << "GetAfterShui2" << endl; //输出字符串"GetAfterShui2"vector<int> 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() {vector<ShuiCfg> 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类型的数组vecvector<int> 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
相关文章:
【c++】2023杭州月薪个税计算(chatGPT帮忙加注释)
参考信息 杭州市的个人所得税起征点是每月5000元。 个人所得税税率标准: 1、工资范围在1-5000元之间的,包括5000元,适用个人所得税税率为0%; 2、工资范围在5000-8000元之间的,包括8000元,适用个人所得税税率为3%; 3、工…...
【TypeScript】的上手学习指南!
目录TS简介TypeScript是什么?为什么要推荐使用TypeScript生态支持安装TypeScriptTS简介 TypeScript是什么? TypeScript官网 简介:TypeScript是JavaScript类型的超集,它可以编译成纯JavaScript。TypeScript可以在任何浏览器、任何计…...
红黑树(Insert())
文章目录红黑树代码红黑树性质红黑树vsAVL树红黑树的实现Insert()情况一:如果我插入的新节点时红色的情况二:叔叔是黑色或者不存在情况三: cur红,p为红,g为黑,u不存在或者为黑-双旋检查erase()红黑树vsAVL树红黑树的应用:红黑树 二叉搜索树 …...
MOV指令使用
mov用于数据传送。之后分为目的操作数和源操作数,目的操作数必须是通用寄存器或者内存单元:源操作数可以是具有相同数据宽度的通用寄存器或者内存单元,还可以是立即数。传送指令只影响目的操作数内容,不改变源操作数内容。 如&am…...
解释一下RecyclerView的适配器内部方法
RecyclerView的适配器(Adapter) 是一个连接数据模型和RecyclerView的桥梁,它在RecyclerView中提供了数据和布局之间的连接。下面是RecyclerView适配器中常用的几个方法的解释: 1.onCreateViewHolder(ViewGroup parent, int view…...
集合框架及背后的数据结构
1.介绍: Java 集合框架,又被称为容器是定义在 java.util 包下的一组接口 interfaces 和其实现类 classes 。 其主要表现为将多个元素置于一个单元中,用于对这些元素进行快速、便捷的存储、检索 、管理 ,即平时我们俗称的增删查改…...
【强化学习】强化学习数学基础:蒙特卡洛方法
强化学习数学方法:蒙特卡洛方法举个例子举个例子1:投掷硬币The simplest MC-based RL algorithm举个例子2:Episode lengthUse data more efficientlyMC without exploring starts总结内容来源将value iteration和policy iteration方法称为mod…...
BI分析工具软件有哪些
最近发现很多人讨论BI数据分析,今天给大家全面介绍下BI数据分析相关的信息。首先给大家科普一下,什么是BI分析。 BI分析其实是指通过BI分析工具,对企业内部和外部的大量数据进行收集、整理、处理和分析,以提供有价值的洞察&#x…...
2023爱分析·RPA软件市场厂商评估报告:容智信息
目录 1. 研究范围定义 2. RPA软件市场分析 3. 厂商评估:容智信息 4. 入选证书 1. 研究范围定义 RPA即Robotic Process Automation(机器人流程自动化),是一种通过模拟人与软件系统的交互过程,实现由软件机器人…...
设计模式之七大原则(二)——里氏替换原则、依赖倒转原则
1.里氏替换原则 里氏替换原则(Liskov Substitution Principle,LSP)由麻省理工学院计算机科学实验室的里斯科夫女士在 1987 年的“面向对象技术的高峰会议”(OOPSLA)上发表的一篇文章《数据抽象和层次》)里提…...
数据库日常实操优质文章分享(含Oracle、MySQL等) | 2023年2月刊
本文为大家整理了墨天轮数据社区2023年2月发布的优质技术文章,主题涵盖Oracle、MySQL、PostgreSQL等数据库的环境搭建、故障处理等日常实践操作,以及概念梳理、常用脚本等总结记录,分享给大家:Oracle优质技术文章概念梳理&基础…...
事件循环机制(Event Loop)和宏任务(macro-tast)微任务(micro-tast),详细讲解!!!
“事件循环机制” 和 “宏任务微任务” 也是前端面试中常考的面试题了。首先,要深刻理解这些概念的话,需要回顾一些知识点。知识点回顾1、进程与线程进程。 程序运行需要有它自己的专属内存空间,可以把这块内存空间简单的理解为进程每个应用至…...
mysql基础操作3
查询襄阳的员工姓名和性别,性别要求显示为 男 女SELECT ename,(CASE WHEN sexF THEN 女 ELSE 男 END)sexFROM empWHERE jiguan襄阳查询所有的订单,显示订单日期 订单数量 订单状态SELECT saleDate,salesQuantity,(CASE WHEN saleState1 THEN 新建 WHEN s…...
【Web安全】PHP安全
一、文件包含漏洞严格来说,文件包含就是代码注入的一种。代码注入,其原理就是注入一段用户能控制的脚本或代码并让服务器端执行。代码注入的典型代表就是文件包含。文件包含可能会出现在JSP、PHP、ASP等语言中,常见函数如下:PHP&a…...
双向链表+循环链表
循环链表双向链表 循环链表 循环链表是头尾相接的链表(即表中最后一个结点的指针域指向头结点,整个链表形成一个环)(circular linked list) **优点:**从表中任一结点出发均可访问全部结点 循环链表与单链表的主要差别当链表遍历时,判别当前…...
Java程序的逻辑控制
一、顺序结构 顺序结构比较简单,如果我们按照代码书写的顺序一行一行执行,将会是这样的: System.out.println("aaa"); System.out.println("bbb"); System.out.println("ccc"); // 运行结果 aaa bbb ccc 如…...
BUCTOJ - 2023上半年ACM蓝桥杯每周训练题-1-A~K题C++Python双语版
文章目录BUCTOJ - 2023上半年ACM&蓝桥杯每周训练题-1-A~K题CPython双语版前言问题 A: 1.2 神奇兔子数列题目描述输入输出解题思路AC代码CPython问题 B: 1.3 马克思手稿中的数学题题目描述输入输出解题思路AC代码CPython问题 C: 1.4 爱因斯坦的阶梯题目描述输入输出解题思路…...
存储的本质-学习笔记
1 经典案例 1.1 数据的流动 一条用户注册数据流动到后端服务器,持久化保存到数据库中。 1.2 数据的持久化 校验数据的合法性修改内存写入存储介质2 存储&数据库简介 2.1 存储系统特点 性能敏感、容易受硬件影响、存储系统代码既“简单”又“复杂”。 2.2 数…...
新一代骨传导机皇重磅发布:南卡Neo骨传导运动耳机,性能全面提升
近日,中国最强骨传导品牌NANK南卡发布了最新一代骨传导耳机——南卡Neo骨传导耳机!该款耳机与运动专业性更强的南卡runner Pro4略微不同,其主要定位于轻运动风格,所以这款耳机的音质和佩戴舒适度达到了令人咂舌的地步!…...
Hbase Schema设计与数据模型操作
一、Hbase Schema设计 1,Schema 创建 使用 Apache HBase Shell 或使用 Java API 中的 Admin 来创建或更新 HBase 模式。 Configuration config HBaseConfiguration.create(); Admin admin new Admin(conf); TableName table TableName.valueOf("myTable&…...
后进先出(LIFO)详解
LIFO 是 Last In, First Out 的缩写,中文译为后进先出。这是一种数据结构的工作原则,类似于一摞盘子或一叠书本: 最后放进去的元素最先出来 -想象往筒状容器里放盘子: (1)你放进的最后一个盘子(…...
UE5 学习系列(二)用户操作界面及介绍
这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…...
HTML 语义化
目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案: 语义化标签: <header>:页头<nav>:导航<main>:主要内容<article>&#x…...
CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型
CVPR 2025 | MIMO:支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题:MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者:Yanyuan Chen, Dexuan Xu, Yu Hu…...
Spring Boot 实现流式响应(兼容 2.7.x)
在实际开发中,我们可能会遇到一些流式数据处理的场景,比如接收来自上游接口的 Server-Sent Events(SSE) 或 流式 JSON 内容,并将其原样中转给前端页面或客户端。这种情况下,传统的 RestTemplate 缓存机制会…...
【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器
——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的一体化测试平台,覆盖应用全生命周期测试需求,主要提供五大核心能力: 测试类型检测目标关键指标功能体验基…...
dedecms 织梦自定义表单留言增加ajax验证码功能
增加ajax功能模块,用户不点击提交按钮,只要输入框失去焦点,就会提前提示验证码是否正确。 一,模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...
如何将联系人从 iPhone 转移到 Android
从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...
Nginx server_name 配置说明
Nginx 是一个高性能的反向代理和负载均衡服务器,其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机(Virtual Host)。 1. 简介 Nginx 使用 server_name 指令来确定…...
【Nginx】使用 Nginx+Lua 实现基于 IP 的访问频率限制
使用 NginxLua 实现基于 IP 的访问频率限制 在高并发场景下,限制某个 IP 的访问频率是非常重要的,可以有效防止恶意攻击或错误配置导致的服务宕机。以下是一个详细的实现方案,使用 Nginx 和 Lua 脚本结合 Redis 来实现基于 IP 的访问频率限制…...
