C语言检测错误

来源:百度知道 编辑:UC知道 时间:2024/05/30 01:13:57
当输入一个工资数,求税率和应交税款,以及实得工资金额(扣除税款后).
其中当工资A大于等于5000时,税率为20%,当工资大于等于2000而又小于5000时税率为10%;当工资大于等于1000而又小于2000时税率为8%;工资大于等于1000而又小于等于500时,税率为5%;工资小于500时,税率为0。
我编的程序如下图
但是运行的时候答案就是不对·
到底哪错了呢?
麻烦大家帮解决·谢了

r 应该定义为float或者double型的。

你在程序中定义的 r 是整形的,当你给它赋值为 0.05、0.08、0.1或者0.2的时候,实际上 r 得到的是这些小数的整数部分,所以 r 的值总是 0 ,总的结果就是 税率是 0 ,应缴税款为 0 ,实得工资和工资数是一样的。

r,s,c应是float类型的
#include<stdio.h>

void main(void)
{

int a;
float r,s,c;
scanf("%d",&a);
if(a<500) r=0;
else if(500<=a && a<1000) r=0.05;
else if(1000<=a && a<2000) r=0.08;
else if(2000<=a && a<5000) r=0.1;
else r=0.2;
c=a-a*r;
printf("c=%f",c);

}

税率的计算应该是分段的吧
500-1000 的 部分交5%
1000-2000 的 部分叫8%
……
而不是一旦工资在1000以上,所有超过500的部分都乘8%