C语言实现画菱形的数学方法VS一般方法


前言

本文介绍了两种用C语言画菱形的方法。当然两种方法有优有劣,究竟喜欢哪一种,全凭诸君自己。当然,我更偏向于方法二。


一、方法一

基于双重for循环的一般方法。
关键在于几个三角形的刻画。
在这里插入图片描述

#include <stdio.h>
int main()
{
    
    
	int n;
	scanf("%d", &n);
	for (int i = 0; i <= n / 2; ++i)
	{
    
    
		for (int j = n / 2 - i; j > 0; --j)
		{
    
    
			printf(" ");
		}
		for (int k = 0; k < 2 * i + 1; ++k)
		{
    
    
			printf("*");
		}
		printf("\n");
	}
	for (int i = 1; i <= n - n / 2 ; ++i)
	{
    
    
		for (int j = 1; j <= i; ++j)
		{
    
    
			printf(" ");
		}
		for (int k = n - 2 * i; k > 0; --k)
		{
    
    
			printf("*");
		}
		printf("\n");
	}

	return 0;
}

在这里插入图片描述

二、方法二

基于简单的数学方法–最简单的线性规划。
在这里插入图片描述
我们只需要选择合适的坐标原点(很重要,可以简化计算),然后计算出对应菱形各个边的表达式。

x + y <= n / 2
-x + y <= n / 2
-x - y <= n / 2
x - y <= n / 2

组合在一起就是

|x| + |y| <= n/2
#include <stdio.h>
#include <math.h>

int main()
{
    
    
	int n = 0;
	scanf("%d", &n);
	for (int i = -n / 2; i <= n / 2;++i)
	{
    
    
		for (int j = n / 2; j >= -n / 2; --j)
		{
    
    
			if (fabs((double)i) + fabs((double)j) <= n / 2)
				printf("*");
			else
				printf(" ");
		}
		printf("\n");
	}
	return 0;
}

在这里插入图片描述

注意

对于方法二,如果你想要画空心菱形的话,只需要将判定条件改为fabs((double)i) + fabs((double)j) == n / 2,是不是很方便啊。但对于方法一的话,就要再次发挥你们的脑瓜子想了。至于具体如何写,这里我就不过多写了。

总结

以上就是全部内容。当然,这两种方法各有千秋。无论你喜欢哪一种方法,都不要吝啬您的赞哦!

猜你喜欢

转载自blog.csdn.net/weixin_51480590/article/details/120144621
今日推荐