大学计算机基础:C语言编程问题,求解,

假设奖金税率如下(ma代表税前奖金且ma>0,r代表税率),利用switch语句编写程序对输入的一个奖金数,输出税率和应交税款及实得奖金数(扣除奖金税后)。

① 0 ≤ma<1000时, tr=0%;

② 1000 ≤ma<2000时, tr=5%;

③ 2000 ≤ma<4000时, tr=8%;

④ 4000 ≤ma时, tr=10%。

#include <stdio.h>
int main()
{
    float ma,tr;
int n;
scanf("%f",&ma);
n=(int)(ma/1000)+1;
switch(n)
{
    case 1: tr=0;break;          //① 0 ≤ma<1000时, tr=0%;
    case 2: tr=0.05;break;       //② 1000 ≤ma<2000时, tr=5%;
    case 3: tr=0.08;break;       //③ 2000 ≤ma<4000时, tr=8%;
    case 4: tr=0.08;break;       //③ 2000 ≤ma<4000时, tr=8%;
    default: tr=0.1;break;       //④ 4000 ≤ma时, tr=10%。
    
}
printf("税率=%f\n应交税款=%f\n实得奖金数=%f\n",tr,ma*tr,ma*(1-tr));
//getchar();                    
//getchar();                  //这两行没用,留住屏幕显示而已 
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-11-16
#include <stdio.h>
#include <stdlib.h>

int main() {
    float ma, tr, tax;

    printf("请输入奖金数:");
    scanf("%f", &ma);
    if (ma<0)
    {
        printf("输入错误,程序结束\n");
        return 1;
    }
    switch((int)(ma/1000))
    {
        case 0:
            tr = 0;
            break;
        case 1:
            tr = 5;
            break;
        case 2:
        case 3:
            tr = 8;
            break;
        default:
            tr = 10;
            break;
    }
    tax = ma * tr / 100;

    ma = ma - tax;

    printf("税率:%.2f\n应交税款:%.2f\n实得奖金数:%.2f\n", tr, tax, ma);

    return 0;
}

第2个回答  2018-11-16
switch(ma/1000){
case 0: tr=0;break;
case 1
case 2
case 3
default:
}
手机输入不方便,就是这个思路。
相似回答