PTA c++题死活写不出来该怎么写?vs2019运行能得到正确结果

设计简单的飞机行李托运计费系统。假设飞机上个人托运行李的条件是: 行李在20公斤以下 免费托运(输出:您可以免费托运行李!) 2030公斤 超出部分5元/公斤; 3040公斤 超出部分10元/公斤; 40~50公斤 超出部分15元/公斤; (输出:您的托运费用为*元!) 50公斤以上不允许个人携带。 输出:您托运的行李超出了最高上限,不允许托运!
输入样例:
30
输出样例:
请输入您行李的重量!您的托运费用为50.000000元!

#include <stdio.h>
int main()
{
    int i,lug;
    float ch;
    printf("请输入您行李的重量!");
    scanf("%d",&lug);
    i = lug/10;
    switch (i)
    {
    case 0: 
    case 1:
    printf("您可以免费托运行李!");break;
    case 2:
            {
                if (lug==20)
    {
        printf("您可以免费托运行李!");
    }
          else 
       {
        ch = (lug-20)*5; printf("您的托运费用为%f元!",ch); break;
       }
    }
    case 3:
            {
             if(lug==30)
            {
                ch = (lug-20)*5; printf("您的托运费用为%f元!",ch); break;
            }
            else
            {
        ch = (lug-20)*10; printf("您的托运费用为%f元!",ch); break;
            }
    }
    case 4:{
        if(lug==40)
    {
        ch = (lug-20)*10; printf("您的托运费用为%f元!",ch); break;
    }
            else
      {
        ch = (lug-20)*15; printf("您的托运费用为%f元!",ch); break;
           }
    }
        case 5:
            {
                if(lug==50)
     {
         ch = (lug-20)*15;printf("您的托运费用为%f元!", ch); break;
     }
            else if(lug >50)
            {
                printf("您托运的行李超出了最高上限,不允许托运!");break;
            }
            }
        default: printf("您托运的行李超出了最高上限,不允许托运!");
    }
    return 0;
}

30-40公斤 超出部分10元/公斤这种,应该是计算超出20部分+超出30的部分,不应该直接计算超出30部分。
代码修改如下:

#include <stdio.h>
int main()
{
    int i,lug;
    float ch;
    printf("请输入您行李的重量!");
    scanf("%d",&lug);
    i = lug/10;
    switch (i)
    {
    case 0: 
    case 1:
        printf("您可以免费托运行李!");break;
    case 2:
        {
            if (lug==20)
            {
                printf("您可以免费托运行李!");
            }
            else 
            {
                ch = (lug-20)*5; printf("您的托运费用为%f元!",ch); break;
            }
        }
    case 3:
        {
            //if(lug==30)
            //{
            //    ch = (lug-20)*5; printf("您的托运费用为%f元!",ch); break;
            //}
            //else
            //{
                ch = 10 * 5 +(lug-30)*10; printf("您的托运费用为%f元!",ch); break;
            //}
        }
    case 4:{
        //if(lug==40)
        //{
        //    ch = 10*5 + 10*10; printf("您的托运费用为%f元!",ch); break;
        //}
        //else
        //{
            ch = 10*5 + 10*10+(lug-40)*15; printf("您的托运费用为%f元!",ch); break;
        //}
           }
    case 5:
        {
            if(lug==50)
            {
                ch = 10*5 + 10*10+(lug-40)*15;printf("您的托运费用为%f元!", ch); break;
            }
            else if(lug >50)
            {
                printf("您托运的行李超出了最高上限,不允许托运!");break;
            }
        }
    default: printf("您托运的行李超出了最高上限,不允许托运!");
    }
    return 0;
}