日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

C语言不调用库函数画一个三角形

發(fā)布時(shí)間:2023/12/20 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言不调用库函数画一个三角形 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

這個(gè)是知乎上面的一個(gè)題目,非常有意思,晚上打球回來就下決心要寫代碼實(shí)現(xiàn)下,再加上自己剖析,讓大家明白一個(gè)三角形在坐標(biāo)系中如何用C語言畫出來的。

https://www.zhihu.com/question/53832071/answer/1625616415

第一步就是要先構(gòu)建一個(gè)坐標(biāo)系,構(gòu)建坐標(biāo)系的方法我也是看了Yip的代碼受到的啟發(fā),后面在畫圓等問題上屢試不爽。

—— 構(gòu)建坐標(biāo)系代碼

include?"stdio.h" int?main(){Vec?p,v[]?=?{{-20,-20},{-20,30},{20,20}};for(p.y?=?40;p.y>=?-40;p.y?-=2,putchar('\n'))for(p.x?=?-40;p.x?<=?40;p.x++)putchar('.'); }

C語言字符的高度是寬度的兩倍,故此,我們y的范圍要是x的范圍1/2.

—— 程序輸出

................................................................................. ................................................................................. ................................................................................. ................................................................................. ................................................................................. ................................................................................. ................................................................................. ................................................................................. ................................................................................. ................................................................................. ................................................................................. ................................................................................. ................................................................................. ................................................................................. ................................................................................. ................................................................................. ................................................................................. ................................................................................. ................................................................................. ................................................................................. ................................................................................. ................................................................................. ................................................................................. ................................................................................. ................................................................................. ................................................................................. ................................................................................. ................................................................................. ................................................................................. ................................................................................. ................................................................................. ................................................................................. ................................................................................. ................................................................................. ................................................................................. ................................................................................. ................................................................................. ................................................................................. ................................................................................. ................................................................................. .................................................................................

再把上面的圖放出來

通過各種查資料和計(jì)算,我發(fā)現(xiàn)了這樣的一個(gè)特點(diǎn)。

—— 他們的斜率

如果對(duì)這個(gè)規(guī)則不懂的,可以去自行查找資料

在坐標(biāo)系里面,如何計(jì)算斜率呢?

—— 好了,有了這些之后,我們就開始寫代碼了

#include?"stdio.h"typedef?struct?{double?x,y; }?Vec;int?judge(Vec?p,Vec?v[3]){if(((p.y-v[0].y)*(v[1].x-v[0].x)?-?(p.x-v[0].x)*(v[1].y-v[0].y))?>?0?)?return?0;if(((p.y-v[2].y)*(v[1].x-v[2].x)?-?(p.x-v[2].x)*(v[1].y-v[2].y))?<?0?)return?0;if(((p.y-v[0].y)*(v[2].x-v[0].x)?-?(p.x-v[0].x)*(v[2].y-v[0].y))?<?0?)return?0;return?1; }int?main(){Vec?p,v[]?=?{{-20,-20},{-20,30},{20,20}};for(p.y?=?40;p.y>=?-40;p.y?-=2,putchar('\n'))for(p.x?=?-40;p.x?<=?40;p.x++)putchar(".@"[judge(p,v)]); }

程序輸出

weiqifa@bsp-ubuntu1804:~/c$?gcc?elsfk.c?&&?./a.out ................................................................................. ................................................................................. ................................................................................. ................................................................................. ................................................................................. ....................@............................................................ ....................@@@@@@@@@.................................................... ....................@@@@@@@@@@@@@@@@@............................................ ....................@@@@@@@@@@@@@@@@@@@@@@@@@.................................... ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@............................ ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.................... ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@...................... ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@........................ ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.......................... ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@............................ ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.............................. ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@................................ ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@.................................. ....................@@@@@@@@@@@@@@@@@@@@@@@@@.................................... ....................@@@@@@@@@@@@@@@@@@@@@@@...................................... ....................@@@@@@@@@@@@@@@@@@@@@........................................ ....................@@@@@@@@@@@@@@@@@@@.......................................... ....................@@@@@@@@@@@@@@@@@............................................ ....................@@@@@@@@@@@@@@@.............................................. ....................@@@@@@@@@@@@@................................................ ....................@@@@@@@@@@@.................................................. ....................@@@@@@@@@.................................................... ....................@@@@@@@...................................................... ....................@@@@@........................................................ ....................@@@.......................................................... ....................@............................................................ ................................................................................. ................................................................................. ................................................................................. ................................................................................. ................................................................................. ................................................................................. ................................................................................. ................................................................................. ................................................................................. .................................................................................

做個(gè)簡(jiǎn)單的解釋

typedef?struct?{double?x,y; }?Vec; Vec?p,v[]?=?{{-20,-20},{-20,30},{20,20}};

我們很多時(shí)候說數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu),這里就是在寫代碼的時(shí)候用到數(shù)據(jù)結(jié)構(gòu)的時(shí)候了,結(jié)構(gòu)體數(shù)組是非常常見的數(shù)據(jù)結(jié)構(gòu),通過數(shù)組把同類的數(shù)據(jù)柔和在一起。

我之前看的一個(gè)嵌入式溫控代碼,用RTOS實(shí)現(xiàn)的LED控制,也用這樣的方式控制邏輯。

????if(((p.y-v[0].y)*(v[1].x-v[0].x)?-?(p.x-v[0].x)*(v[1].y-v[0].y))?>?0?)?return?0;if(((p.y-v[2].y)*(v[1].x-v[2].x)?-?(p.x-v[2].x)*(v[1].y-v[2].y))?<?0?)return?0;if(((p.y-v[0].y)*(v[2].x-v[0].x)?-?(p.x-v[0].x)*(v[2].y-v[0].y))?<?0?)return?0;

程序=數(shù)據(jù)結(jié)構(gòu)+算法

上面的代碼體現(xiàn)出來的就是算法了。其實(shí)就是上面我說的斜率換算出來的,因?yàn)槭褂贸赡軙?huì)有精度丟失,所以最后用乘法來判斷。

putchar(".@"[judge(p,v)]);

這個(gè)代碼我之前在文章里面提到過,putchar輸出字符的函數(shù),".@" 是字符串?dāng)?shù)組,".@"[0]和".@"[1] 可以獲取字符串中的字符。

就醬。

如果覺得文章有意思,請(qǐng)幫忙轉(zhuǎn)發(fā)在看,讓更多的人看到有意思的代碼,還可以認(rèn)識(shí)有意思的我。

推薦閱讀:

專輯|Linux文章匯總

專輯|程序人生

專輯|C語言

我的知識(shí)小密圈

總結(jié)

以上是生活随笔為你收集整理的C语言不调用库函数画一个三角形的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。