juhugufudu 发表于 2019-7-29 18:15:04

神之谜题


#include<stdio.h>

int main()
{
        float w,s,p;
        float f;
        printf("请输入吨数与公里数和运费(单价):");
        scanf("%d %d %d",&w,&s,&p);
       
        if(s>=250 && s<500){
                p = p*0.99;
                f = p*w*s;
        }else if(s>=500 && s<1000){
                p = p*0.97;
                f = p*w*s;
        }else if(s>=1000 && s<2000){
                p = p*0.95;
                f = p*w*s;
        }else if(s>=2000 && s<3000){
                p = p*0.98;
                f = p*w*s;
        }else if(s>=3000){
                p = p*0.9;
                f = p*w*s;
        }
       
        printf("总价是: %.2f\n",f);
       
        return 0;
}

为甚麽改来改去都是0.00啊...
求助,谢谢

df3379 发表于 2019-7-29 18:15:05

本帖最后由 df3379 于 2019-7-30 14:29 编辑

#include<stdio.h>

int main()
{
        do
        {
      float w,s,p;
      double f;
      printf("请输入吨数与公里数和运费(单价):");
      scanf("%f %f %f",&w,&s,&p);
      
      if(s>0 && s<249){
               f = p*w*s;

       }else if(s>=250 && s<500){
                p = p*0.99;
                f = p*w*s;
               
      }else if(s>=500 && s<1000){
                p = p*0.97;
                f = p*w*s;
                       
      }else if(s>=1000 && s<2000){
                p = p*0.95;
                f = p*w*s;
                       
      }else if(s>=2000 && s<3000){
                p = p*0.98;
                f = p*w*s;
                               
      }else if(s>=3000){
                p = p*0.9;
                f = p*w*s;
                               
      }
      printf("\n重量为:%.1f吨\n\n里程数为:%.1f公里\n\n运费为:%.2f元/公里\n\n",w,s,p);
      printf("本次运输总价是: %.2f元\n\n=========================分隔线==================\n\n",f);
        }
          while('%f');
      return 0;
}

http://i2.tiimg.com/693900/8e19462f63827d2a.jpg

变量定义时修改一下就行了!
主要问题在f变量修改为双精度。结果为单精度会出现数据溢出.
低于250公里的选项没有,补上就好。

希望设我为最佳答案哟

juhugufudu 发表于 2019-7-29 18:17:00

08行代码应该是-->%f
已经改了,但依然没用

dt3tc 发表于 2019-7-29 20:13:50

只改那个不够的。要这样写:
#include<stdio.h>

int main()
{
      float w=0,s=0,p=0;
      float f=0;
      printf("请输入吨数与公里数和运费(单价):");
      scanf("%f %f %f",&w,&s,&p);
      
      if(s>=250 && s<500){
                p = p*0.99;
                f = p*w*s;
      }else if(s>=500 && s<1000){
                p = p*0.97;
                f = p*w*s;
      }else if(s>=1000 && s<2000){
                p = p*0.95;
                f = p*w*s;
      }else if(s>=2000 && s<3000){
                p = p*0.98;
                f = p*w*s;
      }else if(s>=3000){
                p = p*0.9;
                f = p*w*s;
      }else{
                p = p*0.8;
                f = p*w*s;
      }
      
      printf("总价是: %f\n",f);
      
      return 0;
}

东辰木 发表于 2019-7-30 09:54:37

s<250 的情况没考虑,应该是你输入的s小于250,所以结果总是0.00
其他应该没什么问题

Neverturnback 发表于 2019-7-30 11:23:57

本帖最后由 Neverturnback 于 2019-7-30 11:35 编辑

可能输入s小于250了所以才会总是0.00,我编译运行过了,第二个数是250以上时,其它数不是0时都有结果

挥世及至吾 发表于 2019-7-30 11:33:51

总之先要赋初值,只要不是在函数内定义的,都要赋初值,不然它的值就是随机的。。
页: [1]
查看完整版本: 神之谜题