【发布时间】:2021-11-24 02:50:54
【问题描述】:
我正在尝试编写允许用户输入申报状态和收入以计算所欠税款的代码。如果归档状态输入超出 1-4 ,程序将退出。我正在尝试使用开关和 if else if,但看起来我被困在生成欠税部分的代码上。每当我输入收入时,它都不会产生欠税金额。例如,案例1:在switch(最后一行)中输入1(单身),输入20000作为收入。结果应该显示 $3000 但它不会给出任何结果。下面是我到目前为止的代码。
#include<stdio.h>
int main()
{
//declaration status = filing status , income = income input, taxOwed = tax owed calculation.
int status;
double income, taxOwed;
//data/input
printf("************Menu****************\n");
printf("1) Single\n");
printf("2) Married Filing Jointly\n");
printf("3) Married Filing Separately\n");
printf("4) Head of Household\n");
printf("5) Exit\n");
printf("\n");
printf("********************************\n");
printf("\n");
printf("Enter status : ");
scanf("%d", &status);
//processing switch with Calculation within each case
switch(status)
{
case 5:
printf("\n", status);
printf("Exit Program...\n");
break;
case 6: case 7: case 8: case 9:
printf("You entered a wrong status. Program Exit . . .");
break;
default:
printf("You entered a wrong status. Program Exit . . .");
break;
case 1:
printf("Enter your taxable TI: $");
scanf("%.2lf\n", income);
if (0 < income <= 24000)
{
taxOwed = (income * 0.15);
printf("\n");
printf("The taxes owed are: $%.2lf", taxOwed);
break;
}
else if (24000 < income <= 58000)
{
taxOwed = 3600 + (0.28 * (income - 24000));
printf("The taxes owed are: $%.2lf", taxOwed);
break;
}
}
return 0;
}
非常感谢任何评论和帮助。谢谢
【问题讨论】:
-
关于您之前的编辑:对于
printf,您可以对float和double使用%f格式说明符,但对于scanf,您必须使用%lf双倍的。这是因为在调用诸如printf之类的可变参数函数时,float被提升为double。scanf不会进行任何形式的促销。 -
请勿编辑帖子以更改所提出的问题,例如,通过在代码中进行一些修复并询问仍然存在的问题。 Stack Overflow 旨在成为其他人可以用作参考的问题和答案的持久存储库。当您更改问题时,未来的读者将不再看到匹配的问答,因此答案不会告诉他们如何解决特定问题。 Stack Overflow 不是个人调试服务,您不应该那样使用它。您应该主要自己调试程序并一次提出一个特定问题。
-
这意味着您有责任将问题缩小到程序的特定部分,并仅针对该部分提出问题,最好将特定的代码部分提取到一个小程序中,以演示您遇到的问题。
-
既然后续问题已经解决了,不妨把它删掉,以恢复原来的问题。
-
@AndreasWenzel 我已经删除了第二个问题,因为它已经解决了,但是第三个后续问题仍然有问题并且它没有打印带有 taxOwed 的字符串。
标签: c if-statement switch-statement calculation