1. 程式人生 > >C語言6行程式碼畫圓

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

  其實只是一個簡單的雙目運算子應用,意思是,如果該點落於圓中,則用“=”符號填充,否則用空格代替。

  說到底只是數學的簡單應用罷了,理論上來說,只要有相對應的影象方程,這段程式碼也可以進行相應的修改從而輸出對應影象。讀者有興趣不妨試試:-)。