使用嵌套For循环绘制点

时间:2016-10-10 15:00:47

标签: c++

我对C ++比较陌生,我们已经完成了这项任务:

  

编写一个C ++程序,询问用户1到10之间的数字n。程序应打印出n行。每个应由与当前行号相同数量的星号组成。例如:

Please enter a number:   5

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

我遇到的问题是,当我使用我编写的代码时,它显示错误。

我现在的代码如下所示:

#include<iostream>

using namespace std;

int main() {

    int n;
    cout << "Please enter a number between 1 and 10:" << endl;
    cin >> n;


    for (int x = 0; x <= n; x++)
    {
        for (int y = 0; y <= n; y++) {
            cout << "*" ;
        }
        cout << "*" << endl;
        cin.get();
    }

    return 0;
}

3 个答案:

答案 0 :(得分:2)

使用笔和纸逐步完成程序的逻辑。

对于你的&#34;水平&#34;循环,你每次都一直到n。是对的吗?我认为你的目的只是x,因为这是每行增加的值。

另一个问题是,由于您使用的是<=而不是<,因此您拥有的内容太多了。

答案 1 :(得分:1)

解决方案就像刚刚向你解释的'@Lightness Races in Orbit'一样。让我补充一点,如果要求只打印出你向我们展示的内容,那么就不需要最后的'*'和'cin.get()':

for (int x = 0; x <= n; ++x)
{
    for (int y = 0; y < x; ++y) {
        cout << "*" ;
    }
    // No need for all the rest just print 'new line'
    std::cout << "\n";
}

Try it live!

答案 2 :(得分:0)

不需要嵌套循环。 这个程序也适用于一个for循环。

#include <iostream>
using namespace std;


int main()
{
    int n = 0;
    cout << "Enter a number and press ENTER: ";
    cin >> n;
    for (int i = n; i < 11; ++i) {
        cout << i << " " << endl;
    }


    return 0;
}
相关问题