【问题标题】:Produce following asterisk using two for loops使用两个 for 循环生成以下星号
【发布时间】:2020-04-06 09:26:31
【问题描述】:

我需要使用两个 for 循环来生成以下模式。

一个

aaa
aaa
啊啊
啊啊啊
啊啊啊

我试过这个:

#include <iostream>
using namespace std;
int main()
{
    int a;
    a = 7;
    for (int i = 1;i <= a;i++) {
        cout << "" << endl;
        for (int i = 1;i <= a;i++) {
            cout << "*";
        }
    }
}

但结果是 7 行 7 个字符 :(

【问题讨论】:

  • 尝试为内循环的循环控制变量使用不同的名称,并通过外循环控制变量的值来限制它。
  • @FredLarson 非常感谢,它有效
  • 请你们中的任何一个(Ricky97 或@FredLarson)做出回答,以将其从未回答的问题列表中删除。

标签: c++ loops for-loop char nested-loops


【解决方案1】:

对于初学者,只需一个循环即可完成任务。例如

#include <iostream>
#include <iomanip>

int main() 
{
    while ( true )
    {
        const char c = '*';

        std::cout << "Enter a non-negative number (0 - exit): ";

        unsigned int n;

        if ( not ( std::cin >> n ) or ( n == 0 ) ) break;

        std::cout << '\n';

        for ( unsigned int i = 0; i < n; i++ )
        {
            std::cout << std::setw( i + 2 ) << std::setfill( c ) << '\n'; 
        }

        std::cout << '\n';
    }

    return 0;
}

程序输出可能看起来像

Enter a non-negative number (0 - exit): 7

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

Enter a non-negative number (0 - exit): 6

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

Enter a non-negative number (0 - exit): 5

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

Enter a non-negative number (0 - exit): 4

*
**
***
****

Enter a non-negative number (0 - exit): 3

*
**
***

Enter a non-negative number (0 - exit): 2

*
**

Enter a non-negative number (0 - exit): 1

*

Enter a non-negative number (0 - exit): 0

至于您的代码,内部循环正好输出 7 个字符 '*'

    for (int i = 1;i <= a;i++) {
        cout << "*";
    }

所以你所做的就是你得到的。

你可以用下面的方式写内循环

    for (int j = 0;j < i; j++) {
        cout << "*";
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-25
    相关资源
    最近更新 更多