C语言 编写程序,输入三对实数,若每对实数分别作为平面直角系点的坐标,判断这3个点能否构成三角形。若能,判断该三角形特征(直角,等腰,等边,普通)
时间: 2024-09-21 10:11:23 浏览: 71
在C语言中,你可以通过比较任意两个点之间的距离和第三个点是否能构成一个有效的三角形来判断三个点是否可以形成一个三角形。首先需要计算两个点之间的距离公式为 `distance = sqrt((x2 - x1)^2 + (y2 - y1)^2)`,然后检查这个距离是否满足三角形的条件:
1. 如果三个点不在一条直线上,那么它们就能构成一个三角形;
2. 对于三角形的特性判断:
- 直角三角形:比较任意两点的斜率之积是否为-1,如果等于-1则为直角三角形;
- 等腰三角形:比较两个边长,如果有两个相等,则为等腰三角形;
- 等边三角形:如果有三个边都相等,那就是等边三角形;
- 普通三角形:其余情况都是普通三角形。
以下是基本的步骤伪代码:
```c
#include <stdio.h>
#include <math.h>
// 计算两点间距离
double distance(double x1, double y1, double x2, double y2) {
return sqrt(pow(x2 - x1, 2) + pow(y2 - y1, 2));
}
int main() {
double x[3], y[3]; // 三个点的坐标
printf("请输入三个点的坐标(格式:x1 y1 x2 y2 x3 y3): ");
for (int i = 0; i < 6; i++) {
scanf("%lf %lf", &x[i / 2], &y[i / 2]);
}
// 判断是否构成三角形
if (x[0] != x[1] && x[1] != x[2] && x[2] != x[0]) {
double d1 = distance(x[0], y[0], x[1], y[1]);
double d2 = distance(x[1], y[1], x[2], y[2]);
double d3 = distance(x[2], y[2], x[0], y[0]);
if (d1 + d2 > d3 && d2 + d3 > d1 && d3 + d1 > d2) { // 判断是否能构成三角形
// 特性判断
double slope1 = (y[1] - y[0]) / (x[1] - x[0]);
double slope2 = (y[2] - y[1]) / (x[2] - x[1]);
if (slope1 * slope2 == -1) {
printf("这是一个直角三角形。\n");
} else if (d1 == d2 || d2 == d3 || d1 == d3) {
printf("这是一个等腰三角形。\n");
} else if (fabs(d1 - d2) < 0.0001 && fabs(d2 - d3) < 0.0001 && fabs(d3 - d1) < 0.0001) {
printf("这是一个等边三角形。\n");
} else {
printf("这是一个普通三角形。\n");
}
} else {
printf("这三个点无法构成三角形。\n");
}
}
return 0;
}
```
阅读全文