请在for循环中解释这个c ++ for循环。更新2

时间:2011-12-22 02:12:14

标签: c++ codeblocks

可能是睡眠不足,

我没有得到矩形构造的顺序。先长度然后高度?

如果cin>>指示的唯一*cout<<,为什么要将"*"值用作#include <iostream> using namespace std; void drawRectangle ( int l, int h ) { for ( int line (0); line < h; line++ ) { for ( int column (0); column < l; column++ ) { cout << "*"; } cout<<endl; } } int main() { int length, height; cout << "Length for rectangle : "; cin >> length; cout << "Height for rectangle : "; cin >> height; drawRectangle (length, height); return 0; } 的输出量?

我知道这对很多人来说都是菜鸟,所以请解释一下,就像我5岁一样:D

这段代码再次以英文编辑。感谢您指出该错误,需要更多咖啡:/

#include <iostream>

using namespace std;

void drawRectangle ( int l, int h )

{
for ( int line (0); line < h; line++ ) //this is the outer loop
{
for ( int column (0); column < l; column++ ) //this is the inner loop
{
    cout << "*";
}
cout<<endl; //the length is written then jumps here to break.

/*So, the outer loop writes the length,from left to right, jumps to the cout<<endl; for a line break, then the inner loop writes the height under each "*" that forms the length?/*

更新1:

感谢所有回答的人,即使代码搞砸了。我只想确保理解:

{{1}}

更新2:我的答案就在这里    http://www.java-samples.com/showtutorial.php?tutorialid=326

我猜这个谜就解决了!感谢所有回答我问题的人:)感谢您的帮助!

3 个答案:

答案 0 :(得分:3)

它实际上并没有构造任何东西,因为它不能编译。 :/

drawRectangle更改为以下内容(通过将大括号放在应有的位置)将使其编译并运行(然而,您认为长度和高度是重新开始的 ):

void drawRectangle( int l, int h )
{
     for ( int column (0); column < l; column++ )
     {
         for ( int line (0); line < h; line++ )
         {
            cout << "*";
         }

         cout<<endl;
     }
}

假设l为5,h为4(drawRectangle(5, 4))。外部for循环将迭代5次,创建5行。现在,对于每个行,内部for循环迭代4次,并在每次迭代时打印'*'(因此每行打印****)。内部for循环终止后,将打印一个新行,外部行继续,直到它迭代5次。

你得到:

****
****
****
****
****

答案 1 :(得分:1)

{语法在循环中有点不对。

要回答你的问题,矩形是从第1列开始绘制的数字*,绘制整行,如下所示:

*    *    *
*    *    *
* => * => *
*    *    *
*    *    *

这是一个长度= 3和高度= 5的矩形。

答案 2 :(得分:1)

你有非常混乱的代码。

void drawRectangle(int l, int h)
{
     for ( int column = 0; column < l; column++ )
     {
         for ( int line = 0; line < h; line++ )
         {
             cout << "*";
         }
         cout<<endl;
     }
}

由于控制台输出从左向右,您必须先输出lenth。您可以通过将cout << "*"放入内部循环来完成此操作。外部循环在写入长度后放置换行符。输出看起来像:

****************
****************
****************
****************

长度= 16且高度= 4