题解 | #三角形判断#
三角形判断
https://www.nowcoder.com/practice/689ec1e742394e09b1059556fc167b65
#include <stdio.h>
#define ORD_TRI 1
#define ISO_TRI 2
#define QEU_TRI 3
int checkTri(int a, int b, int c);
int checkTriType(int a, int b, int c);
int main() {
// 思路
// 1. 判断能不能构成三角形:任意两边和大于第三边
// 2. 判断任意两边相等 -> 等腰
// 3. 判断某边与其他两边相等 -> 等边
// 4. 三边均不相等 -> 普通三角形
int a, b, c;
int flag = 0;
while (scanf("%d %d %d", &a, &b, &c) != EOF) {
getchar();
if (checkTri(a, b, c)) {
switch (checkTriType(a, b, c)) {
case ORD_TRI:
printf("Ordinary triangle!\n");
break;
case ISO_TRI:
printf("Isosceles triangle!\n");
break;
case QEU_TRI:
printf("Equilateral triangle!\n");
break;
}
} else {
printf("Not a triangle!\n");
}
}
return 0;
}
int checkTri(int a, int b, int c) {
int flagTri = 0;
if ((a + b > c) && (a + c > b) && (b + c > a)) {
flagTri = 1;
return flagTri;
}
return flagTri;
}
int checkTriType(int a, int b, int c) {
int flagTriType = 1;
// 普通 -> flagTriType = 1
// 等腰 -> flagTriType = 2
// 等边 -> flagTriType = 3
if ((a == b) && ( a == c)) {
flagTriType = 3;
return flagTriType;
} else if ((a == b) || (a == c) || (b == c)) {
flagTriType = 2;
return flagTriType;
}
return flagTriType;
}


