1071: 计算个人所得税
Time Limit: 1 Sec Memory Limit: 128 MB
Submit: 5232 Solved: 1151
[Submit][Status][Web Board]
Description
输入一个正整数 repeat (0<repeat<10),做repeat 次下列运算:
输入一个职工的月薪 salary,输出应交的个人所得税tax(保留2 位小数)。
tax = rate * (salary-850)
当 salary <= 850 时,rate = 0;
当 850 < salary <= 1350 时,rate = 5;
当 1350 < salary <= 2850 时,rate = 10;
当 2850 < salary <= 5850 时,rate = 15;
当 5850 < salary 时,rate = 20;
Input
见sample
Output
见sample
Sample Input
2 200 2000
Sample Output
tax=0.00 tax=115.00
HINT
当结果为0时,你的程序可能输出的是 -0.00,请判断为0时,使用printf("tax=0.00\n");
Source
#include<stdio.h>
int main()
{
int repeat;
double salary;
double tax,rate;
scanf("%d",&repeat);
while(repeat--)
{
tax=0;
scanf("%lf",&salary);
if(salary<= 850)rate =0.00;
else if(850<salary&&salary<=1350)rate =0.05;
else if(1350<salary&&salary<=2850 )rate = 0.10;
else if(2850<salary&&salary<=5850)rate = 0.15;
else{
rate = 0.20;
}
tax=rate*(salary-850);
if(tax==-0.00)printf("tax=0.00\n");
else{
printf("tax=%.2f\n",tax);
}
}
return 0;
}
提交了好多次,都是WA,不知道自己错哪儿了。
几个细节性的问题:(主要是不能被测试用例迷糊了)
1.工资不一定是整数!所以要用double类型而不是int类型。
2.分类讨论时要用&&符号,不能直接if(850<salary<=1350)。
3.税率要转成0.05,0.10这样子。
4.要注意结尾的提示“当结果为0时,你的程序可能输出的是 -0.00,请判断为0时,使用printf("tax=0.00\n");”