
今天這篇文章我主要爲獨特硬核寫法之數學藝術,這是屬於C語言中基礎問題,若是你對C語言基礎知識還不熟悉話,能夠關注下專欄教程或者本身找本書籍學習一下便可哦。還有就是這篇文章沒有什麼實際應用價值,只是單純的讓你重視下數學知識哦!編程

寫一個控制檯程序,用戶輸入內層和外層菱形的高度,輸出一個空心菱形,菱形的高度定義爲菱形的上三角形的高度,如輸入5和3,輸出以下:windows

#include <stdio.h>int main(){ int star = 0, empty = 0; int num_empty = 0, num_star=0; int m = 5, n = 3; for (int i = 1; i < 2 * m; i++) { if (i <= m - n) { star = 2 * i - 1; empty = m - i; while (empty--) printf(" "); while (star--) printf("*"); } else if (m - n < i && i < m + n && j < 2 * n) { if (j <= n && i <= m) { num_empty = 2 * j - 1; empty = m - i; } else { num_empty = 2 * (2 * n - 1 - (j - 1)) - 1; empty = i - m; } num_star = star = m - n; while (empty--) printf(" "); while (star--) printf("*"); while (num_empty--) printf(" "); while (num_star--) printf("*"); j++; } else { star = 2 * (2 * m - 1 - (i - 1)) - 1; empty = (2 * m - 1 - star) / 2; while (empty--) printf(" "); while (star--) printf("*"); } printf("\n"); } return 0;}

看完後是否感受比第一種的實現優雅了不少呢。微信

(+x) + (+y) < m(-x) + (+y) < m(+x) + (-y) < m(-x) + (-y) < m
合併後的表達式爲:abs(x)+abs(y)<m,此時的程序示意以下:app
不知你們看到這段代碼是怎樣的感受,有沒有被數學美給震撼了。若是你們也有相同的感受,那你能夠好好學習下數學吧,若是你想在編程的這條荊棘路上走的更高高更遠,好好數學和物理也是頗有必要的哦。學習

本文分享自微信公衆號 - C語言編程基礎(goodStudyCode)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。flex