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