利用ifelse的嵌套解决纳税问题和奖金问题

我国税收是分级计算的,不同的收入的计算步骤会不同,计算起来就会比较麻烦(高中数学的选择题前几道,虽然不难,但是计算量真的很大啊喂)。

如果用代码处理会比较方便,我们借由一道类似的题目来用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,看来成功了,问题得到解决。

但是不得不吐槽一下,利润翻了十倍,奖金才翻四倍......

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值