我国税收是分级计算的,不同的收入的计算步骤会不同,计算起来就会比较麻烦(高中数学的选择题前几道,虽然不难,但是计算量真的很大啊喂)。
如果用代码处理会比较方便,我们借由一道类似的题目来用ifelse的嵌套来解决这个问题。
(这个是b站up主dayeyeqj视频中的一道题目)
题中的奖金和个税在计算的核心上相似。可以看到,我们需要输入一个值:利润(profit),通过判定profit的不同大小来决定奖金(bonus)的计算过程。
由于题目中的界限为连续的区间,所以,我们可以用if else来从低到高依次讨论:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int profit = 0;
double bonus = 0;
scanf("%d", &profit);
if (profit <= 100000)
{
bonus = profit * 0.1;
}
else
{
if (profit <= 200000)
{
bonus = 100000 * 0.1 + (profit-100000) * 0.075;
}
else
{
if (profit <= 400000)
{
bonus = 100000 * 0.1 + 100000 * 0.075 + (profit - 200000) * 0.05;
}
else
{
if (profit <= 600000)
{
bonus = 100000 * 0.1 + 100000 * 0.075 + 200000 * 0.05 + (profit - 400000) * 0.03;
}
else
{
if (profit <= 1000000)
{
bonus = 100000 * 0.1 + 100000 * 0.075 + 200000 * 0.05 + 200000 * 0.03 + (profit - 600000) * 0.015;
}
else
{
bonus = 100000 * 0.1 + 100000 * 0.075 + 200000 * 0.05 + 200000 * 0.03 + 400000 * 0.015 + (profit - 1000000) * 0.01;
}
}
}
}
}
printf("bonus=%lf", bonus);
return 0;
}
可以通过上图中的大括号看到,我们分了多种profit不同的情况进行讨论,由于是选用的if else语
句,所以在第一个if不成立时,之后的else内就默认了profit>100000,所以后续的if中我们可以只写
区间的右边,也就是profit<=200000。那么通过连续的if else,最终将整个题目规则覆盖进去。
那么此时我们检验一下程序能否跑起来,输入114514,得到11088.550000。输入1145141
,得到40951.410000,看来成功了,问题得到解决。
但是不得不吐槽一下,利润翻了十倍,奖金才翻四倍......