isJason @ 2022-07-15 11:16:43
为什么每次都是80分
#include<bits/stdc++.h>
using namespace std;
double calc(double a, double b, double c, double d){
return sqrt(abs((c-a)*(c-a))+abs((d-b)*(d-b)));
}
int main(){
int x1, y1, x2, y2, x3, y3;
double length=0.0;
cin>>x1>>y1;
cin>>x2>>y2;
cin>>x3>>y3;
length+=calc(x1,y1,x2,y2);
length+=calc(x1,y1,x3,y3);
length+=calc(x2,y2,x3,y3);
cout<<fixed<<setprecision(2)<<length;
return 0;
}
加了abs也不行
by isJason @ 2022-07-15 11:17:14
5#没通过
by coldy_rainy @ 2022-07-15 11:24:19
@isJason
AC代码:
#include<bits/stdc++.h>
using namespace std;
double calc(double a, double b, double c, double d){
return sqrt(abs((c-a)*(c-a))+abs((d-b)*(d-b)));
}
int main(){
double/*更改*/ x1, y1, x2, y2, x3, y3;
double length=0.0;
cin>>x1>>y1;
cin>>x2>>y2;
cin>>x3>>y3;
length+=calc(x1,y1,x2,y2);
length+=calc(x1,y1,x3,y3);
length+=calc(x2,y2,x3,y3);
cout<<fixed<<setprecision(2)<<length;
return 0;
}
by coldy_rainy @ 2022-07-15 11:28:04
@isJason
错误原因:
题目描述:
坐标值是实数
实数,就意味着坐标值有可能是小数,有小数就用double
。
因此将x1,x2,x3,y1,y2,y3
的类型从int
改为double
就可以AC
了。
附:
输入:
23.234/*小数*/ 12.123/*小数*/
-99.99/*小数*/ 99.99/*小数*/
-1 -100
输出:
489.20
by isJason @ 2022-07-15 12:24:29
哦我脑子又短路了
by 2022fsjh @ 2022-08-05 09:10:31
...
by Payton123 @ 2023-01-07 20:00:19
看了这个楼之后感觉我代码好奇怪啊,我之前用我的代码
#include<iostream>
#include<cmath>
#include<iomanip>
double distance(double x1,double y1,double x2,double y2){
return sqrt(pow(abss(x1-x2),2)+pow(abs(y1-y2),2));
}
int main(){
double x1,x2,x3,y1,y2,y3,sum;
std::cin>>x1>>y1;
std::cin>>x2>>y2;
std::cin>>x3>>y3;
sum=distance(x1,y1,x2,y2)+distance(x1,y1,x3,y3)+distance(x3,y3,x2,y2);
std::cout<<std::fixed<<std::setprecision(2)<<sum;
return 0;
}
第五个WA,之后修改的方式是把abs改为fabs,楼主的abs修改过后也能AC,有点懵
by Payton123 @ 2023-01-07 20:15:13
头文件一换和楼主的答案就一样了,是因为我使用cmath调用的是C语言中的abs函数