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条)

报告相同问题?

悬赏问题

  • ¥88 实在没有想法,需要个思路
  • ¥15 MATLAB报错输入参数太多
  • ¥15 python中合并修改日期相同的CSV文件并按照修改日期的名字命名文件
  • ¥15 有赏,i卡绘世画不出
  • ¥15 如何用stata画出文献中常见的安慰剂检验图
  • ¥15 c语言链表结构体数据插入
  • ¥40 使用MATLAB解答线性代数问题
  • ¥15 COCOS的问题COCOS的问题
  • ¥15 FPGA-SRIO初始化失败
  • ¥15 MapReduce实现倒排索引失败