C语言switch问题

Switch相关问题55444866654158841188

img

运行结果:

img

代码:

#include <stdio.h>
int main()
{
    double a, r, s;
    int n;
    printf("请输入奖金数:");
    scanf("%lf", &a);
    n = a / 500;
    switch (n)
    {
    case 0:
        r = 0;
        printf("税率:0%%");
        break;
    case 1:
        r = 0.05;
        printf("税率:5%%");
        break;
    case 2:
    case 3:
        r = 0.08;
        printf("税率:8%%");
        break;
    case 4:
    case 5:
        r = 0.1;
        printf("税率:10%%");
        break;
    case 6:
        r = 0.15;
        printf("税率:15%%");
        break;
    default:
        r = 0.15;
        printf("税率:15%%");
        break;
    }
    printf("\n应交税款:%g\n", a * r);
    printf("实得奖金:%g\n", a - a * r);
    

    return 0;
}

将a的值除500来进行判断。

#include<stdio.h>
int main(){
    int a,r;
    float tax;
    printf("输入奖金数:");
    scanf("%d",&a);
    switch(a/500){
        case 0:
            r = 0;
            break;
        case 1:
            r = 5;
            break;
        case 2:
        case 3:    
            r = 8;
            break;
        case 4:
        case 5:    
            r = 10;
            break;
        default:
            r = 15;
            break;                    
    }
    tax = a * r /100.0;
    printf("税率:%d,应交税款:%.2f,实得奖金数:%.2f\n",r,tax,a-tax);
    return 0;
} 

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632

【以下回答由 GPT 生成】

#include <stdio.h>

int main() {
    int a;
    float r, t, b;

    printf("请输入a的值:");
    scanf("%d", &a);

    switch (a / 500) {
        case 0: // 0 <= a < 500
            r = 0.0;
            t = 0.0;
            b = a;
            break;
        case 1: // 500 <= a < 1000
            r = 0.05;
            t = 0.05 * (a - 500);
            b = a - t;
            break;
        case 2: // 1000 <= a < 2000
            r = 0.08;
            t = 0.08 * (a - 1000);
            b = a - t;
            break;
        case 4: // 2000 <= a < 3000
            r = 0.10;
            t = 0.10 * (a - 2000);
            b = a - t;
            break;
        default: // a >= 3000
            r = 0.15;
            t = 0.15 * (a - 3000);
            b = a - t;
            break;
    }

    printf("税率:%.2f%%\n", r * 100);
    printf("税款:%.2f\n", t);
    printf("实得奖金数:%.2f\n", b);

    return 0;
}

在使用switch语句实现上述需求时,需要注意以下几点:

  1. 需要将用户输入的a的值作为switch语句的条件,但是switch语句的条件必须是整型表达式,因此需要将a的值除以500得到一个整数。
  2. 每个case后面的标签是计算该范围的税款和实得奖金数的地方,需要在该标签下面定义税率r、税款t和实得奖金数b,并进行计算。
  3. 由于每个case范围是左开右闭区间,因此需要注意各个case之间的范围关系,确保所有的情况都能被正确处理。
  4. 默认情况下,即a大于等于3000的情况,可以使用default标签来处理。

希望以上代码和解释能帮助到您!如有疑问,请及时指出。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^