zoukankan      html  css  js  c++  java
  • C语言进阶——循环语句07

    循环语句的基本工作方式:

    • 通过条件表达式判定是否执行循环体
    • 条件表达式遵循if语句表达式的原则

    do,while,for的区别:

    • do语句先执行后判断,循环体至少执行一次
    • while语句先判断后执行,循环体可能不执行
    • for语句先判断后执行,相比while更简洁

    do.....while语句的循环方式:

    do
    {
        //loop
    }
    while(condition)

    while 语句的循环方式:

    while(condition)
    {
        //loop
    }

    for语句的循环方式:

    for(初始化;condition;对条件值的改变)
    {
         //loop  
    }

    程序示例1:

    #include <stdio.h>
    
    int f1(int n)
    {
        int ret = 0;
        
        if( n > 0 )
        {
            do
            {
                ret += n;
                n--;
            }
            while( n > 0 );
        }
        
        return ret;
    }
    
    int f2(int n)
    {
        int ret = 0;
        
        while( n > 0 )
        {
            ret += n;
            n--;
        }
        
        return ret;
    }
    
    int f3(int n)
    {
        int ret = 0;
        int i = 0;
        
        for(i=1; i<=n; i++)
        {
            ret += i;
        }
        
        return ret;
    }
    
    int main()
    {
        printf("%d
    ", f1(100));
        printf("%d
    ", f2(100));
        printf("%d
    ", f3(100));
        
        return 0;
    }

    这段代码很简洁,可以自己稍微看一下,就当作复习

    break 和 continue 的区别:

    • break表示终止整个循环的执行
    • continue表示终止本次循环进入下一次循环

    在循环中可以使用continue 和 break两种语句,联想到switch,里面的每一种case后面都要有一个break语句,那么我们可以在里面使用continue 语句吗?答案是不可以,编译会报错。

    程序示例2:

    #include <stdio.h>
    
    void f1(int n)
    {
        int i = 0;
        
        for(i=1; i<=n; i++)
        {
            if( (i % 2) == 0 )
            {
                break;
            }
            
            printf("%d ", i);
        }
        
        printf("
    ");
    }
    
    void f2(int n)
    {
        int i = 0;
        
        for(i=1; i<=n; i++)
        {
            if( (i % 2) == 0 )
            {
                continue;
            }
            
            printf("%d ", i);
        }
        
        printf("
    ");
    }
    
    int main()
    {
        f1(10);
        f2(10);
        
        return 0;
    }

    这段代码也很简洁,可以看看权当作复习一下

    程序示例3:

     1 #include <stdio.h>
     2 #include <malloc.h>
     3 
     4 int func(int n)
     5 {
     6     int i = 0;
     7     int ret = 0;
     8     int* p = (int*)malloc(sizeof(int) * n);
     9     
    10     do
    11     {
    12         if( NULL == p ) break;
    13         
    14         if( n < 5 ) break;
    15 
    16         if( n > 100) break;
    17         
    18         for(i=0; i<n; i++)
    19         {
    20             p[i] = i;
    21             printf("%d
    ", p[i]);
    22         }
    23         
    24         ret = 1;
    25     }while( 0 );
    26     
    27     printf("free(p)
    ");
    28     
    29     free(p);
    30     
    31     return ret;
    32 }
    33 
    34 int main()
    35 {
    36     if( func(10) )
    37     {
    38         printf("OK
    ");
    39     }
    40     else
    41     {
    42         printf("ERROR
    ");
    43     }
    44 
    45     return 0;
    46 }

    通过29行代码我向扩展一下,可以free一个空指针。另外  野指针 ,空指针是由区别的,对于这个概念我会再写一个博客进行补充,毕竟和这一篇博客的主题不符,嘻嘻。这个段代码是do...while和 break结合起来,在做项目工程中会经常使用这种结构。

    小结:

    • for循环先进行判断后在进入循环体
    • for循环适合于循环次数固定的场合
    • while循环先进行判断在进入循环体执行
    • while循环适用于循环次数不定的场合
    • do....while循环先执行循环体然后进行条件判断
    • do.....while循环至少进行一次循环体
  • 相关阅读:
    【Eclipse】Eclipse常用操作
    编码规范系列(一):Eclipse Code Templates设置
    eclipse code templates 设置(eclipse注释模版配置)
    Eclipse代码注释模板-code template
    善用Eclipse的代码模板功能
    ppt五种经典字体组合
    C++对象模型——指向Member Function的指针 (Pointer-to-Member Functions)(第四章)
    (一二一)核心动画基础
    六:二叉树中第k层节点个数与二叉树叶子节点个数
    gdb 调试利器
  • 原文地址:https://www.cnblogs.com/luojianyi/p/9215784.html
Copyright © 2011-2022 走看看