c语言问题

2025-01-07 11:45:01
推荐回答(2个)
回答1:

#include 
#include 
int main(void) 
{
double a,b,c,p;
scanf("%lf%lf%lf",&a,&b,&c);
if(a+b>c&&a+c>b&&b+c>a)
{
if(a==b&&b==c)
{
printf("等边三角形\n");
}
else if(a==b||b==c||a==c)
{
printf("等腰三角形\n");
}
else
{
printf("不等边三角形\n");
}
p=(a+b+c)/2.0;
printf("%lf\n",sqrt(p*(p-a)*(p-b)*(p-c)));
}
else
{
printf("不构成三角形\n");
}
return 0;
}

回答2:

注意,单精度或双精度类型不能直接用“==”比较

#include 
#include 
#define EP 1e-6

double triangle(double a, double b, double c)
{
    double s = -1.0, p = 0;
    
    if( !(a+b>c && a+c>b && b+c>a) )
        puts("不构成三角形");
    else 
    {
        if(fabs(a-b)            puts("等边三角形");
        else if(fabs(a-b)>EP && fabs(a-c)>EP && fabs(b-c)>EP)
            puts("不等边三角形");
        else
            puts("等腰三角形");    
            
        p = (a+b+c)/2.0;
        s = sqrt( p*(p-a)*(p-b)*(p-c) );    
    }
    return s;
}
    
    
int main()
{
    double a, b, c;
    scanf("%lf %lf %lf", &a, &b, &c);
    printf("\narea = %.2lf\n", triangle(a,b,c));
    return 0;
}