c++ - 了解嵌套 For 循环以打印星号模式
问题描述
有人可以解释这个嵌套的 For 循环如何打印星号模式。我不明白实际循环是如何工作并打印模式的,我知道 cout 打印 astrix('s) 但它怎么知道打印 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;
}
}
解决方案
首先,您接受用户输入的模式大小。现在假设 a 的输入或值为 3。
现在,当第一个循环执行时,它像这样开始 for(cols=1; cols<4; cols++) 现在当执行进入嵌套循环时,循环看起来像这样 for(rows=0; rows<1; rows++)
在嵌套循环中,条件得到满足,因为 0 小于 1,因此它打印第一个星号“*”并且内部循环停止,并且执行进一步移动并且 cout << endl 移动到换行符,即它插入换行符.
对于外循环的第二次迭代,cols 的值变为 2,然后再次进入内循环或嵌套循环。这里的内部循环看起来像这样:- for(rows=0; rows<2; rows++) 现在 0 小于 2,所以循环执行并打印一个星号“*”,内部循环的执行继续,并且再次显示 rows 的值递增到 1。由于 1 也小于 2,所以它再次打印一个星号,内部循环的执行停止,在控制台中留下两个星号,即“**”。
所以你有这样的模式
* **
上面提到的过程继续,它再次打印 3 组星号,就像这样,一旦外循环的条件变为假,它就会继续并终止。
推荐阅读
- angular - 无法从演示组件推送到数组
- speech-recognition - Microsoft 认知服务 SST 支持哪些音频格式?为什么 16 位 PCM x.wav 成功而 32 位 PCM y.wav 不成功?
- javascript - Javascript 可排序数组/对象结构和性能
- c# - 如何将一些算法注入 BizForm 输入/输出?
- python - 使用 conda 在 cron 上运行 python 脚本
- c++ - 包含 netinet/in.h 和 netinet6/in6.h 时重新定义类型
- javascript - Redux connect 将一个不必要的 prop "dispatch" 传递给连接的组件
- python - 如何正确分组列?
- git - 如何仅保留 Git 存储库的最新版本
- terraform - 在 terraform 中运行破坏时处理外部数据源