C语言判断直角三角形

#include<stdio.h>#include<stdlib.h>main(){printf("\n请输入三角形三条边\n");floatx,y,z;scanf("%... #include <stdio.h>
#include <stdlib.h>
main()
{
printf("\n请输入三角形三条边\n") ;
float x,y,z;
scanf("%f,%f,%f",&x,&y,&z);
if(x*x+y*y==z*z||x*x+z*z==y*y||y*y+z*z==x*x)
printf("\nyes");
else
printf("\nno");
system("pause");
}
我的问题是,如果我输入的是小数,0.6,0.8,1.那么程序告诉我不成立。这是为什么。整数的都是成立的。
展开
 我来答
蓝色和清风
推荐于2017-12-16 · 超过53用户采纳过TA的回答
知道小有建树答主
回答量:115
采纳率:0%
帮助的人:109万
展开全部
浮点数判断相不相等 不能用“==” 是要用两个数相减,当小于一定的值就是相等的。
因为浮点数在计算机中不是精确表示的,,
判断比如: if (abs(x*x+y*y-z*z)<1e-x) (abs函数代表绝对值的意思, 1e-x 代表 10的负x次方,x可以为6,7,8等)
韦力书昊然
2019-01-23 · TA获得超过3743个赞
知道大有可为答主
回答量:3170
采纳率:28%
帮助的人:452万
展开全部
浮点数判断相不相等
不能用“==”
是要用两个数相减,当小于一定的值就是相等的。
因为浮点数在计算机中不是精确表示的,,
判断比如:
if
(abs(x*x+y*y-z*z)<1e-x)
(abs函数代表绝对值的意思,
1e-x
代表
10的负x次方,x可以为6,7,8等)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
屠天沃思彤
2020-04-10 · TA获得超过1072个赞
知道小有建树答主
回答量:1568
采纳率:100%
帮助的人:7.1万
展开全部
首先你判断时应该是
a>=b+c,后面也要加等号,然后就是逻辑问题,就算不是三角形,数值上刚好满足你后3个判断中的一个,也会有yes,所以改改吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
moweibin1021
2013-11-08 · TA获得超过373个赞
知道小有建树答主
回答量:132
采纳率:0%
帮助的人:47.8万
展开全部
程序没问题啊,我复制测试,不论输入的是 0.6 0.8 1.0 还是 0.6 0.8 1 结果都是yes
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
超级鼐鼒
2013-11-07
知道答主
回答量:8
采纳率:0%
帮助的人:5.6万
展开全部
小数在相乘时会有误差,可以改成(x*x+y*y<=z*z+0.0001&&x*x+y*y>=z*z-0,0001)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(7)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式