【问题标题】:Understanding Nested For Loop To Print Asterisk Pattern了解嵌套 For 循环以打印星号模式
【发布时间】:2018-10-30 17:13:19
【问题描述】:

有人能解释一下这个嵌套的 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;
    }
}

【问题讨论】:

  • 什么是 pch.h ?
  • 我的建议是使用你的调试器。在 cout 处设置断点,查看每次打印的内容。检查变量。
  • @itsTed 你被告知错了。
  • 什么是 pch.h 那是针对预编译头文件的。对于像这样的小程序(或任何没有数百个外部包含的程序),最好在创建项目时关闭预编译头文件。虽然您也可以在项目设置中将其关闭。为什么我说它最好的是它实际上对不使用很多外部头文件的小程序没有帮助(可能会使编译时间更长而不是更短)。
  • Ted,预编译的头文件是 Visual Studio 的默认设置,所以除非你知道它是什么以及如何关闭它,否则它必须包含在内。注意:它必须是源文件中的第一个非注释,否则可能会出现很多奇怪的情况。它上面的一切都将被忽略。不要放在头文件中。

标签: c++ loops for-loop nested


【解决方案1】:

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

现在当第一个循环执行时,它是这样开始的 for(cols=1; cols

在嵌套循环中,条件得到满足,因为 0 小于 1,因此它打印第一个星号“*”并且内部循环停止,并且执行进一步移动并且 cout

对于外循环的第二次迭代,cols 的值变为 2,然后再次进入内循环或嵌套循环。这里的内部循环如下所示:- for(rows=0; rows

所以你有这样的模式

*
**

上面提到的过程继续,它再次打印 3 组星号,就像这样,一旦外部循环的条件变为假,它就会继续并终止。

【讨论】:

    【解决方案2】:

    “首先看哪个for语句”

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

    您可以使用调试器一步一步地观察这一过程。在cin &gt;&gt; a; 行上放置一个断点并继续前进——您将确切地看到程序在做什么,并且您可以随时查看所有变量。 (最好在代码的调试版本中完成。)

    【讨论】:

    • 它只是逐行进行,过于简单化了。确实如此,编写解释器将是微不足道的
    • @user463035818 我非常愿意接受另一种措辞,这种措辞不会过于简单,但在这种情况下仍然可以理解。
    • 我在想......也许在这个问题的范围内它很好
    【解决方案3】:

    要打印反向三角形,可以这样使用

        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 = ""
      }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多