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

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 Arcgis相交分析无法绘制一个或多个图形
  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)
  • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误
  • ¥30 3天&7天&&15天&销量如何统计同一行
  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)