婷婷雨里 2024-10-31 22:21 采纳率: 33.3%
浏览 3

简单程序错误,可以输入,不能输出

int main( )
{
    float p,w,s,d,f;
    scanf("%f,%f,%f",&s,&p,&d);
    if(    s<250)
    {
        f=p*w*s;
        printf("%f\n",f);
    }
    else
      if(250<=s<500)
      {
             f=p*w*s*(1-d);
            d=0.02;
            printf("%f\n",f);
      }
      else
        if(500<=s<1000)
        {
            f=p*w*s*(1-d);
              d=0.05;
              printf("%f\n",f);
        }
        else
          if(1000<=s<2000)
          {
              f=p*w*s*(1-d);
                d=0.08;
                printf("%f\n",f);
              
          }
          else
            if(2000<=s<3000)
            {
                f=p*w*s*(1-d);
                  d=0.1;
                  printf("%f\n",f);
            }
            else
              if(3000<=s)
              {
                  f=p*w*s*(1-d);
                    d=0.15;
                    printf("%f\n",f);
              } 
    return 0;

为什么我输入100,20,300后是运行结果是0.000000
还显示Process exited after 10.7 seconds with return value0.

  • 写回答

1条回答 默认 最新

  • a5156520 2024-11-01 09:15
    关注

    变量w需要赋值,然后if-else if语句的条件也要修改下。

    修改如下:

    参考链接:

    #include <stdio.h>
    
    int main( ) {
        // 此处变量w参与了下面的计算,所以变量w需要赋一个初始值,或者从输入获取一个值
        // 这里为了测试方便,给变量w赋一个初始值1
        float p,w=1,s,d,f;
        scanf("%f,%f,%f",&s,&p,&d);
    
    
        // https://blog.csdn.net/2301_81006672/article/details/136734986
        // 下面 if-eles if语句的条件需要使用逻辑与运算符&&连接,然后每个分支里先给变量d赋值,再计算变量f的值即可 
        if( s<250) {
            f=p*w*s;
    
            printf("%f\n",f);
        } else if(250<=s&&s<500) {
            d=0.02;
            f=p*w*s*(1-d);        
            printf("%f\n",f);
        } else if(500<=s&&s<1000) {
            d=0.05;
            f=p*w*s*(1-d);
    
            
            printf("%f\n",f);
        } else if(1000<=s&&s<2000) {
            d=0.08;
            f=p*w*s*(1-d);
    
            
            printf("%f\n",f);
    
        } else if(2000<=s&&s<3000) {
            d=0.1;
            f=p*w*s*(1-d);
    
            printf("%f\n",f);
        } else if(3000<=s) {
            
            d=0.15;
            f=p*w*s*(1-d);
        
            printf("%f\n",f);
        }
        return 0;
    }
    
    
    

    img

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 10月31日

悬赏问题

  • ¥20 verilog状态机方法流水灯
  • ¥15 pandas代码实现不了意图
  • ¥15 GD32H7 从存储器到外设SPI传输数据无法重复启用DMA
  • ¥25 LT码在高斯信道下的误码率仿真
  • ¥45 渲染完成之后将物体的材质贴图改变,自动化进行这个操作
  • ¥15 yolov5目标检测并显示目标出现的时间或视频帧
  • ¥15 电视版的优酷可以设置电影连续播放吗?
  • ¥50 复现论文;matlab代码编写
  • ¥30 echarts 3d地图怎么实现一进来页面散点数据和卡片一起轮播
  • ¥15 数字图像的降噪滤波增强