亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

c語言函數判斷三角形類型,為什么輸入任何數據顯示的都是不能構成三角形

c語言函數判斷三角形類型,為什么輸入任何數據顯示的都是不能構成三角形

C
楓中心雨 2018-11-14 22:11:22
#include <stdio.h>#include <math.h>#define eps 1e-1//判斷三邊是否能構成三角形 int triangle(double a, double b, double c){?? ?if((a+b>c) && (a+c>b) && (b+c>a) && (a>0 && b>0 && c>0))?? ?{?? ??? ?return 1;?? ?}?? ?else?? ?{?? ??? ?return 0;?? ?}}//判斷三角形是否為等邊三角形 int equilateral(double a, double b, double c){?? ?if((a==b) && (b==c))?? ?{?? ??? ?return 1;?? ?}?? ?else?? ?{?? ??? ?return 0;?? ?}}//判斷三角形是否為等腰三角形 int isosceles(double a, double b, double c){?? ?if((a==b) || (b==c) || (a==c))?? ?{?? ??? ?return 1;?? ?}?? ?else?? ?{?? ??? ?return 0;?? ?}}//判斷三角形是否為直角三角形 int right(double a, double b, double c){?? ?if(fabs(a * a + b * b - c * c) <= eps || fabs(a * a + c * c - b * b) <= eps || fabs(b * b + c * c - a * a) <= eps)?? ?{?? ??? ?return 1;?? ?}?? ?else?? ?{?? ??? ?return 0;?? ?}}int main(){?? ?double a, b, c;?? ?printf("Input the three edge length a, b, c:");?? ?scanf("%lf,%lf,%lf", &a, &b, &c);?? ?if(triangle(a, b, c))?? ?{?? ??? ?if(equilateral(a, b, c))?? ??? ?{?? ??? ??? ?printf("等邊三角形\n");?? ??? ??? ?return 0;?? ??? ?}?? ??? ?if(isosceles(a, b, c) && right(a, b,c))?? ??? ?{?? ??? ??? ?printf("等腰直角三角形\n");?? ??? ??? ?return 0;?? ??? ??? ?}?? ??? ?if(isosceles(a, b, c))?? ??? ?{?? ??? ??? ?printf("等腰三角形\n");?? ??? ??? ?return 0;?? ??? ?}?? ??? ?if(right(a, b, c))?? ??? ?{?? ??? ??? ?printf("直角三角形\n");?? ??? ??? ?return 0;?? ??? ?}?? ??? ?printf("一般三角形\n");?? ??? ?return 0;?? ?}?? ?else?? ?{?? ??? ?printf("不能構成三角形\n");?? ??? ?return 0;?? ?}}
查看完整描述

1 回答

?
Cfans丶夏

TA貢獻5條經驗 獲得超2個贊

在C/C++語言中,float與double類型的變量存在小數點精度的問題,小數點在二進制中的表示是不同的,double類型數據存儲的數據是不精確的存儲,如0.1可能是0.0999999,這是由于計算機表示浮點數的方法造成的精度缺陷。

所以判斷小數點大小的正確做法是求差值與0比較。例如:

double a,b,c;

if(a+b-c>0 && a+c-b>0 && b+c-a>0)

這樣

查看完整回答
反對 回復 2018-11-16
  • 1 回答
  • 0 關注
  • 1528 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號