#C语言程序
PTA中提交该答案时总是报错,但在VC++6.0上程序运行完全没有问题,求各位帮忙看看,要怎样修改,PTA才可以通过,感谢!
大致改了一下,题主可以试一下,代码如下:
#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;
}