
今天这篇文章我主要为独特硬核写法之数学艺术,这是属于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