代码块和Visual Studio中的不同输出

时间:2019-04-24 03:59:49

标签: c++ visual-studio codeblocks

下面的程序在代码块和Visual Studio中提供了不同的输出 对于相同的输入

输入:5 4 1 2 1

代码块

输出:0.00000000

#include<bits/stdc++.h>
using namespace std;

int main()
{
    double l,d,v,g,r;
    cin>>l>>d>>v>>g>>r;
    if(g*v>d) printf("%.8lf\n",(double)l/v);
    else
    {
        printf("%.8lf\n",ceil(d/v/(g+r)) * (g+r)+(l-d)/v);
    }
    return 0;
}

视觉工作室

输出:7.00000000

#include<iostream>
#include<stdio.h>
#include<math.h>
using namespace std;

int main()
{
    double l, d, v, g, r;
    cin >> l >> d >> v >> g >> r;
    if (g*v > d) printf("%.8lf\n", (double)l / v);
    else
    {
        printf("%.8lf\n", ceil(d / v / (g + r)) * (g + r) + (l - d) / v);
    }
    return 0;
}

是由于标题还是其他原因

1 个答案:

答案 0 :(得分:1)

首先,不要使用

#include <bits/stdc++.h>

有关详细信息,请参见Why should I not #include <bits/stdc++.h>?

第二,Visual Studio的输出对我来说是正确的。

更新代码块的代码,使其与Visual Studio中使用的代码相同,然后再试一次。也许使用#include <bits/stdc++.h>会有一些不良的副作用。

如果那不能解决您的问题,请添加一些诊断输出以找出可能出问题的地方。例如

int main()
{
   double l, d, v, g, r;
   cin >> l >> d >> v >> g >> r;

   printf("l: %f\n", l);
   printf("d: %f\n", d);
   printf("v: %f\n", v);
   printf("g: %f\n", g);
   printf("r: %f\n", r);
   printf("\n");

   printf("(d / v / (g + r)): %f\n", (d / v / (g + r)));
   printf("ceil(d / v / (g + r)): %f\n", ceil(d / v / (g + r)));
   printf("ceil(d / v / (g + r)) * (g + r): %f\n", ceil(d / v / (g + r)) * (g + r));
   printf("(l - d) / v: %f\n", (l - d) / v);
   printf("ceil(d / v / (g + r)) * (g + r) + (l - d) / v): %f\n", ceil(d / v / (g + r)) * (g + r) + (l - d) / v);

   return 0;
}

有用的链接:How to debug small programs