江麗好好学习 发表于 2021-4-18 10:39:30

写了一个小甲鱼老师的课后习题,计算运费,不知道哪里错了,计算结果不正确,但程....

{:5_100:}/*运输公司对用户计算运费。路程(s)越远,每公里运费越低。标准如下:s < 250km   没有折扣;
250 <= s <500    2%折扣;
500<= s <1000    5%折扣;
1000 <= s <20008%折扣;
2000 <= s <300010%折扣;
3000 <= s      15%折扣;
设每公里货物的基本运费为p,货物重为w,距离为s,折扣为d
则总运费f的计算公式为:f=p*w*s*(1-d)*/
#include <stdio.h>
#include <math.h>

void main()
{   
       int c,s;
   float d,p,w,f;
       printf("input three numbers : ");
       scanf("%f %f %f ",&p,&w,&s);
       if(s<250)
                c=1;
       else if((250 ==s || 250 < s) && s < 500)
          c=2;
       else if((500 == s || 500 < s) && s < 1000)
          c=3;
       else if((1000 == s || 1000 < s) && s < 2000)
          c=4;
       else if((2000 == s || 2000 < s) && s < 3000)
          c=5;
       else
          c=6;
   switch(c)
       {
       case 1:
             d=0;
               break;
   case 2:
             d=2;
             break;
   case 3:
         d=5;
               break;
       case 4:
         d=8;
             break;
   case 5:
         d=10;
               break;
   case 6:
             d=15;
               break;
          }
           f=p*w*s*(1-d/100.0);
                printf("freight=%f\n",f);

}//程序错误


wp231957 发表于 2021-4-18 11:51:16

错误信息呢

g1063496360 发表于 2021-4-18 15:26:03

本帖最后由 g1063496360 于 2021-4-18 15:29 编辑

#include <stdio.h>
#include <math.h>

void main()
{   
         int c,s;
   float d,p,w,f;
         printf("input three numbers : ");
         scanf("%f%f%d",&p,&w,&s);
         if(s<250)
                c=1;
         else if((250 ==s || 250 < s) && (s < 500))
            c=2;
         else if((500 == s || 500 < s) && (s < 1000))
            c=3;
         else if((1000 == s || 1000 < s) && (s < 2000))
            c=4;
         else if((2000 == s || 2000 < s) && (s < 3000))
            c=5;
         else
            c=6;
   switch(c)
         {
         case 1:
             d=0;
               break;
   case 2:
             d=2;
             break;
   case 3:
         d=5;
               break;
         case 4:
         d=8;
             break;
   case 5:
         d=10;
               break;
   case 6:
             d=15;
               break;
          }
         f=p*w*s*(1-d/100);
                printf("freight=%f\n",f);
}


你定义S 是整型的 用%d就好   还有输入你%f%f最好就不要空格了 不要你要多输几次空格
页: [1]
查看完整版本: 写了一个小甲鱼老师的课后习题,计算运费,不知道哪里错了,计算结果不正确,但程....