网站的网页声明怎么做,wordpress后台定制,品牌建设新,荆州网站建设514885这个是知乎上面的一个题目#xff0c;非常有意思#xff0c;晚上打球回来就下决心要写代码实现下#xff0c;再加上自己剖析#xff0c;让大家明白一个三角形在坐标系中如何用C语言画出来的。https://www.zhihu.com/question/53832071/answer/1625616415第一步就是要先构建… 这个是知乎上面的一个题目非常有意思晚上打球回来就下决心要写代码实现下再加上自己剖析让大家明白一个三角形在坐标系中如何用C语言画出来的。https://www.zhihu.com/question/53832071/answer/1625616415第一步就是要先构建一个坐标系构建坐标系的方法我也是看了Yip的代码受到的启发后面在画圆等问题上屡试不爽。—— 构建坐标系代码include stdio.h
int main(){Vec p,v[] {{-20,-20},{-20,30},{20,20}};for(p.y 40;p.y -40;p.y -2,putchar(\n))for(p.x -40;p.x 40;p.x)putchar(.);
}
C语言字符的高度是宽度的两倍故此我们y的范围要是x的范围1/2.—— 程序输出.................................................................................
.................................................................................
.................................................................................
.................................................................................
.................................................................................
.................................................................................
.................................................................................
.................................................................................
.................................................................................
.................................................................................
.................................................................................
.................................................................................
.................................................................................
.................................................................................
.................................................................................
.................................................................................
.................................................................................
.................................................................................
.................................................................................
.................................................................................
.................................................................................
.................................................................................
.................................................................................
.................................................................................
.................................................................................
.................................................................................
.................................................................................
.................................................................................
.................................................................................
.................................................................................
.................................................................................
.................................................................................
.................................................................................
.................................................................................
.................................................................................
.................................................................................
.................................................................................
.................................................................................
.................................................................................
.................................................................................
.................................................................................
再把上面的图放出来通过各种查资料和计算我发现了这样的一个特点。—— 他们的斜率如果对这个规则不懂的可以去自行查找资料在坐标系里面如何计算斜率呢—— 好了有了这些之后我们就开始写代码了#include stdio.htypedef struct {double x,y;
} Vec;int judge(Vec p,Vec v[3]){if(((p.y-v[0].y)*(v[1].x-v[0].x) - (p.x-v[0].x)*(v[1].y-v[0].y)) 0 ) return 0;if(((p.y-v[2].y)*(v[1].x-v[2].x) - (p.x-v[2].x)*(v[1].y-v[2].y)) 0 )return 0;if(((p.y-v[0].y)*(v[2].x-v[0].x) - (p.x-v[0].x)*(v[2].y-v[0].y)) 0 )return 0;return 1;
}int main(){Vec p,v[] {{-20,-20},{-20,30},{20,20}};for(p.y 40;p.y -40;p.y -2,putchar(\n))for(p.x -40;p.x 40;p.x)putchar(.[judge(p,v)]);
}
程序输出weiqifabsp-ubuntu1804:~/c$ gcc elsfk.c ./a.out
.................................................................................
.................................................................................
.................................................................................
.................................................................................
.................................................................................
................................................................................
........................................................................
................................................................
........................................................
................................................
........................................
..........................................
............................................
..............................................
................................................
..................................................
....................................................
......................................................
........................................................
..........................................................
............................................................
..............................................................
................................................................
..................................................................
....................................................................
......................................................................
........................................................................
..........................................................................
............................................................................
..............................................................................
................................................................................
.................................................................................
.................................................................................
.................................................................................
.................................................................................
.................................................................................
.................................................................................
.................................................................................
.................................................................................
.................................................................................
.................................................................................
做个简单的解释typedef struct {double x,y;
} Vec;
Vec p,v[] {{-20,-20},{-20,30},{20,20}};我们很多时候说数据结构数据结构这里就是在写代码的时候用到数据结构的时候了结构体数组是非常常见的数据结构通过数组把同类的数据柔和在一起。我之前看的一个嵌入式温控代码用RTOS实现的LED控制也用这样的方式控制逻辑。 if(((p.y-v[0].y)*(v[1].x-v[0].x) - (p.x-v[0].x)*(v[1].y-v[0].y)) 0 ) return 0;if(((p.y-v[2].y)*(v[1].x-v[2].x) - (p.x-v[2].x)*(v[1].y-v[2].y)) 0 )return 0;if(((p.y-v[0].y)*(v[2].x-v[0].x) - (p.x-v[0].x)*(v[2].y-v[0].y)) 0 )return 0;
程序数据结构算法上面的代码体现出来的就是算法了。其实就是上面我说的斜率换算出来的因为使用除法可能会有精度丢失所以最后用乘法来判断。putchar(.[judge(p,v)]);
这个代码我之前在文章里面提到过putchar输出字符的函数. 是字符串数组.[0]和.[1] 可以获取字符串中的字符。就酱。如果觉得文章有意思请帮忙转发在看让更多的人看到有意思的代码还可以认识有意思的我。推荐阅读专辑|Linux文章汇总专辑|程序人生专辑|C语言我的知识小密圈