本题要求编写程序,根据输入的三角形的三条边a、b、c,计算并输出面积和周长。注意:在一个三角形中, 任意两边之和大于第三边。三角形面积计算公式:area=s(s−a)(s−b)(s−c)(这里少了根号),其中s=(a+b+c)/2。
输入格式:
输入为3个正整数,分别代表三角形的3条边a、b、c。
输出格式:
如果输入的边能构成一个三角形,则在一行内,按照
area = 面积; perimeter = 周长
的格式输出,保留两位小数。否则,输出
These sides do not correspond to a valid triangle
输入样例1:
5 5 3
输出样例1:
area = 7.15; perimeter = 13.00
输入样例2:
1 4 1
输出样例2:
These sides do not correspond to a valid triangle
想法:显然难点在于判断三角形的语句怎么描述,数学上说两边之和大于第三边,差小于第三边。 以及调用函数sqrt开平方。
#include<stdio.h>
#include<math.h>
int main()
{
int a,b,c;
scanf("%d %d %d",&a,&b,&c);
double area,s;
if(a+b>c&&a+c>b&&b+c>a)
{
s=(a+b+c)/2.0;
area=sqrt(s*(s-a)*(s-b)*(s-c));//sqrt后面加()
printf("area = %.2f; perimeter = %.2f",area,s*2.0);//周长可利用s*2直接得到
}
else
printf("These sides do not correspond to a valid triangle");
return 0;
}
提炼:判断三角形语句"a+b>c&&a+c>b&&b+c>a"任意两边之和大于第三边即可,突出任意二字,只要三个,不要六个,也不止一个。