前言:
现时朋友们对“c语言怎么输出数字三角形和圆形”可能比较关切,你们都想要了解一些“c语言怎么输出数字三角形和圆形”的相关内容。那么小编也在网上网罗了一些关于“c语言怎么输出数字三角形和圆形””的相关知识,希望姐妹们能喜欢,朋友们快快来了解一下吧!要用C语言实现计算内切圆的圆心和半径,并使用EasyX库绘制出来,可以按照以下步骤编写代码:
1. 定义一个结构体来表示点。
2. 编写函数计算两点之间的距离的平方(避免浮点数误差)。
3. 编写函数计算三角形的边长。
4. 编写函数使用海伦公式计算三角形的面积。
5. 编写函数计算内切圆的半径。
6. 编写函数计算内切圆的圆心坐标。
7. 使用EasyX库函数绘制三角形和内切圆。
以下是具体的C语言实现代码:
```c
#include
#include
#include
#include
typedef struct {
double x;
double y;
} POINT;
// 计算两点之间的距离的平方
double DistanceSq(POINT p1, POINT p2) {
return (p1.x - p2.x) * (p1.x - p2.x) + (p1.y - p2.y) * (p1.y - p2.y);
}
// 计算三角形边长
double SideLength(POINT p1, POINT p2) {
return sqrt(DistanceSq(p1, p2));
}
// 使用海伦公式计算三角形面积
double TriangleArea(POINT A, POINT B, POINT C) {
double a = SideLength(B, C);
double b = SideLength(C, A);
double c = SideLength(A, B);
double s = (a + b + c) / 2;
return sqrt(s * (s - a) * (s - b) * (s - c));
}
// 计算内切圆半径
double Inradius(POINT A, POINT B, POINT C) {
double area = TriangleArea(A, B, C);
double semiPerimeter = DistanceSq(B, C) + DistanceSq(C, A) + DistanceSq(A, B) - DistanceSq(A, B) / 4 - DistanceSq(C, A) / 4 - DistanceSq(B, C) / 4;
return area / semiPerimeter;
}
// 计算内切圆圆心坐标
POINT Incenter(POINT A, POINT B, POINT C) {
double u = DistanceSq(C, A) * (DistanceSq(B, C) + DistanceSq(C, A) - DistanceSq(A, B));
double v = DistanceSq(A, B) * (DistanceSq(C, A) + DistanceSq(A, B) - DistanceSq(B, C));
double w = DistanceSq(B, C) * (DistanceSq(A, B) + DistanceSq(B, C) - DistanceSq(C, A));
double x = (u * A.x + v * B.x + w * C.x) / (u + v + w);
double y = (u * A.y + v * B.y + w * C.y) / (u + v + w);
return (POINT){x, y};
}
int main() {
int gd = DETECT, gm;
initgraph(&gd, &gm, "C:\\TC\\BGI");
POINT A = {100, 200};
POINT B = {300, 300};
POINT C = {200, 100};
// 画出三角形的顶点
circle(A.x, A.y, 5);
circle(B.x, B.y, 5);
circle(C.x, C.y, 5);
// 计算内切圆的半径和圆心
double inradius = Inradius(A, B, C);
POINT incenter = Incenter(A, B, C);
// 画出内切圆
circle(incenter.x, incenter.y, inradius);
// 等待用户按键
_getch();
closegraph();
return 0;
}
```
标签: #c语言怎么输出数字三角形和圆形