以下是我编写的3个方案
- 为什么方案二的输出和方案一不同?
- 为什么方案三的输出是 0.0?
先谢过各位大佬指教
方案一
#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
/*
in: 888.88 888.88 888.88
out: 342126.7
result: AC
*/
int main() {
double a,b,c,p,s;
cin >> a >> b >> c;
p = 0.5*(a+b+c);
s = sqrt(p*(p-a)*(p-b)*(p-c));
cout << fixed << setprecision(1) << s;
return 0;
}
方案2
#include <cstdio>
#include <cmath>
/*
in: 888.88 888.88 888.88
out: 342126.8
result: WA
*/
int main() {
float a,b,c,p,s;
scanf("%f%f%f", &a,&b,&c);
p = 0.5*(a+b+c);
s = sqrt(p*(p-a)*(p-b)*(p-c));
printf("%.1f", s);
return 0;
}
方案3
#include <cstdio>
#include <cmath>
/*
in: 888.88 888.88 888.88
out: 0.0
result: WA
*/
int main() {
double a,b,c,p,s;
scanf("%f%f%f", &a,&b,&c);
p = 0.5*(a+b+c);
s = sqrt(p*(p-a)*(p-b)*(p-c));
printf("%.1lf", s);
return 0;
}