如何通过C语言实现绘制三角形的详细剖析与代码实现?

2026-04-01 23:021阅读0评论SEO资源
  • 内容介绍
  • 相关推荐

本文共计916个文字,预计阅读时间需要4分钟。

如何通过C语言实现绘制三角形的详细剖析与代码实现?

哈哈,就是喜欢这些有思想的C语言文章。那篇《C语言画感恩节三角形的文章》写得有点间接。后来查了些资料,发现这些就是我喜欢的那种有思想的C语言。

哈哈就是喜欢这些有意思的C语言上篇文章是这样写的c语言画谢宾斯基三角形那篇文章写的有点不直接然后再查了下资料看到了下面这些就是喜欢这些有意思的C语言

上篇文章是这样写的

c语言画谢宾斯基三角形

那篇文章写的有点不直接然后再查了下资料看到了下面这些我觉得解释更加好这里主要是运用了光栅法至于光栅法可以百度看看后面我会再写文章理理。

我知道这样的原创文章没有多少人会喜欢但是我觉得很有意思如果你也有意思帮忙支持下。

如果我们想画一个正方形要怎么画呢?

看代码

#include "stdio.h"#define h 20#define w 40int main(){int x,y;for(y0;yputchar(\n))  for(x0;x   putchar(*);  getchar(); return 0;}

程序输出

img

如果我要画一个三角形呢

我们首先要知道的是三角形在坐标轴中的公式

先搞定一个直角三角形

我们使用c 语言字符的画x ,y 轴和上面情况不同实际如下图

直角三角形在坐标轴中的公式

所以我们代码这样写

#include "stdio.h"#define h 20#define w 40int f(int x,int y){return x < y;}int main(){int x,y;for(y0;yputchar(\n))  for(x0;x   putchar("* "[f(x,y)?0:1]);  getchar(); return 0;}

但是如果要画一个普通的三角形呢

如何通过C语言实现绘制三角形的详细剖析与代码实现?

很简单还是看看数学的公式

要画出题目中的大三角形我们可以使用绝对值

xc 表示x 轴坐标

#include "stdio.h"#define h 20#define w 40int f(int x,int y){return abs(x - 20) < y;}int main(){int x,y;for(y0;yputchar(\n))  for(x0;x   putchar("* "[f(x,y)?0:1]);  getchar(); return 0;}

程序输出

如果我们想在坐标轴上画很多个三角形呢

把上面的代码修改一下

#include "stdio.h"#define h 20#define w 20/*画直角三角形的函数*/int s(int x, int y) {return abs(x) < y;}/*直角三角形的坐标系 - 2是为了偏移x坐标*/ int f(int x,int y){return s(x%6 -2,y%3);}int main(){int x,y;for(y0;yputchar(\n))  for(x0;x   {putchar("* "[f(x,y)?0:1]);putchar( );}  getchar(); return 0;}

程序输出

但是这个三角形和之前说的谢宾斯基不一样

所以我们代码需要还修改下

#include "stdio.h"#define h 20#define w 40/*画直角三角形的函数*/int s(int x, int y) {return abs(x) < y;}/*y / 3 是三角形的行数y / 3 * 3 是对每行三角形偏移半个三角形(包括一个空白后三角形总宽是6)然后再偏移半个三角形 Mip大神写的*/ int f(int x,int y){return s((x  y / 3 * 3  3) % 6 - 2, y % 3);}int main(){int x,y;for(y0;yputchar(\n))  for(x0;x   {putchar("* "[f(x,y)?0:1]);putchar( );}  getchar(); return 0;}

代码输出

现在就还差最后一步就是怎么把一些多余的三角形给干掉

使用  y;}/*y / 3 是三角形的行数y / 3 * 3 是对每行三角形偏移半个三角形(包括一个空白后三角形总宽是6)然后再偏移半个三角形 Mip大神写的*/ int f(int x,int y){return s(x-17,y) y / 3 * 3  3) % 6 - 2, y % 3);}int main(){ int x,y;for(y0;y\n)){  for(x0;x   {putchar("* "[f(x,y)?0:1]);putchar( );} } getchar(); return 0;}

代码输出

推荐阅读专辑|Linux文章汇总专辑|程序人生专辑|C语言我的知识小密圈

本文共计916个文字,预计阅读时间需要4分钟。

如何通过C语言实现绘制三角形的详细剖析与代码实现?

哈哈,就是喜欢这些有思想的C语言文章。那篇《C语言画感恩节三角形的文章》写得有点间接。后来查了些资料,发现这些就是我喜欢的那种有思想的C语言。

哈哈就是喜欢这些有意思的C语言上篇文章是这样写的c语言画谢宾斯基三角形那篇文章写的有点不直接然后再查了下资料看到了下面这些就是喜欢这些有意思的C语言

上篇文章是这样写的

c语言画谢宾斯基三角形

那篇文章写的有点不直接然后再查了下资料看到了下面这些我觉得解释更加好这里主要是运用了光栅法至于光栅法可以百度看看后面我会再写文章理理。

我知道这样的原创文章没有多少人会喜欢但是我觉得很有意思如果你也有意思帮忙支持下。

如果我们想画一个正方形要怎么画呢?

看代码

#include "stdio.h"#define h 20#define w 40int main(){int x,y;for(y0;yputchar(\n))  for(x0;x   putchar(*);  getchar(); return 0;}

程序输出

img

如果我要画一个三角形呢

我们首先要知道的是三角形在坐标轴中的公式

先搞定一个直角三角形

我们使用c 语言字符的画x ,y 轴和上面情况不同实际如下图

直角三角形在坐标轴中的公式

所以我们代码这样写

#include "stdio.h"#define h 20#define w 40int f(int x,int y){return x < y;}int main(){int x,y;for(y0;yputchar(\n))  for(x0;x   putchar("* "[f(x,y)?0:1]);  getchar(); return 0;}

但是如果要画一个普通的三角形呢

如何通过C语言实现绘制三角形的详细剖析与代码实现?

很简单还是看看数学的公式

要画出题目中的大三角形我们可以使用绝对值

xc 表示x 轴坐标

#include "stdio.h"#define h 20#define w 40int f(int x,int y){return abs(x - 20) < y;}int main(){int x,y;for(y0;yputchar(\n))  for(x0;x   putchar("* "[f(x,y)?0:1]);  getchar(); return 0;}

程序输出

如果我们想在坐标轴上画很多个三角形呢

把上面的代码修改一下

#include "stdio.h"#define h 20#define w 20/*画直角三角形的函数*/int s(int x, int y) {return abs(x) < y;}/*直角三角形的坐标系 - 2是为了偏移x坐标*/ int f(int x,int y){return s(x%6 -2,y%3);}int main(){int x,y;for(y0;yputchar(\n))  for(x0;x   {putchar("* "[f(x,y)?0:1]);putchar( );}  getchar(); return 0;}

程序输出

但是这个三角形和之前说的谢宾斯基不一样

所以我们代码需要还修改下

#include "stdio.h"#define h 20#define w 40/*画直角三角形的函数*/int s(int x, int y) {return abs(x) < y;}/*y / 3 是三角形的行数y / 3 * 3 是对每行三角形偏移半个三角形(包括一个空白后三角形总宽是6)然后再偏移半个三角形 Mip大神写的*/ int f(int x,int y){return s((x  y / 3 * 3  3) % 6 - 2, y % 3);}int main(){int x,y;for(y0;yputchar(\n))  for(x0;x   {putchar("* "[f(x,y)?0:1]);putchar( );}  getchar(); return 0;}

代码输出

现在就还差最后一步就是怎么把一些多余的三角形给干掉

使用  y;}/*y / 3 是三角形的行数y / 3 * 3 是对每行三角形偏移半个三角形(包括一个空白后三角形总宽是6)然后再偏移半个三角形 Mip大神写的*/ int f(int x,int y){return s(x-17,y) y / 3 * 3  3) % 6 - 2, y % 3);}int main(){ int x,y;for(y0;y\n)){  for(x0;x   {putchar("* "[f(x,y)?0:1]);putchar( );} } getchar(); return 0;}

代码输出

推荐阅读专辑|Linux文章汇总专辑|程序人生专辑|C语言我的知识小密圈