当前位置: 移动技术网 > IT编程>开发语言>C/C++ > 【C】打印菱形图案实现方法

【C】打印菱形图案实现方法

2018年03月30日  | 移动技术网IT编程  | 我要评论

桦甸新闻,我是你的小小狗冰魅,雪国天骄

方法1:将菱形图案一分为二,依次打印上面的内容和下面的内容。

源代码:

int main(void)
{
	int i = 0;
	int j = 0;
	int line = 0;

	printf("请输入你想要打印菱形的行数:\n");
	scanf("%d", &line);

	//打印上面的图案
	for (i=0; i

这种方法有点繁琐,不推荐使用,对于打印图案的问题,其实有规律可循,见方法2。

方法2:把菱形抽象化,当做正方形去处理,可以发现对角线的距离是一样长的。于是乎我们以中心点(即就是对角线的交点)为坐标原点,建立二维平面直角坐标系,这里定义各个顶点到原点的距离为D,那么四个顶点的坐标分别是:(-D,0)、(D,0)、(0,-D)、(0,D)。连接这四个顶点,就是一个菱形(对角线垂直平分)。因此凡是在菱形内部的*(包括在四条边上的*),都满足坐标的绝对值之和不超过D。

源代码:

#define _CRT_SECURE_NO_WARNINGS 1

/*
* Copyright (c) 2018, code farmer from sust
* All rights reserved.
*
* 文件名称:OutputPattern.c
* 功能:输出菱形图案
*
* 当前版本:V1.0
* 作者:sustzc
* 完成日期:2018年3月27日13:19:19
*/

# include 
# include 
# include 
# include 

/*
*	函数名称:PrintfPattern
*
*	函数功能:打印菱形图案
*
*	入口参数:num
*
*	出口参数:空
*
*	返回类型:void
*/

void PrintfPattern(int num)
{
	int i = 0;
	int j = 0;

	for (i=-num; i<=num; i++)
	{
		for (j=-num; j<=num; j++)
		{
			Sleep(200);

			if (abs(i)+abs(j) <= num)
			{
				printf("*");
			}
			else
			{
				printf(" ");
			}
		}
		
		printf("\n");
	}

	return;
}

int main(void)
{
	int line = 0;
	int distance = 0;

	printf("请输入您想要打印菱形图案的行数:\n");
	scanf("%d", &line);

	distance = (line - 1) / 2;
	PrintfPattern(distance);

	system("pause");

	return 0;
}

输出结果:

\

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网