/*17-05-10 21:13 例n=4
*
* *
* *
* *
* *
* *
*
思路:先打印菱形,分成上下三角形,在三角形内进行判断打印星号和空格 分而治之的方法
*/
#include<iostream>
using namespace std;
int main()
{
int n;
int i,j,k; //i 控制行,j控制打印的空格,k控制打印的星号
cout<<"请输入空心菱形的高度:";
cin>>n;
/*控制打印菱形上部分 空心三角形(例n=4) 考虑和下半部分衔接,如下图,
*
* *
* *
* *
*/
for (i=1; i<=n; i++) //控制行
{
for (j=1; j<=n-i; j++) //控制打印空格,上部分空格是没行递减1
{
cout<<" "; //打印输出星号左边的空格
}
for (k=1; k<=2*i-1; k++) //控制打印的星号,(例n=4),每行星号为1,3,5,7,
{
if ( k==2*i-1 || k==1) //每行第一个和最后一个打印星号
{
cout<<"*";
}
else
{
cout<<" ";
}
}
cout<<endl; //打完一行做换行处理
}
/*控制打印菱形下部分(空心三角形)(例n=4)如下图,考虑和上三角形衔接,他要少打一行
* *
* *
*
*/
for (i=1; i<n; i++) //控制行,没有等号,少计算一行
{
for (j=1; j<=i; j++) //打印星号前的空格,倒三角形是递增1(例n=4),每行空格分别为1,2,3
{
cout<<" ";
}
for (k=1; k<=2*n-(2*i+1); k++) //打印星号 (例n=4)每行实心个数分别是5,3,1
{ //与n,i联合关系为 2*n-(2*i+1)
if (k==1 || k==2*n-(2*i+1)) //每行第一个和最后一个打印星号
{
cout<<"*";
}
else
{
cout<<" ";
}
}
cout<<endl; //打完一行做换行处理
}
system("pause");
return 0;
}
空心菱形
最新推荐文章于 2022-08-09 17:07:54 发布