【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&…...
SpringBoot-17-MyBatis动态SQL标签之常用标签
文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...
Python|GIF 解析与构建(5):手搓截屏和帧率控制
目录 Python|GIF 解析与构建(5):手搓截屏和帧率控制 一、引言 二、技术实现:手搓截屏模块 2.1 核心原理 2.2 代码解析:ScreenshotData类 2.2.1 截图函数:capture_screen 三、技术实现&…...
C++初阶-list的底层
目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...
vue3 字体颜色设置的多种方式
在Vue 3中设置字体颜色可以通过多种方式实现,这取决于你是想在组件内部直接设置,还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法: 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...
Qt Http Server模块功能及架构
Qt Http Server 是 Qt 6.0 中引入的一个新模块,它提供了一个轻量级的 HTTP 服务器实现,主要用于构建基于 HTTP 的应用程序和服务。 功能介绍: 主要功能 HTTP服务器功能: 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...
微信小程序云开发平台MySQL的连接方式
注:微信小程序云开发平台指的是腾讯云开发 先给结论:微信小程序云开发平台的MySQL,无法通过获取数据库连接信息的方式进行连接,连接只能通过云开发的SDK连接,具体要参考官方文档: 为什么? 因为…...
大数据学习(132)-HIve数据分析
🍋🍋大数据学习🍋🍋 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言Ǵ…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
【Go语言基础【13】】函数、闭包、方法
文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数(函数作为参数、返回值) 三、匿名函数与闭包1. 匿名函数(Lambda函…...
vulnyx Blogger writeup
信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面,gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress,说明目标所使用的cms是wordpress,访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...
