当前位置: 首页 > news >正文

【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元。 个人所得税税率标准&#xff1a; 1、工资范围在1-5000元之间的&#xff0c;包括5000元&#xff0c;适用个人所得税税率为0%; 2、工资范围在5000-8000元之间的&#xff0c;包括8000元&#xff0c;适用个人所得税税率为3%; 3、工…...

【TypeScript】的上手学习指南!

目录TS简介TypeScript是什么&#xff1f;为什么要推荐使用TypeScript生态支持安装TypeScriptTS简介 TypeScript是什么&#xff1f; TypeScript官网 简介&#xff1a;TypeScript是JavaScript类型的超集&#xff0c;它可以编译成纯JavaScript。TypeScript可以在任何浏览器、任何计…...

红黑树(Insert())

文章目录红黑树代码红黑树性质红黑树vsAVL树红黑树的实现Insert()情况一&#xff1a;如果我插入的新节点时红色的情况二&#xff1a;叔叔是黑色或者不存在情况三: cur红,p为红,g为黑,u不存在或者为黑-双旋检查erase()红黑树vsAVL树红黑树的应用&#xff1a;红黑树 二叉搜索树 …...

MOV指令使用

mov用于数据传送。之后分为目的操作数和源操作数&#xff0c;目的操作数必须是通用寄存器或者内存单元&#xff1a;源操作数可以是具有相同数据宽度的通用寄存器或者内存单元&#xff0c;还可以是立即数。传送指令只影响目的操作数内容&#xff0c;不改变源操作数内容。 如&am…...

解释一下RecyclerView的适配器内部方法

RecyclerView的适配器&#xff08;Adapter&#xff09; 是一个连接数据模型和RecyclerView的桥梁&#xff0c;它在RecyclerView中提供了数据和布局之间的连接。下面是RecyclerView适配器中常用的几个方法的解释&#xff1a; 1.onCreateViewHolder(ViewGroup parent, int view…...

集合框架及背后的数据结构

1.介绍&#xff1a; Java 集合框架&#xff0c;又被称为容器是定义在 java.util 包下的一组接口 interfaces 和其实现类 classes 。 其主要表现为将多个元素置于一个单元中&#xff0c;用于对这些元素进行快速、便捷的存储、检索 、管理 &#xff0c;即平时我们俗称的增删查改…...

【强化学习】强化学习数学基础:蒙特卡洛方法

强化学习数学方法&#xff1a;蒙特卡洛方法举个例子举个例子1&#xff1a;投掷硬币The simplest MC-based RL algorithm举个例子2&#xff1a;Episode lengthUse data more efficientlyMC without exploring starts总结内容来源将value iteration和policy iteration方法称为mod…...

BI分析工具软件有哪些

最近发现很多人讨论BI数据分析&#xff0c;今天给大家全面介绍下BI数据分析相关的信息。首先给大家科普一下&#xff0c;什么是BI分析。 BI分析其实是指通过BI分析工具&#xff0c;对企业内部和外部的大量数据进行收集、整理、处理和分析&#xff0c;以提供有价值的洞察&#x…...

2023爱分析·RPA软件市场厂商评估报告:容智信息

目录 1. 研究范围定义 2. RPA软件市场分析 3. 厂商评估&#xff1a;容智信息 4. 入选证书 1. 研究范围定义 RPA即Robotic Process Automation&#xff08;机器人流程自动化&#xff09;&#xff0c;是一种通过模拟人与软件系统的交互过程&#xff0c;实现由软件机器人…...

设计模式之七大原则(二)——里氏替换原则、依赖倒转原则

1.里氏替换原则 里氏替换原则&#xff08;Liskov Substitution Principle&#xff0c;LSP&#xff09;由麻省理工学院计算机科学实验室的里斯科夫女士在 1987 年的“面向对象技术的高峰会议”&#xff08;OOPSLA&#xff09;上发表的一篇文章《数据抽象和层次》&#xff09;里提…...

数据库日常实操优质文章分享(含Oracle、MySQL等) | 2023年2月刊

本文为大家整理了墨天轮数据社区2023年2月发布的优质技术文章&#xff0c;主题涵盖Oracle、MySQL、PostgreSQL等数据库的环境搭建、故障处理等日常实践操作&#xff0c;以及概念梳理、常用脚本等总结记录&#xff0c;分享给大家&#xff1a;Oracle优质技术文章概念梳理&基础…...

事件循环机制(Event Loop)和宏任务(macro-tast)微任务(micro-tast),详细讲解!!!

“事件循环机制” 和 “宏任务微任务” 也是前端面试中常考的面试题了。首先&#xff0c;要深刻理解这些概念的话&#xff0c;需要回顾一些知识点。知识点回顾1、进程与线程进程。 程序运行需要有它自己的专属内存空间&#xff0c;可以把这块内存空间简单的理解为进程每个应用至…...

mysql基础操作3

查询襄阳的员工姓名和性别&#xff0c;性别要求显示为 男 女SELECT ename,(CASE WHEN sexF THEN 女 ELSE 男 END)sexFROM empWHERE jiguan襄阳查询所有的订单&#xff0c;显示订单日期 订单数量 订单状态SELECT saleDate,salesQuantity,(CASE WHEN saleState1 THEN 新建 WHEN s…...

【Web安全】PHP安全

一、文件包含漏洞严格来说&#xff0c;文件包含就是代码注入的一种。代码注入&#xff0c;其原理就是注入一段用户能控制的脚本或代码并让服务器端执行。代码注入的典型代表就是文件包含。文件包含可能会出现在JSP、PHP、ASP等语言中&#xff0c;常见函数如下&#xff1a;PHP&a…...

双向链表+循环链表

循环链表双向链表 循环链表 循环链表是头尾相接的链表(即表中最后一个结点的指针域指向头结点&#xff0c;整个链表形成一个环)(circular linked list) **优点&#xff1a;**从表中任一结点出发均可访问全部结点 循环链表与单链表的主要差别当链表遍历时&#xff0c;判别当前…...

Java程序的逻辑控制

一、顺序结构 顺序结构比较简单&#xff0c;如果我们按照代码书写的顺序一行一行执行&#xff0c;将会是这样的&#xff1a; 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 数据的流动 一条用户注册数据流动到后端服务器&#xff0c;持久化保存到数据库中。 1.2 数据的持久化 校验数据的合法性修改内存写入存储介质2 存储&数据库简介 2.1 存储系统特点 性能敏感、容易受硬件影响、存储系统代码既“简单”又“复杂”。 2.2 数…...

新一代骨传导机皇重磅发布:南卡Neo骨传导运动耳机,性能全面提升

近日&#xff0c;中国最强骨传导品牌NANK南卡发布了最新一代骨传导耳机——南卡Neo骨传导耳机&#xff01;该款耳机与运动专业性更强的南卡runner Pro4略微不同&#xff0c;其主要定位于轻运动风格&#xff0c;所以这款耳机的音质和佩戴舒适度达到了令人咂舌的地步&#xff01;…...

Hbase Schema设计与数据模型操作

一、Hbase Schema设计 1&#xff0c;Schema 创建 使用 Apache HBase Shell 或使用 Java API 中的 Admin 来创建或更新 HBase 模式。 Configuration config HBaseConfiguration.create(); Admin admin new Admin(conf); TableName table TableName.valueOf("myTable&…...

变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析

一、变量声明设计&#xff1a;let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性&#xff0c;这种设计体现了语言的核心哲学。以下是深度解析&#xff1a; 1.1 设计理念剖析 安全优先原则&#xff1a;默认不可变强制开发者明确声明意图 let x 5; …...

深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录

ASP.NET Core 是一个跨平台的开源框架&#xff0c;用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录&#xff0c;以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...

【Linux】shell脚本忽略错误继续执行

在 shell 脚本中&#xff0c;可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行&#xff0c;可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令&#xff0c;并忽略错误 rm somefile…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件

在选煤厂、化工厂、钢铁厂等过程生产型企业&#xff0c;其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进&#xff0c;需提前预防假检、错检、漏检&#xff0c;推动智慧生产运维系统数据的流动和现场赋能应用。同时&#xff0c;…...

Yolov8 目标检测蒸馏学习记录

yolov8系列模型蒸馏基本流程&#xff0c;代码下载&#xff1a;这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中&#xff0c;**知识蒸馏&#xff08;Knowledge Distillation&#xff09;**被广泛应用&#xff0c;作为提升模型…...

音视频——I2S 协议详解

I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议&#xff0c;专门用于在数字音频设备之间传输数字音频数据。它由飞利浦&#xff08;Philips&#xff09;公司开发&#xff0c;以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...

Python Einops库:深度学习中的张量操作革命

Einops&#xff08;爱因斯坦操作库&#xff09;就像给张量操作戴上了一副"语义眼镜"——让你用人类能理解的方式告诉计算机如何操作多维数组。这个基于爱因斯坦求和约定的库&#xff0c;用类似自然语言的表达式替代了晦涩的API调用&#xff0c;彻底改变了深度学习工程…...

打手机检测算法AI智能分析网关V4守护公共/工业/医疗等多场景安全应用

一、方案背景​ 在现代生产与生活场景中&#xff0c;如工厂高危作业区、医院手术室、公共场景等&#xff0c;人员违规打手机的行为潜藏着巨大风险。传统依靠人工巡查的监管方式&#xff0c;存在效率低、覆盖面不足、判断主观性强等问题&#xff0c;难以满足对人员打手机行为精…...

MySQL 部分重点知识篇

一、数据库对象 1. 主键 定义 &#xff1a;主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 &#xff1a;确保数据的完整性&#xff0c;便于数据的查询和管理。 示例 &#xff1a;在学生信息表中&#xff0c;学号可以作为主键&#xff…...

学习一下用鸿蒙​​DevEco Studio HarmonyOS5实现百度地图

在鸿蒙&#xff08;HarmonyOS5&#xff09;中集成百度地图&#xff0c;可以通过以下步骤和技术方案实现。结合鸿蒙的分布式能力和百度地图的API&#xff0c;可以构建跨设备的定位、导航和地图展示功能。 ​​1. 鸿蒙环境准备​​ ​​开发工具​​&#xff1a;下载安装 ​​De…...