请问为什么不能先用double算出面积,等到printf再round求四舍五入?
查看原帖
请问为什么不能先用double算出面积,等到printf再round求四舍五入?
952574
hua_nong_first_caibi楼主2023/3/3 16:16

这是没ac的代码,改了return上面两句后就ac了

#include<iostream>
#include<cmath>

using namespace std;

int main(){
    int x1,y1,x2,y2,x3,y3;
    scanf("%d%d%d%d%d%d",&x1,&y1,&x2,&y2,&x3,&y3);
    double b1=sqrt((x1-x2)*(x1-x2)*1.0+(y1-y2)*(y1-y2)*1.0);
    double b2=sqrt((x1-x3)*(x1-x3)*1.0+(y1-y3)*(y1-y3)*1.0);
    double b3=sqrt((x3-x2)*(x3-x2)*1.0+(y3-y2)*(y3-y2)*1.0);
    double s=0.5*(b1+b2+b3);
    double area=sqrt(s*(s-b1)*(s-b2)*(s-b3));//改动的地方
    printf("%d",round(area));//改动的地方
    return 0;
}

下面是ac的代码

#include<iostream>
#include<cmath>

using namespace std;

int main(){
    int x1,y1,x2,y2,x3,y3;
    scanf("%d%d%d%d%d%d",&x1,&y1,&x2,&y2,&x3,&y3);
    double b1=sqrt((x1-x2)*(x1-x2)*1.0+(y1-y2)*(y1-y2)*1.0);//第一条边
    double b2=sqrt((x1-x3)*(x1-x3)*1.0+(y1-y3)*(y1-y3)*1.0);//第二条边
    double b3=sqrt((x3-x2)*(x3-x2)*1.0+(y3-y2)*(y3-y2)*1.0);//第三条边
    double s=0.5*(b1+b2+b3);
    int area=round(sqrt(s*(s-b1)*(s-b2)*(s-b3)));//改动的地方
    printf("%d",area);//改动的地方
    return 0;
}

虽然ac了,但怕不知道错在哪的话,类似的错误以后再犯,求大神指点

2023/3/3 16:16
加载中...