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)?"=":" ");

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

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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM