这个C语言,哪里错了啊啊啊???

来源:百度知道 编辑:UC知道 时间:2024/05/14 13:20:38
#include <stdio.h>
#include <math.h>
int main(void)
{
int a,b,c;
int repeat,ri;
double area,perimeter,s;

scanf("%d", &repeat);
for(ri = 1; ri <= repeat; ri++){
scanf("%d%d%d", &a,&b,&c);
if(a+b>c&&a+c>b&&b+c>a){
perimeter=a+b+c;
s=perimeter/2;
area=sqrt(s(s-a)(s-b)(s-c))
printf("area = %.2f, perimeter = %.2f\n",area, perimeter);
}
else{
printf("These sides do not correspond to a valid triangle\n");
}
}
return 0;
}
调试之后说area=sqrt(s(s-a)(s-b)(s-c))还有if(a+b>c&&a+c>b&&b+c>a){
错了,哪里错了啊?

肯定错啊。area=sqrt(s*(s-a)*(s-b)*(s-c))要有*号的。
if((a+b)>c&&(a+c)>b&&(b+c)>a)这样加上括号,因为加号和大于号有优先级的。
我只看你个别代码格式了,其中的数据结构你再想想,这个if循环很长啊·····
还是用个函数方便。易读~~~

加上括号
if((a+b>c)&&(a+c>b)&&(b+c>a)){

s(s-a)(s-b)(s-c))=>s*(s-a)*(s-b)*(s-c)

area=sqrt(s*(s-a)*(s-b)*(s-c));

s*(s-a)*(s-b)*(s-c)