这里我们想到了直接使用四个if和else条件语句来实现问题,还可以使用switch语句来判断
先展示方法一的代码:
#includeint main() { double income,tax; //一般都建议直接使用double printf("请输入您的收入n"); scanf("%f",&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语句:
#includeint main() { double income,tax; printf("请输入您的收入n"); scanf("%f",&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()语句一样一层层地判断,而是;直接跳到了自己的情况上,某种意义上减轻了计算机的负担;



