印刷半金字塔

时间:2017-03-16 15:20:41

标签: c++ nested-loops

如果输入为6

,我希望金字塔看起来像这样
     0
    12
   345
  6789
 01234
567890

这是我的代码

void HalfPyramid(int num)
{
    for (int a=0; a<num; a++)
    {
        for (int b=0; b<num-a; b++)
        {
        cout << " ";
        }
        for (int c=0; c<a; c++)
        {
            cout << a;
        }
        cout << endl;
    }
}

我正在

     1
    22
   333
  4444
 55555

不确定如何将数字显示为增加,我尝试输出aa+1

3 个答案:

答案 0 :(得分:2)

void HalfPyramid(int num)
{
    int cur = 0;
        for (int a=0; a<num; a++)
        {
        for (int b = 1; b < num - a ; b++)
        {
            cout << " ";
        }
        for (int c=0; c < a + 1; c++)
        {
            cout << cur;
            cur = (cur+1)%10;
        }
        cout << endl;
    }
}

答案 1 :(得分:2)

你需要另一个变量。该变量需要从0开始并在每次打印时递增。然后,因为你需要在打印9时回到0,我们将使用模数运算符将输出约束到[0,9]的范围。随着你得到的一切

void HalfPyramid(int num)
{
    int output = 0;
    for (int a=1; a<num+1; a++)
    {
        for (int b=0; b<num-a; b++)
        {
            cout << " ";
        }
        for (int c=0; c<a; c++)
        {
            cout << output++ % 10;
        }
        cout << endl;
    }
}

答案 2 :(得分:0)

其他答案已提供HalfPyramid的工作版本。希望这个答案能让您对逻辑和功能有所不同。我喜欢创建小函数来捕捉我想要做的事情,而不是使用语言来做它。

bool isSpace(int num, int a, int b) 
{
   return ((a + b) < (num - 1));
}

int getNextDigit(int in)
{
   return (in+1)%10;
}

void HalfPyramid(int num)
{
   int digit = 0;
   for (int a = 0; a < num; ++a)
   {
      for (int b = 0; b < num; ++b)
      {
         if ( isSpace(num, a, b) )
         {
            cout << " ";
         }
         else
         {
            cout << digit;
            digit = getNextDigit(digit);
         }
      }
      cout << endl;
   }
}