在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 for循环?,是否存在一个想法(一个实际有效)? 因为我的工作无效,请给我一些建议。
答案 0 :(得分:1)
这就是你想要的
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;
}
}
答案 1 :(得分:1)
这是一个经典的嵌套循环案例,就像你拥有的一样,但有一些小的mod。让我们看一下实际的预期输出:
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的递增数字,因此外部循环控制:
for (int start = 1; start <= 9; start++) ...
在循环中,您从起始编号开始计算,直到满足以下条件之一:
您会注意到第四行符合两个那些终止条件,因此与哪一个导致内循环完成无关。另请注意,您不会为终止条件打印任何内容。
因此内部循环看起来像:
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;
}
答案 2 :(得分:1)
我的五美分。:)
#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