嵌套循环:数字模式

nested loop: number pattern

本文关键字:模式 数字 嵌套循环      更新时间:2023-10-16

在C++中,我想要一个数字模式:

 1
 2 1
 3 2 1
 4 3 2 1
 5 4 3 2
 6 5 4 3 
 7 6 5 4
 8 7 6 5
 9 8 7 6

对于第 1-4 行,我这样做了:

 for(size_t i = 0; i < m; i++) {
    for(size_t j = 0 ; j  < i+1;  j++) {
        cout<<j;
    }
    cout<<endl;
 }

要完成第 5 - 9 行,我应该用 2 for 循环分隔上面的模式吗?,是否有一个想法(一个实际有效的)?请给我一些建议,因为我的不起作用。

这是一个

经典的嵌套循环案例,就像你一样,但有一些小的模组。让我们看一下实际的预期输出:

1
2 1
3 2 1
4 3 2 1
5 4 3 2
6 5 4 3 
7 6 5 4
8 7 6 5
9 8 7 6

每行的起点是一个递增的数字 1 到 9(包括 1 到 9),因此外部循环控制:

for (int start = 1; start <= 9; start++) ...

在该循环中,从起始数字开始计数,直到满足以下条件之一:

  • 您达到零(第一行到第四行);或
  • 您到达的数字比起始数字少 4(第 4 行到第 9 行)。

您会注意到第四行同时满足这两个终止条件,因此哪一行导致内部循环完成无关紧要。另请注意,您不会为终止条件打印任何内容。

因此,内部循环将如下所示:

for (int num = start; (num > 0) && (num > start - 4); num--) ...

当然,在内部循环中,您需要实际打印出数字。将它们捆绑在一起,您可以通过以下方法实现所需的输出:

#include <iostream>
int main (void) {
    // Lines from 1 to 9 inclusive.
    for (int start = 1; start <= 9; start++) {
        // Output from start to start-3 inclusive,
        //   stopping early if you hit zero.
        for (int num = start; (num > 0) && (num > start - 4); num--) {
            std::cout << num << ' ';
        }
        // Move to next line.
        std::cout << 'n';
    }
    return 0;
}
这就是

你想要的

using namespace std;
int
main()
{
    for(int i = 0; i < 10; i ++){
        int count = 0;
        for(int j = i+1; j >0;j-- ){
            if (count >3) break;
            cout << j <<" ";
            count++;
        }
        cout << endl;
    }
}

我的五美分:)

#include <iostream>
int main() 
{
    const size_t N = 4;
    for ( size_t i = 1; i <= 9; i++ )
    {
        for ( size_t j = 0; j < N && i - j != 0; j++ ) std::cout << i - j << ' ';
        std::cout << std::endl;
    }
    return 0;
}

输出为

1 
2 1 
3 2 1 
4 3 2 1 
5 4 3 2 
6 5 4 3 
7 6 5 4 
8 7 6 5 
9 8 7 6