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,0000
和30,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;
}
好的,我必须在 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,0000
和30,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;
}