#include <stdio.h> void Swap(int* a, int* b, int* c) { int tmp = 0; if (a > b) { tmp = *a; *a = *b; *b = tmp; } if (b > c) { tmp = *b; *b = *c; *c = tmp; } if (a > b) { tmp = *a; *a = *b; *b = tmp; } } int Panduan(int a, int b, int c) { if (a + b > c && c - b < a) { if (a == b && a == c) return 1; else { if (a == b || a == c || b == c) return 2; else return 3; } } else return 0; } int main() { int a = 0; int b = 0; int c = 0; while (scanf("%d%d%d", &a, &b, &c) != EOF) { Swap(&a, &b, &c); int d = Panduan(a, b, c); if (d == 0) printf("Not a triangle!"); else if(d == 1) printf("Equilateral triangle!"); else if(d == 2) printf("Isosceles triangle!"); else printf("Ordinary triangle!"); printf("\n"); } return 0; }
主要注意以下几点:第一点:多次输入用while()。第二点:三角形的判断,两个限制条件大家都知道,但是两边之和应该是较短的两边,两边之差是两个较长的两边。所以应该先对三条边的长度进行排序(此处利用函数实现升序)。第三点:等边三角形和等腰三角形的判断,首先应该判断是否为等边,因为等边一定是等腰,等腰不是等边。两个判断的顺序不能交换。