为何求三角形的周长面积不对
我项输入: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:29 编辑
看错了 先在第14行处输出abc看一下是否正确 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
为什么会这样? 肖-肖 发表于 2021-4-17 14:13
我在14行输入了:printf("ab=%d\nac=%d\nbc=%d\n",a,b,c);
运行结果是:
你也不是新手,咋还用%d输出浮点数?? 本帖最后由 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的一个小钝角三角形 肖-肖 发表于 2021-4-17 14:13
我在14行输入了:printf("ab=%d\nac=%d\nbc=%d\n",a,b,c);
运行结果是:
周长也对1+5+根号18 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的直角三角形
我是这么想的 肖-肖 发表于 2021-4-17 14:28
我改成了:printf("ab=%f\nac=%f\nbc=%f\n",a,b,c);
上年的春天那学期学了半年,不怎么用,粗心我这人
然 ...
代码没问题,是你输入的坐标和你想的不一致 wp231957 发表于 2021-4-17 14:39
代码没问题,是你输入的坐标和你想的不一致
嗯 应该是
你那种想法我也想了
就是还是不太清楚具体的过程,以及为什么是那样的
本帖最后由 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]