C语言/C++打印菱形(利用曼哈顿距离)【简单易懂,代码可以直接运行】

C语言/C++打印菱形(利用曼哈顿距离)【简单易懂,代码可以直接运行】

初学C的时候,打印菱形对于我来说就是噩梦,永远找不到控制二层循环最好的点,每次打印都没思路,不过这篇文章的解法非常简单易懂
首先我先价绍什么是曼哈顿距离:
在这里插入图片描述

可以看到找距离为n/2的点,是不是一下子让问题变得简明的超级多,这就突然和烦人的循环没多少关系了
代码如下:

#include<iostream>
#include<cmath>
using namespace std;
int main()
{
	//利用曼哈顿距离 d = |x1 - x2|+|y1 - y2|
	int x,y,center_x,center_y,n;
	cin>>n;
	center_x = n/2;
	center_y = n/2;
	cout<<center_x<<endl;
	for(x = 0;x < n;x++)
	{
		for(y = 0;y < n;y++)
		{
			if((abs(x - center_x) + abs(y - center_y)) <=  n/2)
			{
				cout<<"*";
			}
			else
			{
				cout<<' ';//不是输出星的位置输出‘ ’ 
			}
	    }
	    cout<<endl;
	}

	 return 0;
 } 

在这里插入图片描述

还可以根据这个距离,打印空心的菱形,想一想只需要将距离条件控制到等于n/2,就是只打印一个菱形的边界一个空心菱形不久出来了吗?

#include<iostream>
#include<cmath>
using namespace std;
int main()
{
	//利用曼哈顿距离 d = |x1 - x2|+|y1 - y2|
	int x,y,center_x,center_y,n;
	cin>>n;
	center_x = n/2;
	center_y = n/2;
	cout<<center_x<<endl;
	for(x = 0;x < n;x++)
	{
		for(y = 0;y < n;y++)
		{
			if((abs(x - center_x) + abs(y - center_y)) ==  n/2)
			{
				cout<<"*";
			}
			else
			{
				cout<<' ';//不是输出星的位置输出‘ ’ 
			}
	    }
	    cout<<endl;
	}

	 return 0;
 } 

在这里插入图片描述
点个👍吧,秋梨膏

  • 8
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

henu-于笨笨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值