zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    【PAT甲级】1079 Total Sales of Supply Chain (25 分)
    CQOI2018 Day1 社交网络
    codeforces 707E Garlands (离线、二维树状数组)
    NOI2018 Day1 归程(Kruskal重构树)
    NOI2018 Day2 屠龙勇士(扩展孙子定理+multiset)
    知识点:二叉(重量)平衡树——替罪羊树
    BZOJ3065 带插入区间K小值
    知识点:斜率优化DP
    知识点:FFT详解
    博客园test(搭博客用)
  • 原文地址:https://www.cnblogs.com/jixiaowu/p/3895396.html
Copyright © 2011-2022 走看看