问答详情
源自:5-14 综合练习

为什么结果是24?不是69.4?哪里错了

#include <stdio.h>

#define p 2.3

#define S 13

int main()

{

    int n=12;

    float w;

    printf("请输入公里数",n);

scanf("n=%d",&n); 

    if(n>3)

    {

 w=(n-3)*p+S+1;

}

     else

   {

  w=S+1;

}

     printf("w=%f\n",2*w);

return 0;

}


提问者:冰阳星 2016-03-25 13:14

个回答

  • 斜雨潇潇请落下
    2016-03-31 14:21:04
    已采纳

    如果你不算时间,又想从键盘输入的话,改成这样也行

     #include <stdio.h>

    #define p 2.3

    #define S 13

    int main()

    {

        int n;

        float w;

        printf("请输入公里数:\n");

        scanf("%d",&n);
        if(n>3)

        {

     w=(n-3)*p+S+1;

    }

         else

       {

      w=S+1;

    }

         printf("w=%.2f\n",2*w);

    return 0;

    }


  • 魔理莎
    2016-03-31 17:47:57

    #include <stdio.h>
    
    int main()
    {
        float jijia=2.3;
        int qbj=13;
        double fyjs,gls,lhfy;
        printf("输入公里数:");
        scanf("%lf",&gls);
        if (gls<=3&&gls>0)
            printf("单次费用为%d",qbj);
        else{
            fyjs=(gls-3)*jijia+qbj+1;
            printf("单次费用为%.1f\n",fyjs);
            lhfy=((gls-3)*jijia+qbj+1)*2;
            printf("单次费用为%.1f\n",lhfy);
            }
        return 0;
    }

    蛋疼法。

  • 斜雨潇潇请落下
    2016-03-31 14:17:42

    不对,你这代码有问题,printf里面都没有%d,逗号后面来个n没用啊,n都已经赋值了12,为什么后面又加了个scanf?

  • 斜雨潇潇请落下
    2016-03-31 14:07:48

    你的代码运行之后,输入12,的确等于69.4,当然了,你选择的是输出%f,最好改成%.2f,这样不会出现最后值不精确的情况。另外就是时间的因素你没有写进去,虽然题里面的确不用考虑时间,9点和18点都不在价钱范围内,但理应写出来,更何况你还想从键盘输入值

  • 潜水的Narcol_0
    2016-03-25 14:41:21

    你在哪编译的啊,还有你的printf和scanf都好奇怪啊,你scanf是想用键盘从外面输入值嘛?