这里我们想到了俩种方案:
方法一:
直接使用四个if和else条件语句来解决问题
方法二:
使用switch语句来判断
先展示方法一的代码:
#include<stdio.h>
int main()
{
double income,tax; //一般都建议直接使用double
printf("请输入您的收入\n");
scanf("%lf",&income);
if(income < 1000) //判断收入是否小于1000
{
tax = 0;
}
else if(income>=1000 && income<2000) //收入是否在1000和2000之间(不包含2000)
{
tax = (income-1000) *0.05;
}
else if(income>=2000 && income<4000) //收入是否在2000和4000之间(不包含4000)
{
tax = (income-2000)*0.1+50;
}
else if(income>=4000 && income<6000) //收入是否在4000和六千之间(不包含6000)
{
tax = (income-4000)*0.15+250;
}
else //其他情况的收入
{
tax = (income-6000)*0.2+550;
}
income -= tax; //税后收入income = income - tax
if(tax==0) //判断数值是否想等要用"==",tax的值还是以前的值
//如果用'='后,tax就变成0了,新手一般都在这容易出错
//不用交税就输出不用交税,侮辱性极强
{
printf("您无需交税,实际收入为%.2f元",income);
}
else //要交税就输出具体的税额
{
printf("您应纳的税额为%.2lf,实际收入为%.2lf",tax,income);//保留俩位小数输出
//这里使用%f也可以,但是还是
//建议一一对应使用%lf
}
return 0;
}
方法二使用switch语句:
#include<stdio.h>
int main()
{
double income,tax;
printf("请输入您的收入\n");
scanf("%lf",&income);
int x;
x = (income<1000)?1:(income>=1000 && income<2000)?2:
(income>=2000 && income<4000)?3:(income>=4000 && income<6000)?4:5;
//这里我嫌弃代码长使用了条件表达式,但是我强烈建议不要使用不要使用!!
//这里为了某人,我后面还是仔细讲了一下,大家麻烦不要嫌烦,可以选择观看
switch (x)
{
case 1: //这里case后面的数字是上面switch()里x的值
//这一点在上面已经处理过了
tax = 0;
break;
case 2:
tax = (income-1000) *0.05;
break;
case 3:
tax = (income-2000)*0.1+50;
break;
case 4:
tax = (income-4000)*0.15+250;
break;
default: //这里可以用case 5:也可以用defau:程序可以自己判断最后一种情况
tax = (income-6000)*0.2+550;
break;
}
income -= tax;
switch (tax==0?1:2) //这里判断tax是不是等于零等于零就是1,不是就是2
{ //再次强调判读是不是等于要用==,'='号是赋值只用一个tax就变成了
case 1:
printf("您无需交税,实际收入为为%.2f元",income);
break;
default: //这里和上面同理
printf("您应纳的税额为%.2f,实际收入为%.2f",tax,income);
break;
}
return 0;
}
x = (income<1000)?1:(income>=1000 && income<2000)?2:
(income>=2000 && income<4000)?3:(income>=4000 && income<6000)?4:5;
这里对上面代码继续讲解,()代表了一个整体,我们用具体示例来讲解,如果我们收入是1100;显然不符合第一个?前的条件所以就不返回1,让x=1;那就继续对:后的内容判断,1100在1000到2000之间符合第二个?前的条件,所以判断到这就结束了,这时候就返回2,让x=2后;进入下面的switch(x)代码了,因为x=2,所以只执行case 2:后的代码,其他case就不执行了.
至于&&符号,就相当于我们集合中的和and,||符号相当于集合中的或or,&&前后的条件都要符号,那么才是真,||前后只要满足一个就行了.
这也是switch的一个优势,他不像if()语句一样一层层地判断,而是;直接跳到了自己的情况上,某种意义上减轻了计算机的负担;
更多推荐
C语言计算个人所得税
发布评论