27.数列1,2,2,3,3,3,4,4,4,4,5,……
#include<iostream> using namespace std; int main() { for(int i=1;i<=10;i++) { for(int j=1;j<=i;j++) { cout<<i<<" "; } cout<<endl; } return 0; }
引申:数列1,2,2,3,3,3,4,4,4,4,5,……第100个是多少?
可以学习到如何从嵌套for循环中跳出
(1)在外层for循环中添加一个判断条件,用于循环跳出
#include<iostream> using namespace std; int main() { int m=1; int a=100; for(int i=1;i<=100;i++) { for(int j=1;j<=i;j++) { cout<<i<<" "; m++; if(m>=100) { cout<<endl; cout<<"第100个数是: "<<i<<endl; break; } } if(a==m)//从嵌套for循环中跳出:在外层for中添加一个判断条件 { break; } cout<<endl; } return 0; }
(2)运用goto语句:不是很建议使用goto语句,因为会破坏程序的整体性
#include<iostream> using namespace std; int main() { int m=1; int a=100; for(int i=1;i<=100;i++) { for(int j=1;j<=i;j++) { cout<<i<<" "; m++; if(m>=100) { cout<<endl; cout<<"第100个数是: "<<i<<endl; goto next; } } cout<<endl; } next: return 0; }
(3)设置超出边界条件,导致循环结束
#include<iostream> using namespace std; int main() { int m=1; int a=100; for(int i=1;i<=a;i++) { for(int j=1;j<=i;j++) { if(i<100) { cout<<i<<" "; } m++; if(m>=100) { cout<<endl; if(i<100) { cout<<"第100个数是: "<<i<<endl; } j=i+1;//设置超出边界条件,导致循环结束 i=a+1;//设置超出边界条件,导致循环结束 } } cout<<endl; } return 0; }
(4)如果这段循环代码用的比较多,可以考虑把这段代码做成函数,在需要跳出多重循环的地方直接使用return
#include<iostream> using namespace std; int ShuChu(int ); int main() { int n; cout<<"please input an number: "<<endl; cin>>n; ShuChu(n); return 0; } int ShuChu(int index) { int m=1; for(int i=1;i<=index;i++) { for(int j=1;j<=i;j++) { if(i<index) { cout<<i<<" "; } m++; if(m>=100) { cout<<endl; if(i<100) { cout<<"第100个数是: "<<i<<endl; } return m;//设计成函数,在需要跳出多重循环的地方直接用return } } cout<<endl; } }
(5)设计成异常处理
#include<iostream> using namespace std; int main() { int m=1; int a=100; try//设计成异常处理, { for(int i=1;i<=100;i++) { for(int j=1;j<=i;j++) { cout<<i<<" "; m++; if(m>=100) { cout<<endl; cout<<"第100个数是: "<<i<<endl; throw 0;//抛出异常,从而跳出嵌套循环 } } cout<<endl; } }catch (int){} return 0; }