我有一项任务,它要求我拥有满足这些要求的功能:
Tax_Bracket_Identification
。此功能将识别税级。这个功能:
Tax_Calculation
。将计算每笔扫描收入的税额,并且:
PrintAll
。此功能将打印纳税和所得税。它:
所以基本上,我已经开始了任务,我有几个问题。 到目前为止,这是我的代码:
#include <stdio.h>
int taxBracketIdentification(int);
void taxCalculation(int income, int taxbracket, int *tax);
void printAll(int, int);
int taxbracket;
void main() {
int incomenumber, income, *tax;
printf("Please type in the number of incomes to be processed. \n");
scanf("%d", &incomenumber);
printf("Please type in the income \n");
scanf("%d", &income);
}
int gradeone, gradetwo, gradethree, gradefour, gradefive, gradesix;
int taxBracketIdentification(int income) {
int taxbracket;
if (income < 10000) {
taxbracket = 1;
}
else if (income > 10000 && income < 20000)
{
taxbracket = 2;
}
else if (income > 20000 && income < 30000)
{
taxbracket = 3;
// printf("your tax bracket is 3");
}
else if (income > 30000 && income < 40000)
{
taxbracket = 4;
}
else if (income > 40000 && income < 50000)
{
taxbracket = 5;
}
else if (income > 100000)
{
taxbracket = 6;
}
}
void taxCalculation(int income, int taxbracket, int *tax) {
(taxBracketIdentification(income));
switch(taxbracket) {
case 1:
*tax = (0.05 * income);
break;
case 2:
*tax = 500 + 0.10*(income - 10000);
break;
case 3:
*tax = 1500 + 0.15*(income-20000);
break;
case 4:
*tax = 3000 + 0.20*(income-30000);
break;
case 5:
*tax = 7000 + 0.25*(income-50000);
break;
case 6:
*tax = 19500 + 0.30*(income-10000);
break;
}
void printAll(int taxbracket, int tax)
{
printf("Your tax bracket is: \t %d \n", taxBracketIdentification(income));
printf("Your tax is \t %d \n", );
}
}
现在我有几个问题......
非常感谢。
答案 0 :(得分:1)
针对您的具体问题:
1 /如果您收到用户的项目并且立即处理它们,则您不需要数组。如果您想存储信息供以后使用,则只需要数组。例如,即使没有用于存储值的数组,这个伪代码也会输出用户输入的多个项目的两倍:
val = get-input()
while val != -1:
output(val * 2)
val = get-input()
2 /变量本身不是按值调用或按引用调用,它是将传递给指向该函数的函数的方式。例如,以下C代码使用两种方法传递它,首先将其设置为特定值然后输出它:
void setTo42 (int *pVal) {
*pVal = 42;
}
void outputIt (int val) {
printf ("%d\n", val);
}
:
int xyzzy = 7;
setTo42(&xyzzy); // pass by reference (emulated).
outputIt(xyzzy); // pass by value.
3 /你执行任务的方式似乎很好,但我会给你两条建议。首先,考虑一下您的代码将为您提供的收入为20000
的税收范围。为了减少麻烦,您将不得不使用<=
/ >=
,而不仅仅是<
/ >
。其次,考虑如下构造:
if (xyzzy < 20000) {
doLt20k();
} else if ((xyzzy >= 20000) && (xyzzy < 40000)) {
doGe20kLt40k();
} else {
doGe40k();
}
在该代码中,第二个if
语句不必要复杂,因为在xyzzy < 20000
时永远不会检查它。因此可以简化为:
if (xyzzy < 20000) {
doLt20k();
} else if (xyzzy < 40000) {
doGe20kLt40k();
} else {
doGe40k();
}