
简单的C语言编程问题。。。
工资的起征点变成3500。公式是(工资-起征点)×对应税率-速算扣除数。“个人所得税超额累进税率表”如下:级数应纳税所得额税率速算扣除数1不超过1500元的部分3%02超...
工资的起征点变成3500。
公式是(工资 - 起征点)× 对应税率 - 速算扣除数。
“个人所得税超额累进税率表” 如下:
级数 应纳税所得额 税率 速算扣除数
1 不超过1500元的部分 3% 0
2 超过1500元至4500元的部分 10% 105
3 超过4500元至9000元的部分 20% 555
4 超过9000元至35000元的部分 25% 1005
5 超过35000元至55000元的部分 30% 2755
6 超过55000元至80000元的部分 35% 5505
7 超过80000的部分 45% 13505
Input 输入工资
Output 个税
Sample Input 4500
Sample Output 30 =======================================================以下是我写的代码。。都底哪里错了?# include <math.h>
# include <stdio.h>
int main ()
{
double x,y;
scanf ("%lf",&x);
if (x<=5000)
y=(x-3500)*0.03;
else if (x>5000&&x<=8000)
y=1500*0.03+(x-3500-1500)*0.1-105;
else if (x>8000&&x<=12500)
y=1500*0.03+3000*0.1-105+(x-3500-4500)*0.2-555;
else if (x>12500&&x<=38500)
y=1500*0.03+3000*0.1-105+4500*0.2-555+(x-3500-9000)*0.25-1005;
else if (x>38500&&x<=58500)
y=1500*0.03+3000*0.1-105+4500*0.2-555+26000*0.25-1005+(x-3500-35000)*0.3-2755;
else if (x>58500&&x<=83500)
y=1500*0.03+3000*0.1-105+4500*0.2-555+26000*0.25-1005+20000*0.3-2755+(x-3500-55000)*0.35-5505;
else
y=1500*0.03+3000*0.1-105+4500*0.2-555+26000*0.25-1005+20000*0.3-2755+25000*0.35-5505+(x-3500-80000)*0.45-13505;
printf ("%.0lf\n",y);
return 0;
} 展开
公式是(工资 - 起征点)× 对应税率 - 速算扣除数。
“个人所得税超额累进税率表” 如下:
级数 应纳税所得额 税率 速算扣除数
1 不超过1500元的部分 3% 0
2 超过1500元至4500元的部分 10% 105
3 超过4500元至9000元的部分 20% 555
4 超过9000元至35000元的部分 25% 1005
5 超过35000元至55000元的部分 30% 2755
6 超过55000元至80000元的部分 35% 5505
7 超过80000的部分 45% 13505
Input 输入工资
Output 个税
Sample Input 4500
Sample Output 30 =======================================================以下是我写的代码。。都底哪里错了?# include <math.h>
# include <stdio.h>
int main ()
{
double x,y;
scanf ("%lf",&x);
if (x<=5000)
y=(x-3500)*0.03;
else if (x>5000&&x<=8000)
y=1500*0.03+(x-3500-1500)*0.1-105;
else if (x>8000&&x<=12500)
y=1500*0.03+3000*0.1-105+(x-3500-4500)*0.2-555;
else if (x>12500&&x<=38500)
y=1500*0.03+3000*0.1-105+4500*0.2-555+(x-3500-9000)*0.25-1005;
else if (x>38500&&x<=58500)
y=1500*0.03+3000*0.1-105+4500*0.2-555+26000*0.25-1005+(x-3500-35000)*0.3-2755;
else if (x>58500&&x<=83500)
y=1500*0.03+3000*0.1-105+4500*0.2-555+26000*0.25-1005+20000*0.3-2755+(x-3500-55000)*0.35-5505;
else
y=1500*0.03+3000*0.1-105+4500*0.2-555+26000*0.25-1005+20000*0.3-2755+25000*0.35-5505+(x-3500-80000)*0.45-13505;
printf ("%.0lf\n",y);
return 0;
} 展开
5个回答
展开全部
1. 逻辑错了,少于3500时,国家不会倒补钱的,必需单列出来,此时交税为0
2. 没理解速算扣除的意思,公式用搞错了,如:
7 超过80000的部分 45% 13505
计算公式是: (工资 - 起征点)× 对应税率 - 速算扣除数
C语方表达即: y = (x-3500)*0.45-13505;
你看看你那计算方法,哪里有利用了速算公式啊,又臭又长又不对
////你原来的思路修改的:
#include <math.h>
#include <stdio.h>
int main ()
{
double x,y;
scanf ("%lf",&x);
if(x<=3500) //不够起征点的不交税
y = 0.0;
else if(x<=5000)
y=(x-3500)*0.03;
else if(x<=8000)
y=(x-3500)*0.1-105;
else if(x<=12500)
y=(x-3500)*0.2-555;
else if(x<=38500)
y=(x-3500)*0.25-1005;
else if(x<=58500)
y=(x-3500)*0.3-2755;
else if(x<=83500)
y=(x-3500)*0.35-5505;
else
y=(x-3500)*0.45-13505;
printf ("%.0lf\n",y);
return 0;
}
我另写一个改进算法和数据结构的:
#include <math.h>
#include <stdio.h>
int main ()
{
double x,y;
int i;
int shuilv[][3]={ //税率表: 上限, 税率%, 速算扣除
{3500, 0, 0},
{5000, 3, 0},
{8000, 10,105},
{12500,20,555},
{38500,25,1005},
{58500,30,2755},
{83500,35,5505},
{0, 45,13505},
};
scanf ("%lf",&x);
for(i=0; i<7 && shuilv[i][0] < x; i++);
y = (x-3500.0)*shuilv[i][1]/100.0 - shuilv[i][2];
printf ("%.0lf\n",y);
return 0;
}
2. 没理解速算扣除的意思,公式用搞错了,如:
7 超过80000的部分 45% 13505
计算公式是: (工资 - 起征点)× 对应税率 - 速算扣除数
C语方表达即: y = (x-3500)*0.45-13505;
你看看你那计算方法,哪里有利用了速算公式啊,又臭又长又不对
////你原来的思路修改的:
#include <math.h>
#include <stdio.h>
int main ()
{
double x,y;
scanf ("%lf",&x);
if(x<=3500) //不够起征点的不交税
y = 0.0;
else if(x<=5000)
y=(x-3500)*0.03;
else if(x<=8000)
y=(x-3500)*0.1-105;
else if(x<=12500)
y=(x-3500)*0.2-555;
else if(x<=38500)
y=(x-3500)*0.25-1005;
else if(x<=58500)
y=(x-3500)*0.3-2755;
else if(x<=83500)
y=(x-3500)*0.35-5505;
else
y=(x-3500)*0.45-13505;
printf ("%.0lf\n",y);
return 0;
}
我另写一个改进算法和数据结构的:
#include <math.h>
#include <stdio.h>
int main ()
{
double x,y;
int i;
int shuilv[][3]={ //税率表: 上限, 税率%, 速算扣除
{3500, 0, 0},
{5000, 3, 0},
{8000, 10,105},
{12500,20,555},
{38500,25,1005},
{58500,30,2755},
{83500,35,5505},
{0, 45,13505},
};
scanf ("%lf",&x);
for(i=0; i<7 && shuilv[i][0] < x; i++);
y = (x-3500.0)*shuilv[i][1]/100.0 - shuilv[i][2];
printf ("%.0lf\n",y);
return 0;
}
展开全部
时间不够,没编译没运行,有错误自己修改下哈。
struct RateInfo {
int low; //起点
int high; //终点
float rate; //税率
};
struct RateInfo tbl[] = {
0, 3500, 0.0,
3500, 4500, 0.10,
4500, 9000, 0.20,
... //自己补充
};
int main()
{
int salary = 10000;
float sum = 0.0;
int extra;
for (int i=0; i<sizeof(t)/sizeof(t[0]); ++i) {
if (salary >= tbl[i].high)
extra = tbl[i].high - tbl[i].low;
else
extra = salary - tbl[i].low;
sum += extra * tbl[i].rate;
if(salary <tbl[i].high)
break;
}
return 0;
}
struct RateInfo {
int low; //起点
int high; //终点
float rate; //税率
};
struct RateInfo tbl[] = {
0, 3500, 0.0,
3500, 4500, 0.10,
4500, 9000, 0.20,
... //自己补充
};
int main()
{
int salary = 10000;
float sum = 0.0;
int extra;
for (int i=0; i<sizeof(t)/sizeof(t[0]); ++i) {
if (salary >= tbl[i].high)
extra = tbl[i].high - tbl[i].low;
else
extra = salary - tbl[i].low;
sum += extra * tbl[i].rate;
if(salary <tbl[i].high)
break;
}
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你对公式的理解错了
计算公式是: 应纳个人所得税税额=应纳税所得额×适用税率-速算扣除数 例:王某当月取得工资收入9000元,当月个人承担住房公积金、基本养老保险金、医疗保险金、失业保险金共计1000元,费用扣除额为2000元,则王某当月应纳税所得额=9000-1000-2000=6400元。应纳个人所得税税额=6400×20%-375=905元。
计算公式是: 应纳个人所得税税额=应纳税所得额×适用税率-速算扣除数 例:王某当月取得工资收入9000元,当月个人承担住房公积金、基本养老保险金、医疗保险金、失业保险金共计1000元,费用扣除额为2000元,则王某当月应纳税所得额=9000-1000-2000=6400元。应纳个人所得税税额=6400×20%-375=905元。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
没有错!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我运行到没问题,不知道你指哪里有错
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询