首页 > 其他分享 >个人所得税的问题

个人所得税的问题

时间:2023-04-26 15:14:12浏览次数:40  
标签:end TaxTable profit strat tax 问题 个人所得税 struct

1.问题描述:

编写一个计算个人所得税的程序,要求输入收入金额后,能够输出应缴的个人所得税。个人所得税征收办法如下:

不超过1500元的部分,征收3%:

超过 1500~4500元的部分,征收 10%:

超过4500~9000元的部分,征收20%

超过9000~35000元的部分,征收25%:

超过35000~55000元的部分,征收30%:

超过55000~80000元的部分,征收35%;

2.问题分析:

分析题目特点,我们可以考虑使用结构体来描述题目中的条件。下面先讲解C语言中结构体的语法要点。(1)声明结构体C语言中允许用户自己定义结构体,它相当于其他高级语言中的“记录”。声明一个结构体类型的一般形式为:

struct 结构体名
{结构体成员列表}

对结构体中的各个成员都应该进行类型声明,即:

类型名 成员名

例如:

/*定义名为user的结构体*/
struct user
{
    /*结构体中的各个成员*/
   int id;
   char name[20];
   int age;
   char address[50];
};

上面我们定义了一个新的结构体类型 struct user,它包含了id、name、age和address这4个不同类型的数据项。可以说,struct user 是一个新的类型名,它和系统提供的标准类型一样都可以用来定义变量的类型。

3.流程图:

4.源代码:

#include<stdio.h>
#define   TAXBASE 3500
typedef struct
{
    long strat;
    long end;
    double taxrate;
}TAXTABLE;
TAXTABLE TaxTable[]={{0,1500,0.03},{1500,4500,0.10},{4500,9000,0.20},{9000,35000,0.25},{35000,55000,0.30},{55000,80000,0.35},{80000,1e10,0.45}};
double CaculateTax(long profit)
{
    int i;
    double tax=0.0;
    profit-=TAXBASE;
    for(i=0;i<sizeof(TaxTable)/sizeof(TAXBASE);i++)
    {
        if(profit>TaxTable[i].strat)
        {
            if(profit>TaxTable[i].end)
            {
                tax+=(TaxTable[i].end-TaxTable[i].strat)*TaxTable[i].taxrate;
            }
            else
            {
                tax+=(profit-TaxTable[i].strat)*TaxTable[i].taxrate;
            }
            profit-=TaxTable[i].end;
            printf("征税范围:%6ld~%6ld 该范围交税金额:%6.2f 超出该范围的金额:%61d\n",TaxTable[i].strat,TaxTable[i].end,tax,(profit)>0 ? profit:0);
        }
    }
    return tax;
}
int main()
{
    long profit;
    double tax;
    printf("请输入个人收入金额:");
    scanf("%ld",&profit);
    tax=CaculateTax(profit);
    printf("您的个人所得税为:%12.2f\n",tax);
}

 

标签:end,TaxTable,profit,strat,tax,问题,个人所得税,struct
From: https://www.cnblogs.com/tianpeisen/p/17356140.html

相关文章

  • Android多进程时Application初始化问题
    原文地址blog.csdn.net之前在做项目时,遇到一个大坑,就是我的APP的Application的onCreate方法,竟然执行了好几次,这就导致我在onCreate里面做了一些初始化的操作被重复执行了,导致奇怪的bug产生。后来冷静下来分析一下,才发现有一些第三方组件,比如百度推送之类的,它们是单独开了一......
  • MybatisPlus-in 超过1000问题
    ------工具类publicstatic<T>List<List<T>>groupingList(List<T>list,intpartSize){List<List<T>>groups=newArrayList();if(list!=null&&!list.isEmpty()){intdataCount=list.size();intgroupCount=......
  • 深度学习--LSTM网络、使用方法、实战情感分类问题
    深度学习--LSTM网络、使用方法、实战情感分类问题1.LSTM基础长短期记忆网络(LongShort-TermMemory,简称LSTM),是RNN的一种,为了解决RNN存在长期依赖问题而设计出来的。LSTM的基本结构:2.LSTM的具体说明LSTM与RNN的结构相比,在参数更新的过程中,增加了三个门,由左到右分别是遗忘门(也......
  • vue主应用,qiankun 子应用切换主应用样式错乱问题
    vue主应用,qiankun子应用切换主应用样式错乱问题 constchildRoute=['/flinkdashboard','/dolphinscheduler','/datainsight']//子应用路径constisChildRoute=(path)=>childRoute.some(item=>path.startsWith(item));constrawAppendChild=......
  • 引用 maxmind golang 库导致的程序无法 recover crash 的问题
    新做的Gateway程序打算使用一个maxmind第三方库来解析地理信息,想了一下比较简单找了一个库直接使用。项目跑了一天得到了一堆panic,程序崩溃超过1s丢了不少数据。 从stack信息可以看到调用amxminddb-golang这个库的readLeft出现了错误,最后抛出了一个unexceptedf......
  • 如何解决通信架构迁移时的消息格式不一致问题
    有时候,当进行通信架构迁移时,会遇到消息格式不一致的兼容性问题,可采用定义内嵌引用的方式来解决,如下示例:1#include<iostream>23classA{45inta=1;6int&b;78structRequest{9intc;10}request;1112public:13A():......
  • python安装过程中的问题
    1.用pip安装插件时报Fatalerrorinlauncher:Unabletocreateprocessusing'"D:\ProgramFiles\Python311\python.exe""D:\ProgramFiles\Python311\Scripts\pip.exe"installpyinstaller':???????????解决:1.检查Python安装的路径是否正确。在这种......
  • 机器学习(七):梯度下降解决分类问题——perceptron感知机算法与SVM支持向量机算法进行二
    实验2感知机算法与支持向量机算法一、预备知识1.感知机算法二、实验目的掌握感知机算法的原理及设计;掌握利用感知机算法解决分类问题。三、实验内容设计感知机算法求解,设计SVM算法求解(可调用函数库),请找出支持向量和决策超平面。四、操作方法和实验步骤1.......
  • 解决 NET6 GET请求不设置参数值报错问题
    1、调用的方法1///<summary>2///获取干预集合3///</summary>4///<returns></returns>5[HttpGet]6publicJsonResultGetIntervenes(stringkeyword)7{89Li......
  • 凭证导入失败问题
    在使用用友实施工具导入凭证时,有部份成功,原因为部份单元格应该为文本格式,即在数字或者文本前加逗号,如下图解释如下:数字前面的逗号是为了防止数字过长造成系统会把数字给截断形成科学计数法,强制让数字成为文本格式。如果你不想要这个逗号,可以先把单元格的格式设置为“文本”格式,再......