C语言实现 计算个人所得税务2种方法
- #include <stdio.h>
- #include <stdlib.h>
- /*
- 基于C语言的个人所得税计税系统
- 问题描述:
- 我国现行的个人所得税计算方法如下:
- 级数 全月应纳税所得额 税率(%)
- 1 不超过500元的 5
- 2 超过500元至2000元的部分 10
- 3 超过2000元至5000元的部分 15
- 4 超过5000元至20000元的部分 20
- 5 超过20000元至40000元的部分 25
- 6 超过40000元至60000元的部分 30
- 7 超过60000元至80000元的部分 35
- 8 超过80000元至100000元的部分 40
- 9 超过100000元的部分 45
- 本实验要求提示用户输入个人的收入后,给出纳税额度和税后工资。
- */
- void main()
- {
- float before_tax;
- float after_tax;
- printf("Pleaafter_taxe input you after_taxalary:");//提示用户输入工资总额
- scanf("%f",&before_tax);//接收工资
- printf("你的工资总额是: %7.2f",before_tax);
- after_tax = 0;
- if (before_tax > 100000)
- {
- after_tax += (before_tax - 100000) * 0.45f;
- before_tax = 100000;
- }
- if (before_tax > 80000)
- {
- after_tax += (before_tax - 80000) * 0.40f;
- before_tax = 80000;
- }
- if (before_tax > 60000)
- {
- after_tax += (before_tax - 60000) * 0.35f;
- before_tax = 60000;
- }
- if (before_tax > 40000)
- {
- after_tax += (before_tax - 40000) * 0.30f;
- before_tax = 40000;
- }
- if (before_tax > 20000)
- {
- after_tax += (before_tax - 20000) * 0.25f;
- before_tax = 20000;
- }
- if (before_tax > 5000)
- {
- after_tax += (before_tax - 5000) * 0.20f;
- before_tax = 5000;
- }
- if (before_tax > 2000)
- {
- after_tax += (before_tax - 2000) * 0.15f;
- before_tax = 2000;
- }
- if (before_tax > 500)
- {
- after_tax += (before_tax - 500) * 0.10f;
- before_tax = 500;
- }
- if (before_tax > 0)
- {
- after_tax += (before_tax - 0) * 0.05f;
- }
- printf("你的税额是: %7.2f",after_tax);
- }
1)采用if 方法实现
自己写的:
#include <stdio.h>
#include <string.h>
#include <math.h>
static int single_tax(double income);
/*设置一个全局的变量*/
float tax;
int main(){
double income;
printf("Inpunt your income: \n");
scanf("%lf",&income);
single_tax(income);
return 0;
}
static int single_tax(double const income){
if(income > 0 && income <=23350){
tax = ((income) * 0.15);
}
if(income >23350 && income <=56550)
{
tax = ((income - 23350)*0.28 )+ 3502.5;
}
if(income >56660 && income <=117950)
{
tax = (income - 56660)*0.31 + 12798.50;
}
if(income >117950 && income <=256500)
{
tax = (income - 117950)*0.36 + 31832;
}
if(income >256500)
{
tax = (income - 256500)*0.396 + 81710;
}
printf("Your Tax is %7.2f \n",tax);
return 0;
}
2)借鉴Kenneth A.Reek 剧作<<C和指针>>
自己加入了一个main函数完成测试 。
代码如下:
/*打印个人所得税计算结果*/
#include <stdio.h>
#include <float.h>
static double income_limits[]={0,23350,56550,117950,256500,DBL_MAX};
static float base_tax[]={0,3502.5,12798.5,31832.5,81710.5};
static float percentage[]={.15,.28,.31,.36,.396};
double single_tax(double income);
int main()
{ double tax ;
double income;
printf("Input of Your Income :\n");
scanf("%lf",&income);
tax = single_tax(income);
printf("Your Tax is %7.2f :\n",tax);
}
/*以下代码从书答案抄写过来*/
double
single_tax(double income)
{
/*定义一个标记、十分的简单与简洁。算法值得学习*/
int category;
for(category = 1;income >= income_limits[ category ];category +=1);
/* 指针提前了一个相对位置 */
category -= 1;
return base_tax[category] + percentage[category] * (income - income_limits[category]);
}
C语言实现 计算个人所得税务2种方法的更多相关文章
- R语言中样本平衡的几种方法
R语言中样本平衡的几种方法 在对不平衡的分类数据集进行建模时,机器学习算法可能并不稳定,其预测结果甚至可能是有偏的,而预测精度此时也变得带有误导性.在不平衡的数据中,任一算法都没法从样本量少的类中获取 ...
- C语言清空输入缓冲区的N种方法对比
转自C语言清空输入缓冲区的N种方法对比 C语言中有几个基本输入函数: //获取字符系列 int fgetc(FILE *stream); int getc(FILE *stream); int get ...
- 用Python计算幂的两种方法,非递归和递归法
用Python计算幂的两种方法: #coding:utf-8 #计算幂的两种方法.py #1.常规方法利用函数 #不使用递归计算幂的方法 """ def power(x, ...
- C语言数据结构-创建链表的四种方法
结点类型: typedef int datatype; typedef struct NODE{ datatype data; struct NODE *next; }Node,*LinkList; ...
- C语言结构体定义的几种方法
什么是结构体? 在C语言中,结构体(struct)指的是一种数据结构,是C语言中聚合数据类型(aggregate data type)的一类.结构体可以被声明为变量.指针或数组等,用以实现较复杂的数据 ...
- MySQL根据出生日期计算年龄的五种方法比较
方法一 SELECT DATE_FORMAT(FROM_DAYS(TO_DAYS(NOW())-TO_DAYS(birthday)), '%Y')+0 AS age 方法一,作者也说出了缺陷,就是当日 ...
- C语言结构体初始化的四种方法(转载)
原文:https://blog.csdn.net/ericbar/article/details/79567108 定义 struct InitMember { int first: double s ...
- C语言提高代码效率的几种方法
一段完美的代码不仅在于找到一个给定的问题的解决方案,但在它的简单性,有效性,紧凑性和效率(内存).设计的代码比实际执行更难.因此,每一个程序员当用C语言开发时,都应该保持这些基本的东西在头脑中.本文向 ...
- C语言播放声音最简单的两种方法
1. 假设仅须要播放波形文件wav格式的声音,非常easy.仅仅需一句话: PlaySound(TEXT("Data\\1.wav"), NULL, SND_FILENAME | ...
随机推荐
- Web前端开发必备手册(Cheat sheet)
转自:http://blog.bingo929.com/cheat-sheets-for-web-develop.html Cheat sheet这个词组如果直译成中文,意思大概是”作弊小抄”之类的词 ...
- 数据库MySQL--数据操作语言DML(插入、修改、删除)
例子文件:https://files-cdn.cnblogs.com/files/Vera-y/girls.zip 一.插入 方式一: 语法: insert into 表名(列名,.....) val ...
- LeetCode第三题—— Longest Substring Without Repeating Characters(最长无重复子字符串)
题目描述 Given a string, find the length of the longest substring without repeating characters. Example ...
- Java带头节点单链表的增删合并以及是否有环
带头节点单链表 1.优势: 1)当链表为空时,指针指向头结点,不会发生null指针异常 2)方便特殊操作(删除第一个有效节点或者插入一个节点在表头) 3)单链表加上头结点之后,无论单链表是否为空,头指 ...
- [JZOJ3692] 【SRM 611】ElephantDrinking
题目 题目大意 我真的不知道怎么用简短的语言表述出来-- 直接看题目吧-- 正解 假设只有左边和上边延伸过来的,那似乎很好办:设\(f_{i,j}\)表示左上方到\((i,j)\)所形成的矩形中,如果 ...
- 【JZOJ5730】【luoguP2146】【Comet OJC0396】软件包管理器
description Linux用户和OSX用户一定对软件包管理器不会陌生.通过软件包管理器,你可以通过一行命令安装某一个软件包,然后软件包管理器会帮助你从软件源下载软件包,同时自动解决所有的依赖( ...
- Sonatype Nexus Repository Manager清除无用的docker镜像
1.创建定时任务 2.先run一下看是否能删除无用镜像
- System.Convert.cs
ylbtech-System.Convert.cs 1. 程序集 mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c56 ...
- 关于Unity中脚本
脚本编译: Unity可以把脚本编译为DLL,DLL将在运行时编译运行.这样可以提高执行 的速度,比传统的JavaScritp快20倍. 脚本具体的编译需要以下4步. 1: 所有的"Stan ...
- QT之QByteArray
1.拷贝内容到QByteArray 1.使用append函数 //结合结构体的(char*)强制转化使用,command.append((char*)&e2_System_Para_t, si ...