C语言6行代码画圆

  这一方法是受到milo大神用C语言画心的启发而想到的。

  代码如下:

#include<stdio.h>
int main(){
    for(double l=1;l>-1;l-=0.05,printf("\n"))
        for(double w=1;w>-1;w-=0.025)
            printf((l*l + w*w<=1)?"=":" ");
} 

  效果:

  事实上,代码的逻辑和背景知识是很简单的,就是从左到右,从上到下,用等号填充一个圆而已。

  我们知道,圆方程的标准形式为:

  

  当a b r的值确定后,圆也就完全确定了,为了简化方程,我们令a b 为0,r为1,则该圆全部落-1<x<1,-1<y<1的范围中,这也是l和w范围的来源。

  接下来,很自然的就要思考字符数量了,一般而言,半角文字的长宽比为1:2(很汗颜,这也是从milo大神的文章中知道的),所以宽度增量设置为长度的一半就行了,如果为1:1的话,会得到一个椭圆。为什么增量设置为0.05和0.025呢?首先,增量的设置的越小,得到的圆就越圆,但是过大的话一屏无法显示完全,0.05和0.025是一个较优值,读者也可以尝试其他值。

  整段代码中最难理解的一句应该是

printf((l*l + w*w<1)?"=":" ");

  其实只是一个简单的双目运算符应用,意思是,如果该点落于圆中,则用“=”符号填充,否则用空格代替。

  说到底只是数学的简单应用罢了,理论上来说,只要有相对应的图像方程,这段代码也可以进行相应的修改从而输出对应图像。读者有兴趣不妨试试:-)。

猜你喜欢

转载自www.cnblogs.com/haolanHwang/p/10084319.html
今日推荐