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;
}

 

posted on 2014-08-06 17:47  Ji_xiaowu  阅读(480)  评论(0编辑  收藏  举报

导航