C语言程序中遇到的问题

#C语言程序
PTA中提交该答案时总是报错,但在VC++6.0上程序运行完全没有问题,求各位帮忙看看,要怎样修改,PTA才可以通过,感谢!

img

大致改了一下,题主可以试一下,代码如下:

#include <stdio.h>
#include <math.h>
int main()
{
    int a,b,c;
    double area,perimeter,s;
    scanf("%d%d%d",&a,&b,&c);
    if(a+b>c&&a+c>b&&b+c>a||a==b==c)
    {
        s = (a+b+c)/2;
        area = sqrt(s*(s-a)*(s-b)*(s-c));
        perimeter = a+b+c;
        printf("area = %.2lf; perimeter = %.2lf",area,perimeter);
    }else{
        printf("These sides do not correspond to a valid triangle");
    }
}

看不出什么逻辑错误,输入的三边是整数吗

你要先判断三边能构成三角形,然后再计算
否则你直接代入公式算面积,不对负数开方吗

最后输出里,面积和周长的数据间是分号 ‘;' 间隔,修改如下,供参考:

#include <stdio.h>
#include <math.h>
int main()
{
    int a, b, c, ret;
    double area, s, perimeter;
    ret = scanf("%d%d%d", &a, &b, &c);
    if (ret == 3) {
        if (a + b > c && a + c > b && b + c > a) {
            perimeter = a + b + c;
            s = perimeter / 2.0;
            area = sqrt(s * (s - a) * (s - b) * (s - c));
            printf("area = %.2f; perimeter = %.2f", area, perimeter);
        }
        else
            printf("These sides do not correspond to a valid triangle");
    }
    return 0;
}