为什么函数总是返回0?(C)

为什么函数总是返回0?(C),c,return,return-value,C,Return,Return Value,下面是我编写的一个函数的代码,该函数在传递应纳税额时计算所得税 基本上,代码应根据以下内容计算个人必须缴纳的税款: 应纳税所得额高达34500的按20%征税 应纳税所得额34501至150000按40%征税 应纳税所得额超过150000的按45%征税 浮动计算年度所得税(浮动可征税收入){ 浮动t=0; if(应纳税所得额0和应纳税所得额34500和应纳税所得额150000){ 浮动t2、t3; t3=应纳税所得额-150000; t2=150000-34500; t=((34500*0.

下面是我编写的一个函数的代码,该函数在传递应纳税额时计算所得税

基本上,代码应根据以下内容计算个人必须缴纳的税款:

  • 应纳税所得额高达34500的按20%征税
  • 应纳税所得额34501至150000按40%征税
  • 应纳税所得额超过150000的按45%征税

浮动计算年度所得税(浮动可征税收入){
浮动t=0;
if(应纳税所得额0和应纳税所得额34500和应纳税所得额150000){
浮动t2、t3;
t3=应纳税所得额-150000;
t2=150000-34500;
t=((34500*0.2)+(t2*0.4)+(t3*0.45));
}
返回t;
}
使用以下方法测试代码:

gcc-lm-std=c99-o


您的代码按原样工作。您需要检查函数的输入和使用输出的方式。只需在函数的开头插入一行即可打印输入,在末尾插入一行即可打印输出

float compute_annual_income_tax ( float taxableIncome ) {
  float t = 0;
  printf("taxable income: %f\n", taxableIncome);
  ...
  printf("income tax: %f\n", t);
  return t;
}

我按照你的建议做了,但考试还是失败了。测试程序不允许使用任何交互组件(即scanf和printf)。但是,添加上面给出的代码行会导致显示用于测试程序的不同值。当输入-9488时,该功能失败。因此,我认为问题在于测试计划。当应纳税所得额为负值时,我看不出年度所得税是如何可能的。这是我添加printf报表时显示的:
test.c:85:test_应纳税所得额:通过应纳税所得额:77533.000000所得税:24113.199219应纳税所得额:80927.000000所得税:25470.800781应纳税所得额:147793.000000所得税:52217.199219应纳税所得额:73536.000000所得税:22514.400391应纳税所得额:113123.500000所得税:38349.398438应纳税所得额:-9488.000000所得税:0.000000测试c:38:测试年度所得税:失败:预期-1897.6为0
如果(应纳税所得额<0)
t=taxableIncome*0.20
…但是,这显然是错误的,因为应纳税所得额和年度所得税都可以为0。因此,使用的测试程序肯定是错误的
float compute_annual_income_tax ( float taxableIncome ) {
  float t = 0;
  printf("taxable income: %f\n", taxableIncome);
  ...
  printf("income tax: %f\n", t);
  return t;
}