C ++帮助循环打印星星

时间:2016-11-03 14:19:28

标签: c++ algorithm

您好,我是c +的新手,我需要您的帮助。 这是我的模式:

*********
 *******
  *****
   ***
    *       
   ***
  *****
 *******
*********

我尝试为此编写代码,但它没有给出所需的结果。 有人可以帮我吗? 这是我的代码:

#include<bits/stdc++.h>;
using namespace std;
int main()
{
    int n=5,j,k;
    bool o=false,t=false;
    for(int i=((2*n) - 1); i >= -((2*n)-1); i -=2)
    {
        for(j=10-abs(i); j >0;j-=2)
        {
            cout << " ";
        }
        for(k=abs(i);k>0;k--)
        {
            cout << "*";
        }
        cout << endl;
    }
    return 0;
}

我的输出是:

*********
 *******
  *****
   ***
    * 
    *      
   ***
  *****
 *******
*********

注意:有两行,其中一行*,而所需的输出只有一行,其中一行*

2 个答案:

答案 0 :(得分:1)

每当i到达1时,跳过该迭代以便不会打印任何内容。

换句话说,将if (i == 1) continue;语句添加到外部for循环。

您可以在此处找到修改后的代码:RFC 7468

答案 1 :(得分:0)

这是因为你每次用2减去你的星星,然后减去它。我的意思是。举个例子:

***  abs(3) = 3 stars
 *   abs(3-2) = abs(1) = 1 star

然后再次减去2,结果为-1所以..

 *   abs(3-2-2) = abs(3-4) = abs(-1) = 1 star
***  abs(3-2-2-2) = 3 stars