首页 > 其他分享 >5.15

5.15

时间:2023-05-15 23:46:08浏览次数:41  
标签:end TaxTable profit 征收 tax start 5.15

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

不超过1500元的部分,征收3%;超过1500~4500元的部分,征收10%;超过4500~9000元的部分,征收20%;超过9000~35000元的部分,征收25%;超过35000~55000元的部分,征收30%;超过55000~80000元的部分,征收35%;

问题分析:

由问题分析中讲解的C语言中结构体的相关知识可知,这里可以使用结构体数组存放不同的税率范围。接着使用for 循环遍历每一个征税范围,将个人收入中超出起征点的金额在每个征税范围内应缴纳的税款累加起来,就得到最后应缴纳的个人所得税。

代码示例

#include<bits/stdc++.h>
using namespace std;

#define TAXBASE 3500; 
typedef struct {
    long start;
    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, 10000000000, 0.45}};

double CaculateTax(long profit){
    int i;
    double tax = 0.0;
    profit -= TAXBASE;
    for(i = 0; i < sizeof(TaxTable) / sizeof(TAXTABLE); i ++){
        if(profit > TaxTable[i].start){    
            if(profit > TaxTable[i].end){
                tax += (TaxTable[i].end - TaxTable[i].start) * TaxTable[i].taxrate;
            } 
            else{
                tax += (profit - TaxTable[i].start) * TaxTable[i].taxrate;
            }
            profit -= TaxTable[i].end;
            
            printf("征收范围:%6ld~%6ld 该范围内缴纳金额:%6.2f 超出该范围的金额: %6ld \n", TaxTable[i].start, 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,征收,tax,start,5.15
From: https://www.cnblogs.com/dmx-03/p/17403474.html

相关文章

  • 5.15
    #include<iostream>usingnamespacestd;#include<cmath>#include"time_user.h"classpoint{private:   intx,y,z;public:   voidset()   {       cin>>x>>y>>z;   }   voidout()   {       cout......
  • 5.15每日总结
    今天上课老师讲了人机交互设计,讲了软件的设计如何变得更加人性化,满足用户的真实需求。还在团队中讨论了后续的项目冲刺验收要完成的任务和分工,未来要实现和改进哪些功能。之后的时间对记账本App页面的交互设计进行了一些改进。  ......
  • 每日总结 5.15
    今天上课进行了进一步的代码2书写。主要是进行广告方面的设计对于数据库的管理。try{pre=c.prepareStatement(sql);pre.setString(1,"111");//pre.setString(2,tel);res=pre.executeQuery();......
  • 建民打卡日记5.15
    一、问题描述一个整数“犯二的程度”定义为该数字中包含2的个数与其位数的比值。如果这个数是负数,则程度增加0.5倍;如果还是个偶数,则再增加1倍。例如数字-13142223336是个11位数,其中有3个2,并且是负数,也是偶数,则它的犯二程度计算为:3/11×1.5×2×100%,约为81.82%。本题就请你计算一......
  • 5.15打卡
    一、问题描述:2000以内的不小于4的正偶数都能够分解为两个素数之和(即验证歌德巴赫猜想对2000以内的正偶数成立)。二、设计思路:该问题我们可以采用函数来解决。定义一个函数,函数名设为fun,在其中判断传进来的实际参数(设为n(n=2)),是否为素数,如果是素数则返回1,否则返回0。在判断是......
  • 5.15每日总结
    今天上课老师讲了人机交互设计,讲了软件的设计如何变得更加人性化,满足用户的真实需求。还在团队中讨论了后续的项目冲刺验收要完成的任务和分工,未来要实现和改进哪些功能。之后的时间对记账本App页面的交互设计进行了一些改进。......
  • 5.15 2.8
    一、问题魔术师利用一副牌中的13张黑桃,预先将它们排好后迭在一起,并使牌面朝下。然后他对观众说:我不看牌,只要数数就可以猜到每张牌是什么,我大声数数,你们听,不信?你们就看,魔术师将最上面的那张牌数为1,把它翻过来正好是黑桃A,他将黑桃A放在桌子上,然后按顺序从上到下数手中的余牌......
  • 5.15
    #include<stdio.h>voidmain(){longmul,number,k,a,b;printf("Itexistsfollowingautomorphicnmberssmallthan100000:\n");for(number=0;number<100000;number++){for(mul=number,k=1;(mul/=10)>0;k*=10);a=k*10;mul=0;b=10;while(k>0){mul=......
  • 算法基础上机实验——2023.5.15
    1.#include<cmath>#include<cstdio>#include<iostream>#include<algorithm>usingnamespacestd;intmain(){inta[310],n,k=0;cin>>n;while(n!=-99999){a[k++]=n;cin>>......
  • 编程一小时2023.5.15
    1.#include<bits/stdc++.h>usingnamespacestd;boolbook[10000001];intprime[100001];intt=1;voidPrime(intx){memset(book,0,sizeof(book));for(inti=2;i<=x;i++){if(!book[i])prime[t++]=i;for(intj=1;prime[j]<=x/i;j++){......