汤姆叔叔的小屋 发表于 2020-4-10 12:33:53

c语言 运输公司对用户计算运费

C基础编程题目:运输公司对用户计算运费,距离越远每公里运费越低,标准如下:
s<250 没有折扣,
250<s<=500 2%折扣
500<s<=1000 5%折扣
1000<s<=2000 8%折扣
2000<s<=3000 10%折扣
3000<s 15%折扣
设每公里每吨货物的基本运费为p,货物重量为w,距离为s,折扣为d,则总运费f的计算公式为:f=p*w*s*(1-d).试编程计算货物运费。
我的代码   1 error:switch expression not integral
请指出错误
# include<stdio.h>

void main()
{
        float p, w, s, d, f;
        f = p * w * s * (1 - d);
        printf("基本运费元/公里p=,货物重量w=, 距离s=\n");
        scanf("%f%f%f",&p, &w, &s);
        printf("基本运费%f元/公里,货物重量w=%f t, 距离s=%f km\n",p, w, s);
        switch (s)
        {
                case s<250:
                printf("d =0\n");
                break;
                case s<=250 && s < 500:
                printf("d =0.02\n");
                break;
                case s >= 500 && s < 1000:
                printf("d = 0.05\n");
                break;
                case s<2000 && s >= 1000:
                printf("d =0.08\n");
                break;
                case s>2000 && s <= 3000:
                printf("d =0.1\n");
                break;
                case s > 30000:
                printf("d =0.15\n");
                break;
                default:
                        printf("error");

        }
        printf("%f:\n",f);
       

}

4goodworld 发表于 2020-4-10 12:41:02

case s<250:
switch要求case后面跟的是一个数而不是表达式

汤姆叔叔的小屋 发表于 2020-4-10 12:51:01

我改好了
# include<stdio.h>

void main()
{
        float p, w, s, d, f;
        f = p * w * s * (1 - d);
        printf("基本运费元/公里p=,货物重量w=, 距离s=\n");
        scanf("%f%f%f",&p, &w, &s);
        printf("基本运费%f元/公里,货物重量w=%f t, 距离s=%f km\n",p, w, s);


       

       
                if (s<250)
                d =0;
               
                else if (s<=250 && s < 500)
                d =0.02;
               
                else if (s >= 500 && s < 1000)
                d = 0.05;
               
                else if (s<2000 && s >= 1000)
                d =0.08;
               
                else if (s>2000 && s <= 3000)
                d =0.1;
               
                else
                d =0.15;
        printf("折扣d=%f折\n",(1-d)*10);


        f = p * w * s * (1 - d);
        printf("费用=%f:\n",f);
       

}
页: [1]
查看完整版本: c语言 运输公司对用户计算运费