特定三角形图案的C ++程序

时间:2019-02-16 17:52:12

标签: c++ for-loop

我试图形成“目标”所示的三角形图案,然后得到一个标有“实际输出”的三角形图案。我也只应该使用嵌套的循环和%运算符。我尝试过用%运算符和i或j来代替k或代替k,但是我还无法完全获得所需的模式。看起来我的奇数行很好(行1、3、5),但一切都不行。欢迎任何帮助。

// target: * + * + * +      actual output:   * + * + * +    
             + * + * +                         * + * + *
               * + * +                           * + * +
                 + * +                             * + *
                   * +                               * +
                     +                                 *
//
// code //
int main ()
{
    int i,j,k;
    for (i = 6; i >= 1; i--
    {
      for (j = 1;j <= (6 - i); j++ )
      {
          cout << " ";
      }


       for (k = 1;k<=i;k++)
       {
        if (k % 2 == 0) {



        cout << "+"; 


        }
        else
        {
         cout << "*";
        }
      }
}

2 个答案:

答案 0 :(得分:3)

只需替换

if (k % 2 == 0)

作者

if ((k+i) % 2 == 0)

#include <iostream>
using namespace std;

int main ()
{
  int i,j,k;
  for (i = 6; i >= 1; i--)
  {
    for (j = 1;j <= (6 - i); j++ )
    {
      cout << " ";
    }

    for (k = 1;k<=i;k++)
    {
      if ((k+i) % 2 == 0) {
        cout << "+"; 
      }
      else
      {
        cout << "*";
      }
    }
    cout << endl;
  }
}

编译和执行:

pi@raspberrypi:/tmp $ g++ -pedantic -Wextra t.c
pi@raspberrypi:/tmp $ ./a.out
*+*+*+
 +*+*+
  *+*+
   +*+
    *+
     +

答案 1 :(得分:0)

(根据我的评论)

#include <iostream>

using namespace std;

int main ()
{
    int i,j;
    for (i = 0; i < 6; ++i)
    {
        for (j = 0; j < i; ++j )
        {
            cout << ' ';
        }
        for ( ; j < 6; ++j) // just carry on to increment j
        {
            cout << (j % 2 ? '+' : '*');
        }
        cout << endl;
    }
}