C语言
编写程序,输入3对实数,若每对实数分别作为平面坐标系中点的坐标,判断这3个点是否能构成三角形,若能构成三角形的话,进一步判断能构成下面哪种三角形:等边三角形,等腰直角三角形,等腰三角形,直角三角形还是普通三角形。
这怎么写啊
【以下回答由 GPT 生成】
#include <stdio.h>
#include <math.h>
int isTriangle(float x1, float y1, float x2, float y2, float x3, float y3) {
float side1, side2, side3;
side1 = sqrt(pow(x2 - x1, 2) + pow(y2 - y1, 2));
side2 = sqrt(pow(x3 - x2, 2) + pow(y3 - y2, 2));
side3 = sqrt(pow(x1 - x3, 2) + pow(y1 - y3, 2));
if (side1 + side2 > side3 && side2 + side3 > side1 && side3 + side1 > side2) {
return 1;
} else {
return 0;
}
}
void classifyTriangle(float x1, float y1, float x2, float y2, float x3, float y3) {
float side1, side2, side3;
side1 = sqrt(pow(x2 - x1, 2) + pow(y2 - y1, 2));
side2 = sqrt(pow(x3 - x2, 2) + pow(y3 - y2, 2));
side3 = sqrt(pow(x1 - x3, 2) + pow(y1 - y3, 2));
if (side1 == side2 && side2 == side3) {
printf("等边三角形\n");
} else if (side1 == side2 || side2 == side3 || side3 == side1) {
if (pow(side1, 2) == pow(side2, 2) + pow(side3, 2) ||
pow(side2, 2) == pow(side1, 2) + pow(side3, 2) ||
pow(side3, 2) == pow(side1, 2) + pow(side2, 2)) {
printf("等腰直角三角形\n");
} else {
printf("等腰三角形\n");
}
} else if (pow(side1, 2) == pow(side2, 2) + pow(side3, 2) ||
pow(side2, 2) == pow(side1, 2) + pow(side3, 2) ||
pow(side3, 2) == pow(side1, 2) + pow(side2, 2)) {
printf("直角三角形\n");
} else {
printf("普通三角形\n");
}
}
int main() {
float x1, y1, x2, y2, x3, y3;
printf("请输入第一个点的坐标(x1, y1): ");
scanf("%f %f", &x1, &y1);
printf("请输入第二个点的坐标(x2, y2): ");
scanf("%f %f", &x2, &y2);
printf("请输入第三个点的坐标(x3, y3): ");
scanf("%f %f", &x3, &y3);
if (isTriangle(x1, y1, x2, y2, x3, y3)) {
classifyTriangle(x1, y1, x2, y2, x3, y3);
} else {
printf("这三个点不能构成一个三角形\n");
}
return 0;
}
【解释】上述程序包括两个函数:isTriangle
用来判断给定的三个点是否能构成一个三角形,classifyTriangle
用来进一步判断三角形的类型。在isTriangle
函数中,通过计算三角形的三条边长并通过三角形边长关系来判断是否能构成一个三角形。在classifyTriangle
函数中,根据三角形的边长关系来判断三角形的类型,包括等边三角形、等腰直角三角形、等腰三角形、直角三角形和普通三角形。在main
函数中,首先接收用户输入的三个点的坐标,然后判断是否能构成一个三角形,并进一步判断三角形的类型。最后,根据判断结果输出相应的结果。
【相关推荐】