有人可以解释一下此嵌套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;
}
}
答案 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 = ""
}