欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-03-29 15:53:32
方法1:将菱形图案一分为二,依次打印上面的内容和下面的内容。 源代码: int main(void) { int i = 0; int j = 0; int...

方法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;
}

输出结果:

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

;>