课程26 项目5

任务和代码

/*
*Copyright ©2017,CSDN学院
*All rights reserved.
*文件名称:main.c
*作    者:LP
*完成日期:2017年10月11日
*版 本 号:visual studio 2015
*问题描述:交税问题
*/
#include<stdio.h>
int main()
{
	double dSalary, dTax = 0, dNetIncom = 0, a;
	int t;
	printf("请输入您本月的收入总额(元):");
	scanf("%lf", &dSalary);
	a = dSalary - 3500;
	t = (a < 0) + (a < 1500) + (a < 4500) + (a < 9000) + (a < 35000) + (a < 55000) + (a < 80000);
	switch (t)
	{
	case 7:
		printf("不需要交税。");
		break;
	case 6:
		dTax = a*0.03;
		break;
	case 5:
		dTax = a*0.1 - 105;
		break;
	case 4:
		dTax = a*0.2 - 555;
		break;
	case 3:
		dTax = a*0.25 - 1005;
		break;
	case 2:
		dTax = a*0.3 - 2755;
		break;
	case 1:
		dTax = a*0.35 - 5505;
		break;
	case 0:
		dTax = a*0.45 - 13505;
	}
	dNetIncom = dSalary - dTax;
	printf("您本月应缴个人所扣税%.2f 元,税后收入是%.2f 元。\n", dTax, dNetIncom);
	printf("依法纳税,共享繁荣。谢谢使用!\n");
	return 0;
}

运行结果


心得

此题用if else语句之前已经有编写过,switch语句的逻辑实现和if 语句类似,但是switch()里面的数不能有太多的case项,不然会使程序显得非常的臃肿,于是结合视频学习过的知识,试着将各个case段的数除以一个公约数(雷同汽车公里邮费问题),因为数之间的跳跃仍然过大,就想到使用y=f(x)函数里面不同的x范围的表达方式,利用范围判断的真假来给定一个t值,从而让case缩减到和段数匹配的数目。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值