学习C++ -> 循环语句与循环控制

系统 1684 0

 学习C++ -> 循环语句与循环控制  

    


 一、循环语句      
      当程序中需要不断的重复执行某个动作, 例如: 重复输出1000行"Hello,world!", 如果自己写一千行      cout<<"Hello,world!";        , 就算复制粘贴也得一会时间, 这时循环语句就能派上大用场了。
    
 1. for循环      
     for循环使用的基本形式:  

  for        ( 初始化表达式; 条件表达式; 增量表达式 )

        语句;    
        //        循环体

 


     初始化是一个赋值语句, 它用来给循环控制变量赋初值; 条件表达式是一个关系表达式, 它决定什么时候退出循环; 增量定义循环控制变量每循环一次后循环控制变量按什么方式变化。这三个部分之间用分号(;)分开。
     
     例如:  

  int         i ;    
        for        ( i = 
      0        ; i < 
      10        ; i++       )

        cout        << i <<endl ;

 


     for循环语句首先计算初始化表达式, 即将循环控制变量i赋初始值0; 条件表达式 i < 10 ;表示当i的值小于10的时候执行      cout<< i <<endl ;        语句, 当大于或等于(>=)10的时候就结束循环;      i++        是告诉for循环循环控制变量没循环一个循环控制变量i的值增加1, 然后继续执行循环体中的语句, 直到i的值大于或等于10时结束循环。
    
     注意:      
         1>. 循环体中如果有多条语句需要用大括号{}括起来构成一条符合语句;
         2>. for循环中的初始化表达式、条件表达式和增量表达式可以缺省, 但分号(;)不能缺省, 例如:  

  for         ( ; ; )        
      //        死循环        语句;            

        
        for         ( i = 
      1        ; ; i += 
      2         )    
      //        i每次加2, 循环不停止        语句;            

        
        for         ( j = 
      5        ; ; )    
      //        j为5, 循环不停止        

            语句;

 

         3>. for循环允许多层嵌套, 例如:  

  for        ( ; ; )

        {            
        for        ( ; ; )

            {                
        //        循环体        }
 //其他语句        }      

 

 
        
     实例: 用for循环求1+2+...+100的和  

  #include<iostream>      using        namespace         std ;        int         main()

{    
        int         i ;             
      //        循环控制变量        int         sum = 
      0         ;       
      //        存储求和的结果, 赋初始值为0        for        ( i = 
      1        ; i <= 
      100        ; i++       )

        sum 
        += i ;      
      /*        1+2+...+100        */        

    cout        << sum <<endl ; 
      //        输出求和的结果        return        0         ;

}

 

 



 2. while循环      
     while循环使用的基本形式:  

  while        (判断表达式)

        循环体

 


     当程序执行到while循环时首先计算 判断表达式 , 当判断表达式的值为真(不为0)时便开始执行循环体, 当 判断表达式 的值为假(为0)时跳过循环体继续执行循环体下面的语句。
     例如:  

  int         i = 
      0         ;    
        while        ( i < 
      10         )

    {

        cout        << i <<       endl ;

        i 
        ++       ;

    }

 

 
     首先为循环控制变量i赋初始值为0, 然后程序执行到while时计算 i < 10, 此时 i 的值为0, 所以 i < 10 为真, 程序开始执行循环体中的语句 : 输出目前 i 的值, 然后用 i ++ ; 使i的值增加1, 执行完一次循环后再到 i < 10这里判断值是否为真, 直到 i 的值大于或等于10时结束循环。
     
     和for循环一样, while循环也允许多层嵌套。
     
     实例: 用for循环求1+2+...+100的和  

  #include<iostream>      using        namespace         std ;        int         main()

{    
        int         i = 
      1         ;         
      //        循环控制        int         sum = 
      0         ;       
      //        计算结果        while        ( i <= 
      100         )

    {

        sum 
        +=       i ;

        i 
        ++       ;

    }

    cout        << sum <<       endl ;    
        return        0         ;

}

 

 



 3. do...while循环      
     与while循环不同, while循环是先判断 判断表达式 中的值是否为真再决定是否执行循环体, 而 do...while 循环是先执行一次循环体再判断是否继续执行循环体, 通过一个示例说明:  

  int         i = 
      0         ;         
      //        循环控制        do        

    {

        cout        << i <<      endl ;

    }        while        ( i > 
      0        ) ;    
      //        当i>0时执行循环

 

 
     在这段代码中, 首先为循环控制变量 i 赋初始值0, 然后进入 do...while循环体中, 执行       cout<< i <<endl ;         这句 , 然后再判断i是否大于0, 若i大于0则继续循环, 否则结束循环, 这里的i不大于0, 所以执行了一次循环体后便结束了循环。
     
     也就是说, 无论 是否符合do...while的执行条件, 循环体总要执行一次。
     
     总结一下就是: while循环线判断循环条件再执行循环体, do...while循环先执行一次循环体再判断是否继续执行循环体。
     
     注意: do...while中while后面的分号(;)不可省略。
     
     实例: 用do...while循环求1+2+...+100的和  

  #include<iostream>      using        namespace         std ;        int         main()

{    
        int         i = 
      1         ;         
      //        循环控制        int         sum = 
      0         ;       
      //        计算结果        do        

    {

        sum 
        +=       i ;

        i 
        ++       ;

    }        while        ( i <= 
      100         ) ;

    cout        << sum <<      endl ;    
        return        0         ;

}

 

 



 二、循环控制      
 1. break语句      
     break语句通常用在循环语句或开关语句(switch)中。其作用是从当前循环或当前switch语句中跳出, 从而执行当前语句的下一条语句。
     
     例如在switch语句中:  

  int         i = 
      1         ;    
        switch        ( i )

    {        
        case        0        :

            cout        << 
      "        0        "         <<      endl ;        
        case        1        :

            cout        << 
      "        1        "         <<      endl ;        
        case        2        :

            cout        << 
      "        2        "         <<      endl ;        
        default        :

            cout        << 
      "        Others        "         <<      endl;

    }

 

 
     这里没有使用break语句, 看下输出:  

  1        2        Others

 


     可以看到, 程序从满足的case处将后面的语句全部输出了, 如果我们只想得到一个结果, 而不是将入口后面的case语句全部执行的话就需要case语句了, 可以这样:  

  case        0        :

            cout        << 
      "        0        "         <<endl ; 
      break         ;        
        case        1        :

            cout        << 
      "        1        "         <<endl ; 
      break         ;        
        case        2        :

            cout        << 
      "        2        "         <<endl ; 
      break         ;        
        default        :

            cout        << 
      "        Others        "         <<endl;

 

 
     在每个case语句后加上一个break语句, 当执行到满足条件的case语句后再执行完该case后的语句块便退出switch语句。
     
     再举一个break语句应用于循环语句中的例子, 以while循环为例:  

  int         i = 
      0         ;    
        while        ( 
      true         )

    {

        cout        << i <<      endl ;

        i 
        ++       ;        
        if        ( i > 
      10         )            
        break         ;

    }

 

     这里使用了      while( true )        语句,      true        是C++的关键字之一, 代表真, 也就是说如果没有其他任何语句这就是一个死循环(永远不会停止), 这里我们还定义了一个变量i, 在循环体中使用      cout<< i << ;        输出i的值, i++ ;语句是i自增1, 接下来是if语句, 条件表达式是当 i > 10时执行if语句块中的语句, 也就是说当i自增到大于10时就会执行break语句, 从而跳出while循环, 这样while( true )就不再是死循环了。

     注意:      
         1>. break语句对if-else的条件语句不起作用。
         2>. 在多层循环中,一个break语句只向外跳一层。     


 2. continue语句      
     continue语句的作用是跳过本轮循环中剩余的语句, 而执行下一轮循环。continue语句只用在for、while、do-while等循环体中, 常与if条件语句一起使用, 用来控制循环, 但不能用来控制if语句中的剩余语句。
     
     一个实例: 输出100以内同时能被3整除且能同时被5整除的整数。  

  #include<iostream>      using        namespace         std ;        int         main()

{    
        int         i;    
        for        ( i = 
      0        ; i < 
      100        ; i++       )

    {        
        if        ( i % 
      3         != 
      0         || i % 
      5         != 
      0         )  
      //        当i不符合要求时结束本次循环        continue         ;

        cout        << i <<endl ;   
      //        输出i        }    
        return        0         ;

}

 

 
     程序输出的结果是15, 30, 45, 60, 75, 90。 从if语句中可以看出, 当i不能整除3或5时就continue继续下一个循环, 所以      cout<< i <<endl ;        这句不会被每次都执行, 只有没有被continue时才能执行到该输出语句。  


 3. goto语句      
     当循环嵌套较深且需要全部跳出循环时, 使用goto语句应该说是个不错的选择, 例如:  

  #include<iostream>      using        namespace         std ;        int         main()

{    
        int         i, m, n;    
        for        ( i = 
      0        ; i < 
      100        ; i++       )

    {        
        for        ( m = 
      0        ; m < 
      100        ; m++       )

        {            
        for        ( n = 
      0        ; n < 
      100        ; n++       )

            {                
        if        ( (i + m + n) == 
      256         )

                {

                    cout        <<      "        i = 
        "        << i <<      endl;

                    cout        <<      "        m = 
        "        << m <<      endl;

                    cout        <<      "        n = 
        "        << n <<      endl;                    
        goto         stop ;

                }

            }

        }

    }

    stop: cout        <<      "        Stop        "        <<      endl;    
        return        0         ;

}

 

     这里是使用3个for循环嵌套, 计算3个100以内的数i, m, n相加和为256的情况, 这里我们只取一个结果, 也就是说只要出现第一个符合条件的i, m, n 输出后便退出循环, 如果在if语句中使用break的话只能退出当前if语句所在的循环, 而无法退出更上一层的循环。
     
     使用goto语句在循环外部定义一个表示stop, 需要退出所有循环时直接goto到循环外部, 这样就相当于一次跳出了3个循环。  



更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论