帮我看一下这个C语言的简单问题!

来源:百度知道 编辑:UC知道 时间:2024/05/14 05:11:03
一道填空,看我答的错哪里了?怎么改?空是从if语句开始的,所以s变量要保留
程序填空,不要改变与输入输出有关的语句。
输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
输入三角形的三条边a, b, c,如果能构成一个三角形,输出面积area和周长perimeter(保留2位小数);否则,输出“These sides do not correspond to a valid triangle”。
在一个三角形中,任意两边之和大于第三边。
三角形的面积计算公式:
aere*area = s(s-a)(s-b)(s-c)
其中:s = (a+b+c)/2

我的答案
#include <stdio.h>
#include <math.h>
int main( )
{
int ri, repeat;
float a, b, c, area, perimeter,s;

scanf("%d", &repeat);
for(ri=1; ri<=repeat; ri++){
scanf("%f%f%f", &a, &b, &c);
if (a+b>c && b+c>a && a+c>b)
{ s=(a+b+c)/2;
area*area = s*(s-a)*(s-b)*(s-c);
perimeter=a+b+c;
printf("area=%.2f ; perimeter=%.2f",area,perimeter);
}
else printf("These sides do not correspond to a valid triangle");

}
}


#include <stdio.h>
#include <math.h>
int main( )
{
int ri, repeat;
float a, b, c, area, perimeter,s;

scanf("%d", &repeat);
for(ri=1; ri<=repeat; ri++){
scanf("%f%f%f", &a, &b, &c);
if (a+b>c && b+c>a && a+c>b)
{ s=(a+b+c)/2;
area = s*(s-a)*(s-b)*(s-c);
area = sqrt(area);
perimeter=a+b+c;
printf("area=%.2f ; perimeter=%.2f",area,perimeter);
}
else printf("These sides do not correspond to a valid triangle");

}
return 0;
}
这么改就可以了。

你的main函数前面返回类型是int类型,那么在主程序里面还要return一个整数,譬如return 0;
还有你的“area*area = s*(s-a)*(s-b)*(s-c); ”赋值号的左边应该是一个左值,你把左边面积平方了,应该改为

#include <stdio.h>
#include <math.h>
int main( )
{
int ri, repeat;
float a, b, c, area, perimeter,s;

scanf("%d", &repeat);
for(ri=1; ri<=repeat; ri++){ <