本不想上传这个,为了保持CSDN勋章,希望理解。
没有技术含量,就是考一些逻辑,不喜勿喷。
输入三个数(支持浮点数据),判断是否是三角形以及类型,边长范围[1-200]。
注释完善,自行理解。
执行环境 Ubuntu18.04 GCC编译
注意链接math.h文件,完整命令如下:
# gcc filename.c -lm
Code:
#include <stdio.h>
#include <math.h>
void swapValue(float *a, float *b) {
float temp = *a;
*a = *b;
*b = temp;
}
void bubbleSort(float *array, int len) {
for (int i = 0; i < len - 1; ++i)
for (int j = 0; j < len - 1 - i; ++j)
if (array[j] > array[j + 1])
swapValue(&array[j], &array[j + 1]);
}
void judgeTriangle(float *edges) {
for (int i = 0; i < 3; ++i) {
if (edges[i] > 200 || edges[i] < 1) {
printf("Edges value error\n");
return;
}
}
if (edges[0] + edges[1] > edges[2]) {
if (edges[0] == edges[1] || edges[1] == edges[2] || edges[2] == edges[0]) {
if (pow(edges[0], 2) + pow(edges[1], 2) == pow(edges[2], 2)) {
printf("Isosceles right triangle.\n");
}
else if (edges[0] == edges[1] && edges[1] == edges[2] && edges[2] == edges[0]) {
printf("Regular triangle.\n");
}
else {
printf("Isosceles triangle.\n");
}
}
else if (pow(edges[0], 2) + pow(edges[1], 2) == pow(edges[2], 2)) {
printf("Right triangle.\n");
} else {
printf("Triangle.\n");
}
} else {
printf("Not triangle.\n");
}
}
int main(void) {
float edges[3] = {0};
printf("Input three edges:\n");
for (int i = 0; i < 3; ++i)
scanf("%f", &edges[i]);
bubbleSort(edges, sizeof(edges) / sizeof(edges[0]));
judgeTriangle(edges);
return 0;
}
Picture: