三角形类型的判断 复杂版代码

          

       可简化后面的判断

  1.  先交换a、b、c的值     

  2. 通过边与边之间的关系判断三角形的类型

         比如        钝角三角形( c*c  >  a*a + b*b )  

                        直角三角形( c*c == a*a + b*b )

                        锐角三角形( c*c  <  a*a + b*b )

    3.单一出口

                便于以后修改

 

完整代码参考:


#include
int main()
{
	int a, b, c;
	int type;
	
	scanf("%d %d %d", &a, &b, &c);
	

	//交换abc值  c为斜边 
	if( c < b ){
		int temp;
		temp = c;
		c = b;
		b = temp;
	}
	if( c < a ){
		int temp;
		temp = a;
		a = c;
		c = temp;
	}
	
	//判断是否构成三角形 
	if( c >= a + b){                            
		type = 0; 					//不是三角形 
		goto swtch; 
	}
	else{
		type = 1;					//构成三角形 
	}
	
	//判断三角形种类
	if( c*c > a*a + b*b ){		
		type = 2;					//钝角三角形 
	}else if( c*c < a*a + b*b ){
		type = 3;					//锐角三角形 
	}else{
		type = 4;					//直角三角形 
	}
	
	
	if( a == b ){
		type += 10;					//等腰三角形 
		if( a == c ){
			type = 5;				//等边三角形 
		}
	}
	
	//输出判断结果 
	if( type > 11 && type < 15 ){
		printf("\n等腰");
	} 
	
	swtch:	switch( type % 10 ) {
				case 0: printf("不能构成三角形"); break;
				case 2: printf("钝角三角形"); break; 
				case 3: printf("锐角三角形"); break; 
				case 4: printf("直角三角形"); break; 
				case 5: printf("等边三角形"); break; 
			}
	printf("\n");
	 
	return 0;
} 

优化:

               其中 goto语句可以用一个if判断(type != 0)来替代


	
	//判断是否构成三角形 
	if( c >= a + b){                            
		type = 0; 					//不是三角形 
	}
	else{
		type = 1;					//构成三角形 
	}
	
   if( type != 0 ){
	//判断三角形种类
	if( c*c > a*a + b*b ){		
		type = 2;					//钝角三角形 
	}else if( c*c < a*a + b*b ){
		type = 3;					//锐角三角形 
	}else{
		type = 4;					//直角三角形 
	}
	
	
	if( a == b ){
		type += 10;					//等腰三角形 
		if( a == c ){
			type = 5;				//等边三角形 
		}
	}
    }	

 

你可能感兴趣的:(三角形类型的判断 复杂版代码)