输出三角形面积和周长

输出三角形面积和周长
本题要求编写程序,根据输入的三角形的三条边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;
 } 

注意:在函数中只是形参的交换,若想在此处运用,必须加上地址符,才可以有效的使用。刚开始我没有理解这一点,起的肚子疼了一下午。

发布了82 篇原创文章 · 获赞 4 · 访问量 6346

猜你喜欢

转载自blog.csdn.net/Du798566/article/details/104481315
今日推荐