Nullreference Q&A 编程技术问答社区
第一次访问本站?请查看 FAQ!
x
+2 投票
140 浏览

已知三条边的长度,用C语言判断三角形的形状,是锐角三角形、钝角三角形、直角三角形等。

最新提问 5月 19, 2016 分类:C | 用户: Roland | 140 浏览

1个回答

0 投票
已采纳

已知三条边可以用余弦定理判断三角形的形状。

从余弦定理和余弦函数的性质可以看出,如果一个三角形两边的平方和等于第三边的平方,那么第三边所对的角一定是直角,如果小于第三边的平方,那么第三边所对的角是钝角,如果大于第三边的平方,那么第三边所对的角是锐角。即,利用余弦定理,可以判断三角形形状。

http://baike.sogou.com/v665829.htm?fromTitle=余弦定理

C语言判断三角形形状代码:

//gcc 4.9.3

#include  <stdio.h> 

// 返回3个数的最大值
int max(int a, int b, int c)
{
	 int m = a;
	 (m < b) && (m = b);
	 (m < c) && (m = c);
	 return m;
}

void checkTriangles(int a, int b, int c){        
	int m = max(a, b, c);
	// 三条线段构成三角形的条件:两边之和大于第三边
	if (2*m > (a + b + c)){
		printf("不是三角形");
		return;
	}
	
		
	// 利用余弦定理判断三角形的形状
	int val = 2*m*m - (a*a + b*b + c*c);    
	if(val == 0){
		if ((a==b || b==c || c==a) && !(a==b && a==c))
			printf("等腰直角三角形");
		else
			printf("直角三角形");
	}
	else if(val > 0){
		if ((a==b || b==c || c==a) && !(a==b && a==c))
			printf("等腰钝角三角形");
		else
			printf("钝角三角形");
	}
	else if(val < 0){
		if (a==b && b==c)
			printf("等边三角形");
		else if ((a==b || b==c || c==a) && !(a==b && a==c))
			printf("等腰锐角三角形");
		else
			printf("锐角三角形");
	}
}

int main(void)
{   
	checkTriangles(3, 4, 5);
	return 0;
}

运行以上代码,输出:

直角三角形

http://rextester.com/GGKFC6117

最新回答 5月 19, 2016 用户: Anders (3,820 分)
采纳于 5月 21, 2016 用户:Walt