了解嵌套的循环打印星号图案

时间:2018-10-30 17:13:20

标签: c++ loops for-loop nested

有人可以解释一下此嵌套For Loop如何打印星号图案。我不了解实际的循环是如何工作并打印模式的,我知道cout会打印astrix,但是如何知道先打印1个astrix,然后打印2个,然后打印3个,等等。

#include "pch.h"
#include <iostream>
using namespace std;
int main() {
int a, cols, rows;
cout << " Please enter a number: ";
cin >> a;

for (cols = 1; cols < a + 1; cols++) {
    for (rows = 0; rows < cols; rows++)
        cout << "*";
    cout << endl;
    }
}

3 个答案:

答案 0 :(得分:3)

首先,您要接受用户输入的图案大小。现在假设输入或a的值为3。

现在,当执行第一个循环时,它就这样开始 for(cols = 1; cols <4; cols ++) 现在,当执行转到嵌套循环时,循环看起来像这样 for(行= 0;行<1;行++)

在嵌套循环中,条件得到满足,因为0小于1,所以它打印出第一个星号“ *”,并且内部循环停止,执行进一步,并且cout << endl移至换行符,即插入换行符。

对于外循环的第二次迭代,cols的值变为2,此后再次进入内循环或嵌套循环。这里的内部循环看起来像这样:-for(rows = 0; rows <2; rows ++) 现在0小于2,因此循环执行并打印一个星号“ *”,并且内部循环的执行继续,并且行的值再次增加到1。由于1也小于2,因此它再次打印一个星号,并且内部循环的执行停止,在控制台中留下两个星号,即“ **”。

所以您有这样的模式

*
**

上述过程继续进行,并再次打印3组星号,如此一来,一旦外部循环的条件变为假,它就会继续并终止。

答案 1 :(得分:2)

  

“首先要查看的语句”

您对计算机如何运行这样的程序有一个错误的想法-它不是在“查看”您的代码并弄清楚您想做什么,只是一行一行地进行。

您可以使用调试器逐步观察这种情况。在l=list(range(10)) odds=[] for x in l: if x%2==0: continue else: l.remove(x) odds.append(x) print(l,odds) 行上放置一个断点,并继续前进-您将确切地看到该程序的工作,并且可以随时查看所有变量。 (最好在代码的调试版本中完成此操作。)

答案 2 :(得分:0)

要打印反向三角形,可以使用这种方式

    for (let i = 0; i < num; i++) {
    for (let j = num -1 ; j > i; j--) {
      if(j == num-1 ){
        spacein += ""  
      } else {
        spacein += "  "
      }
    }
    if(i == num-1) {

    } else {
      console.log(space + "*" + spacein + "*")
    }

    space += " "
    spacein = ""
  }