codeblocks和visual studio中的输出不同

问题描述 投票:0回答:1

下面的程序在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;
}

是由于标题还是其他原因

c++ visual-studio codeblocks
1个回答
1
投票

首先,不要使用

#include <bits/stdc++.h>

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

其次,Visual Studio的输出对我来说是正确的。

更新CodeBlocks的代码,使其与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

© www.soinside.com 2019 - 2024. All rights reserved.