//在屏幕上输出一个用*打印出菱形的 图像

   解决方案:1> 分析一下图案:

                                      图像关于中间一行,那么定义中间最长的一行为n行;根据中间一行可以分为:上、中、下三部分;

                                            上半部分:第1行,有n - 1个空格,有1个星号;

                                                               第2行,有n - 2个空格,有2个星号;

                                                                。。。。。。

                                                               第 i 行,有n - i个空格,有i个星号;  

                                            中间部分:有 n 个星号;

                                            下半部分:和上半刚好是反着的,不再多说。     

                     2> 根据内容分析设计思路:

                                      1.打印菱形,打印空格和星号,所以需要两个函数(PrintDiamond, PrintLine) ; 

                                      2.根据划分的部分实现代码。     

//源代码:              

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

//在屏幕上输出一个像菱形的图案

void PrintLine(int blank_count, int star_count)
{
	int i = 0;
	for (i = 1; i <= blank_count; i++)
	{
		printf(" ");
	}
	for (i = 1; i <= star_count; i++)
	{
		printf("*");
	}
	printf("\n");
}

void PrintDiamond(int n)
{
	//菱形是十字对称的,定义最长的一行为n
	int i = 0;
	//根据n来划分整个菱形:上半部分、中间部分、下半部分
	//上班部分
	for (i = 1; i < n; i++)
	{
		PrintLine(n - i, 2 * i - 1);
	}
	//中间部分
	PrintLine(0, 2 * n - 1);
	//下半部分
	for (i = n - 1; i > 0; i--)
	{
		PrintLine(n - i, 2 * i - 1);
	}
}

//菱形图案由' '和'*'组成,重上到下打印这两个符号
int main()
{
	//定义一个菱形函数
	PrintDiamond(7);
	system("pause");
	return 0;
}

运行结果:

                                                                  打印菱形            

 

相关文章: