2015
04-13

# Triangle

You are given the side lengths of a triangle, determine is it an acute triangle, right triangle or obtuse triangle.

The first line contains an integer T indicating the number of test cases.
For each test case, there is a single line contains three integer A, B and C indicating the side lengths of the triangle. (You can assume it is a valid triangle)

Technical Specification

1. 1 <= T <= 50
2. 1 <= A,B,C <= 100

The first line contains an integer T indicating the number of test cases.
For each test case, there is a single line contains three integer A, B and C indicating the side lengths of the triangle. (You can assume it is a valid triangle)

Technical Specification

1. 1 <= T <= 50
2. 1 <= A,B,C <= 100

3
2 2 2
4 8 5
3 4 5

Case 1: Acute triangle
Case 2: Obtuse triangle
Case 3: Right triangle

/*

*/

#include<iostream>
using namespace std;

int main()
{
int n, p=1;
scanf("%d", &n);
while(n--)
{
int a, b, c;
scanf("%d%d%d", &a, &b, &c);
int t;
if(a > b)
{
t=a;
a=b;
b=t;
}
if(b > c)
{
t=b;
b=c;
c=t;
}
if(a > b)
{

t=a;
a=b;
b=t;
}
printf("Case %d: ", p++);
if(a*a+b*b == c*c)
printf("Right triangle\n");
else if(a*a+b*b > c*c)
printf("Acute triangle\n");
else
printf("Obtuse triangle\n");
}
return 0;
}

1. 第二个方法挺不错。NewHead代表新的头节点，通过递归找到最后一个节点之后，就把这个节点赋给NewHead，然后一直返回返回，中途这个值是没有变化的，一边返回一边把相应的指针方向颠倒，最后结束时返回新的头节点到主函数。