C 中的总数不正确

Incorrect Total in C

好的,我必须在 C 中计算这个税率。基本上,前 10,000 人不征税,接下来的 30,000 人征税 10%,接下来的 20,000 人征税 20%。例如: 你的收入是六万。 前 10,000 人不征税,所以现在还剩下 50,000 人。 这 50,000 人中的下一个 30,000 人要缴纳 10% 的税,所以是 3,000 人。 你现在有 20,000 人,括号内写着接下来的 20,000 人要缴纳 20% 的税,所以是 4,000 人。 总税额将等于 3,000 + 4,000,即 7,000。 现在我的代码没有得出正确的总数。请注意,这是我在 C 的第一个学期。

// Aundray Ortiz
// 2/22/15
// COP3223
// tax



int main(){
int income;
int total = 0;

printf("What is your income in dollars?\n");
scanf("%d", &income);

int for_free;
int next_bracket;

for_free = income - 10,0000;
next_bracket = for_free - 30,000;

if (for_free >= 0){
    total = for_free*.1;
}

if (next_bracket >= 0){
    total = total + (next_bracket*.2);

}

printf("You will pay %d in taxes.", total);






return 0;
}

您的代码不起作用的一个原因是您没有将 for_free 限制为 30000。

另一个是10,000030,000有语法错误(除了错误的值)。您必须删除逗号。

由于使用 total = for_free*.1; 进行 double 计算,还有一个编译器警告,它(可能)在写回 [=17= 时截断 double 值]值。

这是经过清理的代码,其中包含更高的税率。

#include <stdio.h>

#define FOR_FREE    10000
#define LOW_BRACKET 30000
#define BIG_BRACKET 20000
#define LOW_RATE    0.10
#define HIGH_RATE   0.20
#define HUGE_RATE   0.50

int main(void) {
    int income = 0;
    int lowtaxable = 0, hightaxable = 0, hugetaxable = 0;
    double taxdue = 0;
    printf("What is your income in dollars?\n");
    scanf("%d", &income);

    lowtaxable = income - FOR_FREE;
    if (lowtaxable > LOW_BRACKET) {
        hightaxable = lowtaxable - LOW_BRACKET;
        lowtaxable = LOW_BRACKET;
    }
    if (hightaxable > BIG_BRACKET) {
        hugetaxable = hightaxable - BIG_BRACKET;
        hightaxable = BIG_BRACKET;
    }
    taxdue = LOW_RATE  * lowtaxable
           + HIGH_RATE * hightaxable
           + HUGE_RATE * hugetaxable;
    printf("You will pay %.2f in taxes.\n", taxdue);
    return 0;
}