您的位置:首页 > 其它

打印一个菱形

2015-10-27 00:32 507 查看

测试程序

/// @file 2015_1026\exam_1_1\main.c
/// @brief 画菱形
/**
exam_1_1:
编程输出如下菱形:
			*
		*      	       *
	*           	             *
*      					    *
	*				*
		*		*
			*
*/

#include <stdlib.h>
#include <stdio.h>

void print_sapce(int iCntSpace);

int main(int argc, char** argv)
{
	const int iRow = 19; ///< N行的菱形
	const int iColCenterPosX = 40; ///< 菱形的中轴线X位置
	const int iColPosOffsetX = 4; ///< 每个菱形控制点和上一行的菱形控制点在X方向的偏移
	const int iRowInflectionPoint = 9; ///< 菱形拐点(控制点方向变化的那行)

	int iIndex = 0;
	int iPosLeft = iColCenterPosX; ///< 左边的控制点位置
	int iPosRight = iColCenterPosX; ///< 右边的控制点位置
	int iTemp = 0;

	printf("\n"); ///< 空一行再打印
	for (iIndex = 0; iIndex < iRow; iIndex++)
	{
		/// 打印菱形左边的控制点
		print_sapce(iPosLeft - 1);
		printf("*");

		/// 打印菱形右边的控制点
		if (iPosLeft != iPosRight)
		{
			print_sapce(iPosRight - iPosLeft - 1);
			printf("*");
		}

		/// 如果没过菱形拐点, 位置向两边变化
		/// 如果过了菱形拐点, 位置向中间变化
		iTemp = (iIndex >= iRowInflectionPoint) ? iColPosOffsetX : -iColPosOffsetX;
		iPosLeft += iTemp;
		iPosRight -= iTemp;

		/// 准备打印下一行的菱形控制点
		printf("\n");
	}
	
	getchar();
	return 0;
}

void print_sapce(int iCntSpace)
{
	int iIndex = 0;
	
	for (iIndex = 0; iIndex < iCntSpace; iIndex++)
	{
		printf(" ");
	}
}


运行效果

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: