输出三角形面积和周长
本题要求编写程序,根据输入的三角形的三条边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
代码一
# include<stdio.h>
# include<math.h>
int main()
{
int a,b,array[3],t;
double c,s;
for(a=0;a<3;a++)
{
scanf("%d",&array[a]);
}
for(a=0;a<2;a++)
{
for(b=0;b<2-a;b++)
{
if(array[b]<array[b+1])
{
t=array[b];
array[b]=array[b+1];
array[b+1]=t;
}
}
}
if(array[0]<array[1]+array[2])
{
c=(array[0]+array[1]+array[2])/2.0;
s=sqrt(c*(c-array[0])*(c-array[1])*(c-array[2]));
printf("area = %0.2lf; perimeter = %0.2lf",s,2.0*c);
}
else
{
printf("These sides do not correspond to a valid triangle");
}
return 0;
}
代码二
# include<stdio.h>
# include<math.h>
void swap(int &a, int &b)
{
int tmp;
tmp = a;
a=b;
b=tmp;
}
int main()
{
int a,b,c;
double s,p;
scanf("%d %d %d",&a,&b,&c);
if(a>b)swap(a,b);
if(a>c)swap(a,c);
if(b>c)swap(b,c);
if(a+b>c)
{
p=(a+b+c)/(2.0);s=sqrt(p*(p-a)*(p-b)*(p-c));
printf("area = %0.2lf; perimeter = %0.2lf",s,p*2);
}
else
{
printf("These sides do not correspond to a valid triangle");
}
return 0;
}
注意:在函数中只是形参的交换,若想在此处运用,必须加上地址符,才可以有效的使用。刚开始我没有理解这一点,起的肚子疼了一下午。