c++ - 税务计算器问题

标签 c++ c

我制作了这个程序,它根据用户输入计算一系列工资的税金。一切工作正常,除了我似乎无法找到一种方法让应用程序忽略最后 3 个 printf,如果用户输入负值则打印一条错误消息。如果用户输入负数,我不想显示最后 3 个 printf,相反我希望应用程序只显示“错误:您输入了负数”或类似的东西。我使用 visual studio 作为我的编译器,这是一个 C 应用程序。请帮助。也请对我的编程课放轻松,我们仍在做非常基础的事情。

代码如下:

#include <stdio.h>
#include <stdlib.h>

int main(void)
{

    float salary, tax = 0;
    printf("\n\n\tEnter the salary ammount per year: \t\t$");
    scanf("%f", &salary);

    if (salary <= 10000){
        tax=0;
    } 
    else if (salary > 10000 && salary <= 40000){
        tax = (salary - 10000)*0.2;
    } else if (salary > 40000 && salary <= 50000){
        tax = 6000 + (salary - 40000)*0.3 ;
    } else if (salary > 50000 && salary <= 75000){
        tax = 9000 + (salary - 50000)*0.4;
    } else if (salary > 75000.01 && salary <= 100000){
        tax = 19000  + (salary - 75000)*0.5;
    } else if (salary > 100000 && salary >=100000.01){
        tax = 31500 + (salary - 100000)*0.6;
    }



    printf("\nSalary per year:\t\t $ %.2f\n\n", salary);
    printf("Tax ammount per year:\t\t $ %.2f\n\n", tax);
    printf("Salary after tax:\t\t $ %.2f\n", salary-tax);


    getchar();getchar();
} 

最佳答案

您已经证明您知道如何使用 if检查是否为 int 的语句落在给定的范围内。只需将相同的逻辑应用于输出即可。负数是 < 0 .

例如:

if(salary < 0) {
    //print error
} else {

    if (salary <= 10000) {
        tax=0;
    } else if (salary > 10000 && salary <= 40000) {
        tax = (salary - 10000)*0.2;
    } else if (salary > 40000 && salary <= 50000) {
        tax = 6000 + (salary - 40000)*0.3 ;
    } else if (salary > 50000 && salary <= 75000) {
        tax = 9000 + (salary - 50000)*0.4;
    } else if (salary > 75000/*.01*/ && salary <= 100000) {
        tax = 19000  + (salary - 75000)*0.5;
    } else /*if (salary > 100000 && salary >=100000.01)*/ {
        tax = 31500 + (salary - 100000)*0.6;
    }

    printf("\nSalary per year:\t\t $ %.2f\n\n", salary);
    printf("Tax ammount per year:\t\t $ %.2f\n\n", tax);
    printf("Salary after tax:\t\t $ %.2f\n", salary-tax);
}

在最后else if , 你真的不需要 if声明,只是 else .尽管可以肯定(并且为了清楚起见)包含它也很好。但是,您绝对不需要 ** salary >=100000.01) >=只会评估为 true如果salary > 100000已经评估为 true .和 &&将评估为 true仅当双方评估为 true .唯一可能为真而另一个为假的情况是,如果有人输入奇数工资 (100000.005),但即使输入了这个工资,他们仍然需要在这个税级中。

无论如何,你的printf语句现在包含在 elseif(salary<0) {}else{} 的 block block ,所以他们只会在薪水 >= 0 时打印。

关于c++ - 税务计算器问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19309963/

相关文章:

C: "?:"运算符表达式等价

c# - 从频率响应计算 FIR 系数

c++ - 如何更改 Visual Studio 2019 中的默认 C++ 语言标准?

c++ - 打开优化(O1 或 O2 或 O3)时程序卡在 pthread_spin_unlock 语句

C 语言中可以有一个没有名字的函数吗?

iphone - 在iPhone上读取5000行文本文件

c - 为什么宏后面的分号会导致非法的else编译错误

c - 删除链表后仍在打印

c++ - 使用 hu 矩训练 SVM

c++ - 接口(interface)类型的 CMake 3.0 add_library 中断 get_target_property