Почему функция всегда возвращает 0? (С) - PullRequest
0 голосов
/ 30 октября 2018

Ниже приведен код функции, которую я написал и которая рассчитывает подоходный налог при прохождении налогооблагаемой суммы.

По сути, код должен рассчитывать сумму налога, которую лицо должно платить, исходя из следующего:

  • Облагаемая налогом сумма дохода до 34 500 облагается налогом в размере 20%
  • Налогооблагаемая сумма дохода от 34 501 до 150 000 облагается налогом в размере 40%
  • Облагаемая налогом сумма дохода свыше 150 000 облагается налогом в размере 45%

float compute_annual_income_tax ( float taxableIncome ) {
    float t = 0;
    if (taxableIncome <= 0)
     t = 0 * taxableIncome;
    else if (taxableIncome > 0 && taxableIncome <= 34500)
     t = (taxableIncome * 0.2);
    else if (taxableIncome > 34500 && taxableIncome <= 150000) {
     float t2;
     t2 = taxableIncome - 34500;
     t = ((34500 * 0.2) + (t2 * 0.4));
    }
    else if (taxableIncome > 150000) {
     float t2, t3;
     t3 = taxableIncome - 150000;
     t2 = 150000 - 34500;
     t = ((34500 * 0.2) + (t2 * 0.4) + (t3 * 0.45));
    }
    return t;
}

Код проверяется с использованием следующего:

gcc -lm -std = c99 -o

1 Ответ

0 голосов
/ 30 октября 2018

Ваш код работает как есть. Вам необходимо проверить входные данные для функции и способ использования выходных данных. Вы можете просто вставить строку в начале функции, чтобы напечатать ввод, и вставить строку в конце, чтобы напечатать вывод

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