嵌套的“for”循环c ++

时间:2013-06-13 12:08:28

标签: c++ loops initialization

在了解嵌套for循环的工作方式上,我编写了一个程序,它接受输入并显示金字塔,直到输入值如下:

1
22
333
4444

它只显示金字塔的高度,但它没有在第二个for循环中显示书面部分。

这是代码(修改后但尚未要求的结果)

#include <iostream>
using namespace std;

int main(void)
{
    int num;
    cout << "Enter the number of pyramid" << endl ;
    cin >> num ;
    for (int i = 0; i < num ; i++)
    {
        int max;

        for (int j = 0 ; j <= max ; j++)
        {
            cout << j ;
        }

        cout  << endl ;
        max++ ;
    }
    system("PAUSE");
    return 0;
}

6 个答案:

答案 0 :(得分:3)

#include <iostream>
 using namespace std;

 int main(void)
  {
    int num ;
    cout << "Enter the number of pyramid" << endl ;
    cin >> num ;
    for (int i = 0; i < num ; i++)
    {
      int max  = i +1; //change 1

      for (int j = 0 ; j < max ; j++)
      {
        cout << max; //change 2
      }

      cout  << endl ;
      //max++ ; //change 3
    }
    system("PAUSE") ;
    return 0;
}

答案 1 :(得分:2)

您应该将max初始化为0。

int max = 0;

另外还有两个错误。

int max ;
  1. 应该在i的for循环之前声明。 (否则max始终定义为0)

  2. 在内循环打印i中,而不是j。

答案 2 :(得分:1)

首先,请尝试在代码中使用适当的结构:

#include <iostream>
using namespace std;

int main(void)
{
   int num;
   cout << "Enter the number of pyramid" << endl;
   cin >> num;

   for(int i = 0; i < num; i++)
   {
      int max;

      for(int j = 0; j <= max; j++)
      {
         cout << j;
      }

      cout  << endl;
      max++;
   }

   system("PAUSE");
   return 0;
}

你的错误: 将int max;更改为int max = 0; 您不能将1添加到不存在的值。

答案 3 :(得分:1)

正如其他答案中所述,您的最大计数器未初始化。此外,您并不真正需要它,因为您已经i执行相同的任务:

for (int i = 1; i <= num; i++)
{
    for (int j = 0; j < i; j++)
    {
        cout << i;
    }

    cout << endl;     
}

答案 4 :(得分:0)

除非你真的想打印像0 01 012 0123这样的东西,否则这就是你要找的代码:

for (int i = 1; i <= num; i++)
{
  for (int j = 0; j < i; j++)
    cout << i;
  cout << endl;
}

答案 5 :(得分:0)

max未设置为初始值。

它声明了第一个循环,然后在第二个循环中使用。