0

在理解嵌套 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;
}
4

6 回答 6

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;
}
于 2013-06-13T12:15:05.357 回答
2

您应该将 max 初始化为 0。

int max = 0;

此外还有两个错误。

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

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

于 2013-06-13T12:11:34.733 回答
1

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

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

    cout << endl;     
}
于 2013-06-13T12:16:41.210 回答
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; You cannot add 1 to a non existing value。

于 2013-06-13T12:13:09.210 回答
0

除非您真的想打印 0 01 012 0123 之类的内容,否则这是您要查找的代码:

for (int i = 1; i <= num; i++)
{
  for (int j = 0; j < i; j++)
    cout << i;
  cout << endl;
}
于 2013-06-13T12:18:00.197 回答
0

max 未设置为初始值。

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

于 2013-06-13T12:18:49.613 回答