aa3sai3 2019-10-22 23:07 采纳率: 60%
浏览 1458
已采纳

C语言任意输入三点求三角形面积周长,并判断其合法性

#include<stdio.h>
#include<math.h>
int main(void)
{
    double p,a,b,c,primter,area,s;
    float x1,y1,x2,y2,x3,y3;
    scanf("%f%f%f%f%f%f",&x1,&y1,&x2,&y2,&x3,&y3); 
    a=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
    b=sqrt((x2-x3)*(x2-x3)+(y1-y2)*(y1-y2));
    c=sqrt((x1-x3)*(x1-x3)+(y1-y3)*(y1-y3));
    if((a<b+c)&&(b<a+c)&&(c<a+b)){
        p=(a+b+c)/2;
        s=p*(p-a)*(p-b)*(p-c);
        primter=a+b+c;
        area=sqrt(s);
        printf("primter=%.2f",primter);
        printf("area=%.2f",area);
    }
    else{
        printf("Impossible\n");
    }
    return 0;
 } 
#include<stdio.h>
#include<math.h>
int main()
{ double a,b,c,d,e,f;
scanf("%lf %lf %lf %lf %lf %lf",&a,&b,&c,&d,&e,&f );
double AB,BC,AC,ab,bc,ac;
ab=(a-c)*(a-c)+(b-d)*(b-d);
bc=(c-e)*(c-e)+(d-f)*(d-f);
ac=(a-e)*(a-e)+(b-f)*(b-f);
AB=sqrt(ab);
BC=sqrt(bc);
AC=sqrt(ac);
if((AB<BC+AC)&&(BC<AB+AC)&&(AC<AB+BC))
{
double l=AB+BC+AC;
double P = l / 2;
double s = sqrt(P*(P-AB)*(P-BC)*(P-AC));
printf("primter = %.2f, area = %.2f",l,s); }
else
{printf ("Impossible");
}
return 0;}

上面的代码和下面的代码有什么区别,编译都没错,
为什么上面的输出数据是错误的,
而下面的正确的,希望可以指出错误。

  • 写回答

2条回答 默认 最新

  • threenewbee 2019-10-24 23:00
    关注

    b=sqrt((x2-x3)*(x2-x3)+(y1-y2)*(y1-y2));
    这个不对,应该是
    b=sqrt((x2-x3)*(x2-x3)+(y2-y3)*(y2-y3));

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 Matlab问题解答有两个问题
  • ¥50 Oracle Kubernetes服务器集群主节点无法访问,工作节点可以访问
  • ¥15 LCD12864中文显示
  • ¥15 在使用CH341SER.EXE时不小心把所有驱动文件删除了怎么解决
  • ¥15 gsoap生成onvif框架
  • ¥15 有关sql server business intellige安装,包括SSDT、SSMS。
  • ¥15 stm32的can接口不能收发数据
  • ¥15 目标检测算法移植到arm开发板
  • ¥15 利用JD51设计温度报警系统
  • ¥15 快手联盟怎么快速的跑出建立模型