//在屏幕上输出一个用*打印出菱形的 图像
解决方案: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;
}
运行结果: