qq_39218580 2017-06-18 12:25 采纳率: 50%
浏览 915
已采纳

75g后邮费都为0,什么原因。

重量15倍数,邮费(15g,5元;30g,9元;45g,12元;60g,14元;75g~,15元)60以上里程每足1000m邮费+1元,75以上里程每足1000m邮费+2元

#include
main()
{

    float weight,price;
int i,d,mileage;
price=0,weight=0,d=0;
printf("please input weight&mileage:");
scanf("%f%f",&weight,&mileage);
i=weight/15;
switch (i)
{
    case 1:price=5; break;
    case 2:price=9; break;
    case 3:price=12; break;
    case 4: {
    d=mileage/1000;switch(d)
    {
        case 0: price=14;break;
        case 1: price=14+d;break;
        case 2: price=14+d;break;
        case 3: price=14+d;break;
        case 4: price=14+d;break;
        case 5: price=14+d;break;
        case 6: price=14+d;break;
        case 7: price=14+d;break;
        case 8: price=14+d;break;
        case 9: price=14+d;break;
        default: price=14+d;break;
    }break;}
        case 5:{             
    d=mileage/1000;switch(d){
        case 0: price=15;break;
        case 1: price=15+2*d;break;
        case 2: price=15+2*d;break;
        case 3: price=15+2*d;break;
        case 4: price=15+2*d;break;
        case 5: price=15+2*d;break;
        case 6: price=15+2*d;break;
        case 7: price=15+2*d;break;
        case 8: price=15+2*d;break;
        case 9: price=15+2*d;break;
        default: price=15+2*d;break;
    }break;}

}


printf("price=%f\n",price);

}

  • 写回答

3条回答 默认 最新

  • lzl_Avery 2017-06-18 18:16
    关注

    switch(i){
    case 0:
    case 1:price=5;break;//0没有break表示0-15g以内包括15g都是5元
    case 2:price=9;break;
    case 3:price=12;break;
    case 4:
    d=mileage/1000;
    price=14+d;
    break;
    case 5: //case 5的范围大于等于75g 小于90g 因为weight/15 weight==90时为6
    d=mileage/1000;
    price=15+2*d;
    break;
    default :
    d=mileage/1000;
    price=15+2*d; //这里是大于等于90 和case 5结合起来表示的是75g以上 由于是switch的最后了
    } //所以可以省略break; 程序到这里还可以进一步优化成下面这样

    switch(i){
    case 0:
    case 1:price=5;break;//0没有break表示0-15g以内包括15g都是5元
    case 2:price=9;break;
    case 3:price=12;break;
    case 4:
    d=mileage/1000;
    price=14+d;
    break;
    case default: //因为60g<=case 4的范围=75了所以可以这样写
    d=mileage/1000;
    price=15+2*d;
    break;
    }

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器