肖-肖 发表于 2021-4-16 19:17:18

为何求三角形的周长面积不对

我项输入:0 3 3 0 0 4为三个点的坐标
构成一个直角三角形,从而好判断三角形的周长和面积。
下边是我的代码,不知道为什么不对。
/**给定平面上任意三个点的坐标(x1,y1),(x2,y2),(x3,y3),编写程序检验他们能否构成三角形。
若这3个点不能构成三角形,则输出"Impossible";若可以,则输出该三角形的周长和面积
*/
#include <stdio.h>
int main()
{
    //6.30 输入:0 3 3 0 0 4
    float x1,x2,x3,y1,y2,y3;//三个点的横纵坐标
    float a,b,c,s,l,area;
    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((x1-x3)*(x1-x3)+(y1-y3)*(y1-y3));
    c=sqrt((x3-x2)*(x3-x2)+(y3-y2)*(y3-y2));
   
    if(a+b>c&&a+c>b&&b+c>a)
    {
      s=(a+b+c)/2;
      area=sqrt(s*(s-a)*(s-b)*(s-c));
      l=a+b+c;
      printf("L = %.2f\nA = %.2f\n",l,area);
    }else{
      printf("Impossible!\n");
    }
    return 0;
}

请帮我分析一波,详细详细详细点,谢谢啦

wp231957 发表于 2021-4-16 21:27:55

本帖最后由 wp231957 于 2021-4-16 21:29 编辑

看错了

wp231957 发表于 2021-4-16 21:30:42

先在第14行处输出abc看一下是否正确

肖-肖 发表于 2021-4-17 14:13:19

wp231957 发表于 2021-4-16 21:30
先在第14行处输出abc看一下是否正确

我在14行输入了:printf("ab=%d\nac=%d\nbc=%d\n",a,b,c);
运行结果是:
0 3 3 0 0 4
ab=-1073741824
ac=1074854006
bc=0
L = 10.24
A = 1.50
为什么会这样?

wp231957 发表于 2021-4-17 14:17:00

肖-肖 发表于 2021-4-17 14:13
我在14行输入了:printf("ab=%d\nac=%d\nbc=%d\n",a,b,c);
运行结果是:



你也不是新手,咋还用%d输出浮点数??

wp231957 发表于 2021-4-17 14:18:29

本帖最后由 wp231957 于 2021-4-17 14:19 编辑

肖-肖 发表于 2021-4-17 14:13
我在14行输入了:printf("ab=%d\nac=%d\nbc=%d\n",a,b,c);
运行结果是:



面积1.5貌似没有错,033004
不正好构成底边为1高度为3的一个小钝角三角形

wp231957 发表于 2021-4-17 14:24:04

肖-肖 发表于 2021-4-17 14:13
我在14行输入了:printf("ab=%d\nac=%d\nbc=%d\n",a,b,c);
运行结果是:



周长也对1+5+根号18

肖-肖 发表于 2021-4-17 14:28:10

wp231957 发表于 2021-4-17 14:18
面积1.5貌似没有错,033004
不正好构成底边为1高度为3的一个小钝角三角形

我改成了:printf("ab=%f\nac=%f\nbc=%f\n",a,b,c);
上年的春天那学期学了半年,不怎么用,粗心我这人
然后输出了:
0 3 3 0 0 4
ab=4.242640
ac=1.000000
bc=5.000000
L = 10.24
A = 1.50
我想的3个点的坐标是:(0,0) (3,0) (3,4)
所以是个:底边为3,高为4的直角三角形
我是这么想的

wp231957 发表于 2021-4-17 14:39:21

肖-肖 发表于 2021-4-17 14:28
我改成了:printf("ab=%f\nac=%f\nbc=%f\n",a,b,c);
上年的春天那学期学了半年,不怎么用,粗心我这人
然 ...

代码没问题,是你输入的坐标和你想的不一致

肖-肖 发表于 2021-4-17 14:51:28

wp231957 发表于 2021-4-17 14:39
代码没问题,是你输入的坐标和你想的不一致

嗯 应该是
你那种想法我也想了
就是还是不太清楚具体的过程,以及为什么是那样的

wp231957 发表于 2021-4-17 14:58:20

本帖最后由 wp231957 于 2021-4-17 14:59 编辑

肖-肖 发表于 2021-4-17 14:51
嗯 应该是
你那种想法我也想了
就是还是不太清楚具体的过程,以及为什么是那样的

0 3 3 0 0 4
我想的3个点的坐标是:(0,0) (3,0) (3,4)
这都不一样,还有啥想不明白的,坐标轴画一下不就可以了
页: [1]
查看完整版本: 为何求三角形的周长面积不对