下面的程序在代码块和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;
}
是由于标题还是其他原因
答案 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。