空心菱形

来源:互联网 发布:淘宝买玉哪家好 编辑:程序博客网 时间:2024/04/28 01:04
 

/*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;
}

原创粉丝点击