五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

這就是編程中的數(shù)學(xué)之美嘛?硬核編程,C語(yǔ)言勾勒空心菱形

2020-07-29 13:43 作者:C語(yǔ)言基礎(chǔ)  | 我要投稿

前言

今天這篇文章我主要為獨(dú)特硬核寫(xiě)法之?dāng)?shù)學(xué)藝術(shù),這是屬于C語(yǔ)言中基礎(chǔ)問(wèn)題,如果你對(duì)C語(yǔ)言基礎(chǔ)知識(shí)還不熟悉話,可以關(guān)注下專(zhuān)欄教程或者自己找本書(shū)籍學(xué)習(xí)一下即可哦。還有就是這篇文章比沒(méi)有什么實(shí)際應(yīng)用價(jià)值,只是單純的讓你重視下數(shù)學(xué)知識(shí)哦!


題目描述

寫(xiě)一個(gè)控制臺(tái)程序,用戶(hù)輸入內(nèi)層和外層菱形的高度,輸出一個(gè)空心菱形,菱形的高度定義為菱形的上三角形的高度,如輸入5和3,輸出如下:


粗鄙的解析

有些人在實(shí)現(xiàn)該程序的時(shí)候,一開(kāi)始就是對(duì)空心菱形進(jìn)行分析,最直觀的分析策略就是將菱形分成了三段,上三角形,下三角形,中間的空心部分,如下圖示意:


按照這種思路,程序示意如下:

#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;
}

粗暴的數(shù)學(xué)解析

在上述解法中我們總是在努力的拼湊各種m和n的表達(dá)式,與其這樣苦苦尋找,為何不直接將這個(gè)空心菱形放入坐標(biāo)軸中呢。在電腦屏幕上,人們習(xí)慣將靠右稱(chēng)之為x軸,靠下稱(chēng)之為y軸,將空心菱形畫(huà)在屏幕上,示意如下:然后通過(guò)解析幾何知識(shí)勾勒空心菱形,程序示意如下:

看完后是否感覺(jué)比第一種的實(shí)現(xiàn)優(yōu)雅了很多呢。

優(yōu)雅的數(shù)學(xué)解析

粗暴的數(shù)學(xué)解析好像還是挺復(fù)雜的,有沒(méi)有更好的辦法呢,估計(jì)很多朋友在看到我上面的解析代碼已經(jīng)想到了,那就是將坐標(biāo)軸移到菱形的中間去,示意如下:

(+x) + (+y) < m
(-x) + (+y) < m
(+x) + (-y) < m
(-x) + (-y) < m

合并后的表達(dá)式為:abs(x)+abs(y)<m,此時(shí)的程序示意如下:


不知大家看到這段代碼是怎樣的感覺(jué),有沒(méi)有被數(shù)學(xué)美給震撼了。如果大家也有相同的感覺(jué),那你可以好好學(xué)習(xí)下數(shù)學(xué)吧,如果你想在編程的這條荊棘路上走的更高高更遠(yuǎn),好好數(shù)學(xué)和物理也是很有必要的哦。

尾言

文章都是手打原創(chuàng),每天最淺顯的介紹C語(yǔ)言、C++,windows知識(shí),喜歡我的文章就關(guān)注一波吧,每天帶你學(xué)習(xí)C/C++不同的知識(shí),也可以看到最新更新和之前發(fā)表的文章哦。如果足下基礎(chǔ)比較差,不妨關(guān)注下人人都可以學(xué)習(xí)的專(zhuān)欄教程。


這就是編程中的數(shù)學(xué)之美嘛?硬核編程,C語(yǔ)言勾勒空心菱形的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
昌乐县| 边坝县| 禹州市| 日喀则市| 枣强县| 寿宁县| 镇赉县| 东台市| 颍上县| 马关县| 迁安市| 万州区| 英吉沙县| 广平县| 宕昌县| 车险| 双鸭山市| 沙河市| 堆龙德庆县| 江川县| 怀远县| 珠海市| 右玉县| 嘉鱼县| 阿克陶县| 呼玛县| 芜湖县| 九龙坡区| 三明市| 绍兴县| 衡阳市| 石林| 衡阳县| 博白县| 乌兰察布市| 茂名市| 天津市| 砀山县| 当涂县| 滨海县| 调兵山市|