一个关于c语言的小问题

#include <stdio.h>

#define M 0.0000000001

int main()

{

double a,b,c,d,e,f,g,h,f;

while(scanf("%lf%lf%lf",&a,&b,&c)==3){

if(a>0&&b>0&&c>0){

if(a+b>c&&a+c>b&&b+c>a){

if((aa+bb-cc)/2ab<0||(aa+cc-bb)/2ac<0||(cc+bb-aa)/2c*b<0) printf("It's an Obtuse and ");

else if((aa+bb-cc)/2ab==0||(aa+cc-bb)/2ac==0||(cc+bb-aa)/2c*b==0) printf("It's an Right and ");

else printf("It's an Acute and ");

d = a-b;

e = a-c;

f = b-c;

if(d<0) d= -d; if(e<0) e= -e; if(f<0) f= -f;

if(d<=M&&e<=M&&f<=M) printf("Equilateral triangle.\n");

else if(d<=M||e<=M||f<=M) printf("Isosceles triangle.\n");

else printf("General triangle.\n");

}else printf("Can't form a triangle.\n");

}else printf("Can't form a triangle.\n");

}

return 0;

}

这个是我写的程序,就是不知道在判断是直角钝角的时候,怎么实现那个可以接受10的-10次方的误差,求大佬指导,下面是题目

img

img

不一定对,仅供参考:

#include <stdio.h>
#include <math.h>
#define M 0.0000000001
int main()
{
    double a,b,c,d,e,f,g,h,f;
    while (scanf("%lf%lf%lf",&a,&b,&c)==3) {
        if(a>0&&b>0&&c>0) {
            if(a+b>c&&a+c>b&&b+c>a) {
                     if (fabs((aa+bb-cc)/2/a/b)<-M||fabs((aa+cc-bb)/2/a/c)<-M||fabs((cc+bb-aa)/2/c/b)<-M) printf("It's an Obtuse and ");
                else if (fabs((aa+bb-cc)/2/a/b)> M||fabs((aa+cc-bb)/2/a/c)> M||fabs((cc+bb-aa)/2/c/b) >M) printf("It's an Acute  and ");
                else printf("It's an Right and ");
                d = a-b;
                e = a-c;
                f = b-c;
                if(fabs(d)<=M&&fabs(e)<=M&&fabs(f)<=M) printf("Equilateral triangle.\n");
                else if (fabs(d)<=M||fabs(e)<=M||fabs(f)<=M) printf("Isosceles triangle.\n");
                else printf("General triangle.\n");
            } else printf("Can't form a triangle.\n");
        } else printf("Can't form a triangle.\n");
    }
    return 0;
}


不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^