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 MATLAB运行显示错误,如何解决?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容
  • ¥15 UE5#if WITH_EDITOR导致打包的功能不可用
  • ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题
  • ¥20 yolov5自定义Prune报错,如何解决?
  • ¥15 电磁场的matlab仿真
  • ¥15 mars2d在vue3中的引入问题
  • ¥50 h5唤醒支付宝并跳转至向小荷包转账界面
  • ¥15 算法题:数的划分,用记忆化DFS做WA求调